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?"))