Az örnek set kullanımı
Örnek Seti Oluşturma
Aşağıda bir dizi Q&A örneği içeren bir examples
array tanımlayın.
from langchain.prompts.few_shot import FewShotPromptTemplate
from langchain.prompts.prompt import PromptTemplate
examples = [
{
"question": "Muhammad Ali'nin ömrü mü uzun, yoksa Alan Turing'in mi?",
"answer":
"""
Sorunun takip edilmesi gerekiyor mu: Evet.
Takip: Muhammad Ali ne zaman öldü?
Ara cevap: Muhammad Ali 74 yaşındayken öldü.
Takip: Alan Turing ne zaman öldü?
Ara cevap: Alan Turing 41 yaşındayken öldü.
Bu nedenle nihai cevap: Muhammad Ali
"""
},
{
"question": "craigslist'in kurucusu ne zaman doğdu?",
"answer":
"""
Sorunun takip edilmesi gerekiyor mu: Evet.
Takip: craigslist'in kurucusu kim?
Ara cevap: craigslist'i Craig Newmark kurdu.
Takip: Craig Newmark ne zaman doğdu?
Ara cevap: Craig Newmark 6 Aralık 1952'de doğdu.
Bu nedenle nihai cevap: 6 Aralık 1952
"""
},
{
"question": "George Washington'ın büyük büyük anne ve babasının annesi kimdi?",
"answer":
"""
Sorunun takip edilmesi gerekiyor mu: Evet.
Takip: George Washington'ın annesi kimdir?
Ara cevap: George Washington'ın annesi Mary Ball Washington'dur.
Takip: Mary Ball Washington'ın babası kimdir?
Ara cevap: Mary Ball Washington'ın babası Joseph Ball'dur.
Bu nedenle nihai cevap: Joseph Ball
"""
},
{
"question": "'Jaws' ve 'Casino Royale' filmlerinin yönetmenleri aynı ülkeden mi geliyor?",
"answer":
"""
Sorunun takip edilmesi gerekiyor mu: Evet.
Takip: 'Jaws' filminin yönetmeni kimdir?
Ara cevap: 'Jaws' filminin yönetmeni Steven Spielberg'dür.
Takip: Steven Spielberg nereden geliyor?
Ara cevap: Amerika Birleşik Devletleri.
Takip: 'Casino Royale' filminin yönetmeni kimdir?
Ara cevap: 'Casino Royale' filminin yönetmeni Martin Campbell'dır.
Takip: Martin Campbell nereden geliyor?
Ara cevap: Yeni Zelanda.
Bu nedenle nihai cevap: Hayır
"""
}
]
Küçük Örnekler İçin Biçimleyici Oluşturma
Örnekleri basitçe PromptTemplate
nesnesini kullanarak prompt şablonuna ekleyin.
example_prompt = PromptTemplate(input_variables=["question", "answer"], template="Soru: {question}\\n{answer}")
print(example_prompt.format(**examples[0]))
Çıktı:
Soru: Muhammad Ali'nin ömrü mü uzun, yoksa Alan Turing'in mi?
Sorunun takip edilmesi gerekiyor mu: Evet.
Takip: Muhammad Ali ne zaman öldü?
Ara cevap: Muhammad Ali 74 yaşındayken öldü.
Takip: Alan Turing ne zaman öldü?
Ara cevap: Alan Turing 41 yaşındayken öldü.
Bu nedenle nihai cevap: Muhammad Ali
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
example_selector = SemanticSimilarityExampleSelector.from_examples(
examples,
OpenAIEmbeddings(),
Chroma,
k=1
)
question = "Who is the father of George Washington?"
selected_examples = example_selector.select_examples({"question": question})
print(f"En benzer örnek: {question}")
for example in selected_examples:
print("\\n")
for k, v in example.items():
print(f"{k}: {v}")
Yukarıdaki örnekte, soruya benzer örnekler eşleştirildi ve aşağıdakiler geri döndürüldü:
Chroma doğrudan yerel API'yi kullanarak çalışıyor.
DuckDB bellek içindeki veritabanını kullanma. Veri geçicidir.
En benzer örnek: George Washington'ın büyükbabasının annesi kimdir?
question: George Washington'ın annesi kimdir?
answer:
Bu soruyu takip etmemiz gerekiyor mu: Evet.
Takip: George Washington'ın annesi kim?
Aradaki cevap: George Washington'ın annesi Mary Ball Washington'dır.
Takip: Mary Ball Washington'ın babası kim?
Aradaki cevap: Mary Ball Washington'ın babası Joseph Ball'dır.
Dolayısıyla final cevabı: Joseph Ball
prompt = FewShotPromptTemplate(
example_selector=örnek_seçici,
example_prompt=örnek_istek,
suffix="Soru: {input}",
input_variables=["input"]
)
print(prompt.format(input="George Washington'ın babası kimdir?"))