फ्यू-शॉट प्रॉम्प्ट टेम्पलेट

प्रॉम्प्ट्स में इंटरैक्टिव नमूने शामिल करना, मॉडल को प्रयोक्ता के उद्देश्य को बेहतर समझने और बेहतर उत्तर देने या कार्यों को पूरा करने में मदद करता है। फ्यू-शॉट प्रॉम्प्ट टेम्पलेट्स का मतलब है कि नई इनपुट को संभालने के लिए मॉडल को इन उदाहरणों से निर्देशित करने के लिए एक छोटे से सेट का उपयोग करना। इन उदाहरणों का उपयोग करके मॉडल को ट्रेन कर सकते हैं ताकि वह समान प्रश्नों को बेहतर समझ सके और जवाब दे सके।

उदाहरण:

Q: बैटमैन कौन है?
A: बैटमैन एक काल्पनिक कॉमिक किरदार है।

Q: टॉर्सल्प्लेक्सिटी क्या है?
A: अज्ञात।

Q: भाषा मॉडल क्या है?
A:

मॉडल को बताएं कि Q सवाल है और A जवाब है, और इस प्रारूप में इंटरैक्ट करें।

निम्नलिखित है Lanchain द्वारा प्रदान की गई टूल क्लास की व्याख्या संबंधित सैम्पल के छोटे सेट को प्रॉम्पट में डालने के लिए।

उदाहरण सेट का उपयोग

सैंपल सेट बनाना

नीचे एक उदाहरण एरे निर्धारित करें, जिसमें Q&A उदाहरणों का सेट हो।

from langchain.prompts.few_shot import FewShotPromptTemplate
from langchain.prompts.prompt import PromptTemplate

उदाहरण = [
  {
    "प्रश्न": "मोहम्मद अली और एलन ट्यूरिंग में किसका आयु स्थायी है?",
    "जवाब":
"""
क्या हमें सवाल पर अनुसरण करना चाहिए: हां।
फॉलो-अप: मोहम्मद अली की मौत कब हुई थी?
इंटरमीडिएट जवाब: मोहम्मद अली की मौत हो गई थी 74 साल की उम्र में।
फॉलो-अप: एलन ट्यूरिंग का उम्र क्या था जब उनकी मौत हो गई थी?
इंटरमीडिएट जवाब: एलन ट्यूरिंग 41 साल के थे जब उनकी मौत हुई थी।
इसलिए आखिरी जवाब है: मोहम्मद अली
"""
  },
  {
    "प्रश्न": "क्रेग्सलिस्ट के संस्थापक कब पैदा हुए थे?",
    "जवाब":
"""
क्या हमें सवाल पर अनुसरण करना चाहिए: हां।
फॉलो-अप: क्रेग्सलिस्ट के संस्थापक कौन हैं?
इंटरमीडिएट जवाब: क्रेग्सलिस्ट का संस्थापक क्रैग न्यूमार्क थे।
फॉलो-अप: क्रैग न्यूमार्क कब पैदा हुए थे?
इंटरमीडिएट जवाब: क्रैग न्यूमार्क 6 दिसंबर, 1952 को पैदा हुए थे।
इसलिए आखिरी जवाब है: 6 दिसंबर, 1952
"""
  },
  {
    "प्रश्न": "जॉर्ज वाशिंगटन के दादाजी और दादी की मां कौन थीं?",
    "जवाब":
"""
क्या हमें सवाल पर अनुसरण करना चाहिए: हां।
फॉलो-अप: जॉर्ज वाशिंगटन की मां कौन थी?
इंटरमीडिएट जवाब: जॉर्ज वाशिंगटन की मां मेरी बॉल वाशिंगटन थी।
फॉलो-अप: मेरी बॉल वाशिंगटन के पिता कौन थे?
इंटरमीडिएट जवाब: मेरी बॉल वाशिंगटन के पिता जोसेफ बॉल थे।
इसलिए आखिरी जवाब है: जोसेफ बॉल
"""
  },
  {
    "प्रश्न": "'जॉज' और 'कैसिनो रॉयल' के निर्देशक किसी एक देश से हैं?",
    "जवाब":
"""
क्या हमें सवाल पर अनुसरण करना चाहिए: हां।
फॉलो-अप: 'जॉज' के निर्देशक कौन हैं?
इंटरमीडिएट जवाब: 'जॉज' के निर्देशक स्टीवन स्पीलबर्ग थे।
फॉलो-अप: स्टीवन स्पीलबर्ग कहां से हैं?
इंटरमीडिएट जवाब: संयुक्त राज्य अमेरिका।
फॉलो-अप: 'कैसिनो रॉयल' के निर्देशक कौन हैं?
इंटरमीडिएट जवाब: 'कैसिनो रॉयल' के निर्देशक मार्टिन कैम्बेल थे।
फॉलो-अप: मार्टिन कैम्बेल कहां से हैं?
इंटरमीडिएट जवाब: न्यूजीलैंड।
इसलिए आखिरी जवाब है: नहीं
"""
  }
]

छोटे सैंपल उदाहरणों के लिए लेखक बनाना

बस PromptTemplate ऑब्जेक्ट का उपयोग करके प्रॉम्प्ट टेम्पलेट में उदाहरणों को सरलता से डालें।

उदाहरण_प्रॉम्प्ट = PromptTemplate(input_variables=["प्रश्न", "जवाब"], template="प्रश्न: {प्रश्न}\\n{जवाब}")

print(उदाहरण_प्रॉम्प्ट.format(**उदाहरण[0]))

आउटपुट:

प्रश्न: मोहम्मद अली और एलन ट्यूरिंग में किसका आयु स्थायी है?

क्या हमें सवाल पर अनुसरण करना चाहिए: हां।
फॉलो-अप: मोहम्मद अली की मौत कब हुई थी?
इंटरमीडिएट जवाब: मोहम्मद अली की मौत हो गई थी 74 साल की उम्र में।
फॉलो-अप: एलन ट्यूरिंग का उम्र क्या था जब उनकी मौत हो गई थी?
इंटरमीडिएट जवाब: एलन ट्यूरिंग 41 साल के थे जब उनकी मौत हुई थी।
इसलिए आखिरी जवाब है: मोहम्मद अली
# फ्यूशॉटप्रॉम्प्टटेम्प्लेट के लिए सैंपल्स और फ़ॉर्मैटिंग प्रदान करना

# `FewShotPromptTemplate` ऑब्जेक्ट के साथ, आप सैंपल सामग्री को बल्क में इन्सर्ट कर सकते हैं।

```python
prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    suffix="सवाल: {input}",
    input_variables=["input"]
)

print(prompt.format(input="जॉर्ज वाशिंगटन के पिता कौन हैं?"))

रिटर्न:

सवाल: किसकी आयु लंबी है, मुहम्मद अली या एलन ट्यूरिंग?

क्या हमें इस सवाल का फॉलो अप करना चाहिए: हाँ।
फॉलो अप: मुहम्मद अली की मौत की उम्र क्या थी?
बीच का उत्तर: मुहम्मद अली की मौत हो तो 74 साल की थी।
फॉलो अप: एलन ट्यूरिंग की मौत की उम्र क्या थी?
बीच का उत्तर: एलन ट्यूरिंग की मौत हो तो 41 साल की थी।
इसलिए, अंतिम उत्तर है: मुहम्मद अली

सवाल: क्रेग्सलिस्ट के संस्थापक कब पैदा हुए थे?

क्या हमें इस सवाल का फॉलो अप करना चाहिए: हाँ।
फॉलो अप: क्रेग्सलिस्ट के संस्थापक कौन हैं?
बीच का उत्तर: क्रेग्सलिस्ट को क्रेग न्यूअर्क ने स्थापित किया था।
फॉलो अप: क्रेग न्यूअर्क कब पैदा हुए थे?
बीच का उत्तर: क्रेग न्यूअर्क 6 दिसम्बर, 1952 को पैदा हुए थे।
इसलिए, अंतिम उत्तर है: 6 दिसम्बर, 1952

सवाल: जॉर्ज वाशिंगटन के दादाजी की माँ कौन है?

क्या हमें इस सवाल का फॉलो अप करना चाहिए: हाँ।
फॉलो अप: जॉर्ज वाशिंगटन की माँ कौन है?
बीच का उत्तर: जॉर्ज वाशिंगटन की माँ मेरी बाल वाशिंगटन है।
फॉलो अप: मेरी बाल वाशिंगटन के पिता कौन है?
बीच का उत्तर: मेरी बाल वाशिंगटन के पिता जोसेफ बॉल है।
इसलिए, अंतिम उत्तर है: जोसेफ बॉल

सवाल: "जॉज" और "कैसीनो रॉयल" के निदेशक कौन हैं?

क्या हमें इस सवाल का फॉलो अप करना चाहिए: हाँ।
फॉलो अप: "जॉज" के निदेशक कौन हैं?
बीच का उत्तर: "जॉज" के निदेशक स्टीवन स्पीलबर्ग हैं।
फॉलो अप: स्टीवन स्पीलबर्ग कहां से हैं?
बीच का उत्तर: संयुक्त राज्य।
फॉलो अप: "कैसीनो रॉयल" के निदेशक कौन हैं?
बीच का उत्तर: "कैसीनो रॉयल" के निदेशक मार्टिन कैंपबेल हैं।
फॉलो अप: मार्टिन कैंपबेल कहां से हैं?
बीच का उत्तर: न्यूजीलैंड।
इसलिए अंतिम उत्तर है: नहीं

सवाल: जॉर्ज वाशिंगटन के पिता कौन हैं?

सैंपल सेलेक्टर्स का प्रयोग करना

ExampleSelector कोई उदाहरण प्रदान करें

यहाँ हम पिछले खंड से उदाहरण सेट और प्रॉप्ट टेम्पलेट को पुन: प्रयोग करेंगे। हालांकि, FewShotPromptTemplate ऑब्जेक्ट को सीधे उदाहरणों को प्रदान और प्रॉम्प्ट में सभी उदाहरणों को इन्सर्ट करने की बजाय, हम उन्हें ExampleSelector ऑब्जेक्ट को प्रदान करेंगे ताकि वहाँ केवल उदाहरणों का एक हिस्सा इन्सर्ट कर सके।

यहाँ हम SemanticSimilarityExampleSelector क्लास का उपयोग करेंगे। इस क्लास से चयनित छोटे संग्रहीत उदाहरण प्रदर्शित किए जाते हैं जो प्रश्न के समानता के आधार पर चुने जाते हैं। यह एक एम्बेडिंग मॉडल का उपयोग करता है जो प्रश्न और छोटे संग्रहीत उदाहरणों के बीच समानता की गणना करने के लिए और फिर समानता खोज करता है और प्रश्न के समान उदाहरण लाता है।

  • ध्यान दें: इसमें भेक्टर गणना और भेक्टर डेटाबेस शामिल हैं, जो मुख्य रूप से डेटा समानता खोज के लिए एआई फील्ड में प्रयोग किए जाते हैं, जैसे कि समान लेख सामग्री, समान छवियां, वीडियो आदि। अब तक के आपका सरल जानकारी हो गया है।
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 = "जॉर्ज वाशिंगटन के पिता कौन हैं?"
selected_examples = example_selector.select_examples({"question": question})
print(f"सबसे समान उदाहरण: {question}")
for example in selected_examples:
    print("\\n")
    for k, v in example.items():
        print(f"{k}: {v}")

यहां, सवाल के समान उदाहरण मिलतें हैं, और निम्नलिखित लौटाया गया है:

Chroma को सीधे स्थानीय API का उपयोग करते समय रन किया जा रहा है।
    DuckDB मेमोरी में डेटाबेस का उपयोग हो रहा है। डेटा अस्थायी होगा।
    सबसे समान उदाहरण: जॉर्ज वाशिंगटन के दादाजी की माँ कौन है?

    question: जॉर्ज वाशिंगटन की माँ कौन है?
    answer: 
    क्या हमें इस सवाल का फॉलो अप करना चाहिए: हाँ।
    फॉलो अप: जॉर्ज वाशिंगटन की माँ कौन है?
    बीच का उत्तर: जॉर्ज वाशिंगटन की माँ मेरी बॉल वाशिंगटन है।
    फॉलो अप: मेरी बॉल वाशिंगटन के पिता कौन है?
    बीच का उत्तर: मेरी बॉल वाशिंगटन के पिता जोसेफ बॉल है।
    इसलिए, अंतिम उत्तर है: जोसेफ बॉल
अंत में, एक `FewShotPromptTemplate` ऑब्जेक्ट बनाएं। पिछले उदाहरण से example_selector चयन करके, सवाल के समान एक उदाहरण को चुनें।

```python
prompt = FewShotPromptTemplate(
    example_selector=example_selector,
    example_prompt=example_prompt,
    suffix="सवाल: {input}",
    input_variables=["input"]
)

print(prompt.format(input="जॉर्ज वाशिंगटन के पिता कौन थे?"))

Output:

सवाल: जॉर्ज वाशिंगटन के दादा-दादी का माँ कौन था?

क्या हमें इस सवाल के साथ आगे का आवश्यकता है: हां।
आगे का सवाल: जॉर्ज वाशिंगटन की माँ कौन हैं?
इशारा जवाब: जॉर्ज वाशिंगटन की माँ मेरी बॉल वाशिंगटन है।
आगे का सवाल: मेरी बॉल वाशिंगटन के पिता कौन हैं?
इशारा जवाब: मेरी बॉल वाशिंगटन के पिता जोसेफ बॉल हैं।
तो अंतिम जवाब है: जोसेफ बॉल

सवाल: जॉर्ज वाशिंगटन के पिता कौन थे?