Prompt Şablonları

Dil modelleri, genellikle "prompt" olarak adlandırılan metni girdi olarak alır. Geliştirme sırasında, promptlar doğrudan kodlanmaz, çünkü bu prompt yönetimine uygun değildir. Bunun yerine, promptların korunması için e-posta veya SMS içeriği için kullanılan şablonlara benzer şekilde prompt şablonları kullanılır.

Prompt şablonu nedir?

Bir prompt şablonu, genellikle kullanılan e-posta veya SMS şablonlarından farklı değildir. Belirli bir dizi şablon parametresini içerebilen bir dize şablonudur. Şablon parametrelerinin değerleri, şablon içindeki karşılık gelen parametreleri değiştirmek için kullanılabilir.

Bir prompt şablonu aşağıdaki içeriği içerebilir:

  • Büyük dil modeline gönderilen talimatlar.
  • Dönüş istekleri için beklenen biçim konusunda yapay zekaya hatırlatma amacıyla kullanılan bir dizi soru ve cevap örneği.
  • Dil modeline gönderilen sorular.

Prompt şablonu oluşturma

Basit bir prompt oluşturmak için PromptTemplate sınıfını kullanabilirsiniz. Prompt şablonları, herhangi bir sayıda şablon parametresini içerebilir ve ardından parametre değerlerini kullanarak şablon içeriğini biçimlendirebilir.

from langchain.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "Bana {sifat} bir şaka anlat: {konu}."
)

prompt_template.format(sifat="komik", konu="tavuklar")

Şablon çıktı sonucu:

'Bana komik bir şaka anlat: tavuklar.'

Sohbet mesajı prompt şablonları

Sohbet modelleri, sohbet mesajlarının içeriği de prompt şablonları kullanılarak yönetilebilir. Bu sohbet mesajları, her bir mesajın bir "rol" ile ilişkilendirildiği için ham dize verilerinden farklıdır.

Örneğin, OpenAI'in Chat Completion API’sında, OpenAI'in sohbet modeli farklı sohbet mesajları için üç farklı rol tanımlar: asistan, insan veya sistem rolleri:

  • Asistan mesajları, yapay zekanın yanıtlarını ifade eder.
  • İnsan mesajları, kullanıcının yapay zekaya gönderdiği mesajları ifade eder.
  • Sistem mesajları, genellikle yapay zekanın kimliğini tanımlamak için kullanılır.

Sohbet mesajı şablonu oluşturma örneği:

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("sistem", "Sen yardımsever bir yapay zekasın. Senin adın {isim}."),
        ("insan", "Merhaba, nasılsın?"),
        ("yapayzekâ", "Ben iyiyim, teşekkürler!"),
        ("insan", "{kullanıcı_girişi}"),
    ]
)

mesajlar = chat_template.format_messages(isim="Bob", kullanıcı_girişi="Adın ne?")

Mesaj biçimlendirme diğer örnek:

from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI

chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "Kullanıcının metnini daha neşeli bir şekilde yeniden yazan yardımsever bir asistanssın."
            )
        ),
        HumanMessagePromptTemplate.from_template("{metin}"),
    ]
)

mesajlar = chat_template.format_messages(metin="Lezzetli şeyler yemeyi sevmiyorum.")
print(messages)

Genellikle, prompt şablonu içeriğini doğrudan format_messages fonksiyonunu kullanarak biçimlendirmeyiz, bunun yerine Langchain framework'ünü bunu otomatik olarak ele almasını sağlarız.