प्रॉम्प्ट इंजीनियरिंग
शून्य से उन्नत प्रॉम्प्ट इंजीनियरिंग के साथ पाइथन में लैंगचेन

बड़े भाषा मॉडल (LLM) का एक महत्वपूर्ण पहलू यह है कि इन मॉडलों में सीखने के लिए उपयोग किए जाने वाले पैरामीटर की संख्या। मॉडल में जितने अधिक पैरामीटर होते हैं, उतनी ही बेहतर यह शब्दों और वाक्यांशों के बीच संबंध को समझने में सक्षम होता है। इसका अर्थ है कि अरबों पैरामीटर वाले मॉडल विभिन्न रचनात्मक पाठ प्रारूप उत्पन्न करने और खुले और चुनौतीपूर्ण प्रश्नों का उत्तर देने में सक्षम होते हैं।
LLM जैसे कि ChatGPT, जो ट्रांसफॉर्मर मॉडल का उपयोग करते हैं, मानव भाषा को समझने और उत्पन्न करने में कुशल होते हैं, जो उन्हें प्राकृतिक भाषा समझने वाले अनुप्रयोगों के लिए उपयोगी बनाते हैं। हालांकि, उनकी अपनी सीमाएं हैं, जिनमें पुराना ज्ञान, बाहरी प्रणालियों के साथ बातचीत करने में असमर्थता, संदर्भ समझने की कमी, और कभी-कभी विश्वसनीय लेकिन गलत या असंगत प्रतिक्रियाएं उत्पन्न करना शामिल है।
इन सीमाओं को दूर करने के लिए LLM को बाहरी डेटा स्रोतों और क्षमताओं के साथ एकीकृत करना आवश्यक है, जो जटिलताएं प्रस्तुत कर सकता है और व्यापक कोडिंग और डेटा हैंडलिंग कौशल की मांग कर सकता है। यह, एआई अवधारणाओं और जटिल एल्गोरिदम को समझने की चुनौतियों के साथ मिलकर, LLM का उपयोग करके अनुप्रयोगों को विकसित करने से जुड़ी सीखने की अवस्था में योगदान करता है।
फिर भी, LLM को अन्य उपकरणों के साथ एकीकृत करके LLM-संचालित अनुप्रयोग बनाने की संभावना हमारे डिजिटल परिदृश्य को फिर से परिभाषित कर सकती है। ऐसे अनुप्रयोगों की संभावनाएं व्यापक हैं, जिनमें दक्षता और उत्पादकता में सुधार, कार्यों को सरल बनाना, निर्णय लेने में सुधार, और व्यक्तिगत अनुभव प्रदान करना शामिल है।
इस लेख में, हम लैंगचेन के साथ प्रॉम्प्ट इंजीनियरिंग की उन्नत तकनीकों में गहराई से जाएंगे, स्पष्ट व्याख्याएं, व्यावहारिक उदाहरण, और चरण-दर-चरण निर्देश प्रदान करेंगे कि उन्हें कैसे लागू किया जाए।
लैंगचेन, एक अत्याधुनिक पुस्तकालय, प्रॉम्प्ट को डिज़ाइन करने, लागू करने और ट्यून करने में सुविधा और लचीलापन प्रदान करता है। जैसा कि हम प्रॉम्प्ट इंजीनियरिंग के सिद्धांतों और अभ्यासों को अनपैक करते हैं, आप लैंगचेन की शक्तिशाली विशेषताओं का लाभ उठाने के लिए सीखेंगे ताकि GPT-4 जैसे SOTA जेनरेटिव एआई मॉडल की ताकत का लाभ उठाया जा सके।
प्रॉम्प्ट को समझना
प्रॉम्प्ट इंजीनियरिंग की तकनीकी बारीकियों में गहराई से जाने से पहले, प्रॉम्प्ट की अवधारणा और इसके महत्व को समझना आवश्यक है।
एक ‘प्रॉम्प्ट‘ एक टोकन की एक श्रृंखला है जो एक भाषा मॉडल के लिए इनपुट के रूप में उपयोग की जाती है, जो इसे एक विशिष्ट प्रकार की प्रतिक्रिया उत्पन्न करने के लिए निर्देशित करती है। प्रॉम्प्ट एक मॉडल के व्यवहार को निर्देशित करने में एक महत्वपूर्ण भूमिका निभाते हैं। वे उत्पन्न पाठ की गुणवत्ता को प्रभावित कर सकते हैं, और जब सही ढंग से तैयार किए जाते हैं, तो वे मॉडल को अधिक सटीक और संदर्भ-विशिष्ट परिणाम प्रदान करने में मदद कर सकते हैं।
प्रॉम्प्ट इंजीनियरिंग प्रॉम्प्ट को डिज़ाइन करने की कला और विज्ञान है। लक्ष्य एक भाषा मॉडल से वांछित आउटपुट प्राप्त करना है। प्रॉम्प्ट को सावधानी से चुनने और संरचित करने से मॉडल को अधिक सटीक और प्रासंगिक प्रतिक्रियाएं उत्पन्न करने के लिए मार्गदर्शन किया जा सकता है। अभ्यास में, यह मॉडल के प्रशिक्षण और संरचनात्मक पूर्वाग्रहों के अनुरूप इनपुट वाक्यांशों को बारीक करने का मामला है।
प्रॉम्प्ट इंजीनियरिंग की जटिलता सरल तकनीकों से लेकर जटिल, संरचित प्रॉम्प्ट के डिज़ाइन तक होती है जो मॉडल की आंतरिक यांत्रिकी का लाभ उठाते हैं।
लैंगचेन: प्रॉम्प्ट टूल का सबसे तेजी से बढ़ता हुआ
लैंगचेन, जिसे अक्टूबर 2022 में हैरिसन चेस द्वारा लॉन्च किया गया था, 2023 में गिटहब पर सबसे अधिक रेटेड ओपन-सोर्स फ्रेमवर्क में से एक बन गया है। यह बड़े भाषा मॉडल (LLM) को अनुप्रयोगों में एकीकृत करने के लिए एक सरलीकृत और मानकीकृत इंटरफ़ेस प्रदान करता है। यह प्रॉम्प्ट इंजीनियरिंग के लिए एक सुविधा से भरपूर इंटरफ़ेस भी प्रदान करता है, जिससे डेवलपर्स विभिन्न रणनीतियों के साथ प्रयोग कर सकते हैं और उनके परिणामों का मूल्यांकन कर सकते हैं। लैंगचेन का उपयोग करके, आप प्रॉम्प्ट इंजीनियरिंग कार्यों को अधिक प्रभावी और直观 रूप से प्रदर्शन कर सकते हैं।
लैंगफ्लो लैंगचेन घटकों को एक कार्यान्वित करने योग्य फ्लोचार्ट में समन्वयित करने के लिए एक उपयोगकर्ता इंटरफ़ेस के रूप में कार्य करता है, जिससे त्वरित प्रोटोटाइप और प्रयोग संभव हो जाता है।

लैंगचेन विकास के लिए एक महत्वपूर्ण अंतर को भरता है। यह वर्चुअल सहायक, सामग्री जनरेटर, प्रश्न-उत्तर प्रणाली, और अधिक जैसे विभिन्न प्रकार के NLP अनुप्रयोगों को वास्तविक दुनिया की समस्याओं का समाधान करने में सक्षम बनाता है।
लैंगचेन एक स्टैंडअलोन मॉडल या प्रदाता नहीं है, बल्कि यह विभिन्न मॉडलों के साथ बातचीत को सरल बनाता है, जिससे LLM अनुप्रयोगों की क्षमताओं को एक सरल API कॉल की सीमाओं से परे बढ़ाया जा सकता है।
लैंगचेन का आर्किटेक्चर
लैंगचेन के मुख्य घटक मॉडल I/O, प्रॉम्प्ट टेम्पलेट, मेमोरी, एजेंट, और चेन हैं।
मॉडल I/O
लैंगचेन विभिन्न भाषा मॉडलों के साथ एक सुविधाजनक कनेक्शन प्रदान करता है जो मॉडल I/O नामक एक मानकीकृत इंटरफ़ेस के साथ लपेटे जाते हैं। यह मॉडल को स्विच करने की सुविधा प्रदान करता है जो अनुकूलन या बेहतर प्रदर्शन के लिए आवश्यक हो सकता है। लैंगचेन विभिन्न भाषा मॉडल प्रदाताओं का समर्थन करता है, जिनमें ओपनएआई, हगिंग फेस, एज़्योर, फायरवर्क्स, और अधिक शामिल हैं।
प्रॉम्प्ट टेम्पलेट
वे LLM के साथ बातचीत को प्रबंधित और अनुकूलित करने के लिए उपयोग किए जाते हैं और संक्षिप्त निर्देश या उदाहरण प्रदान करते हैं। प्रॉम्प्ट को अनुकूलित करने से मॉडल के प्रदर्शन में सुधार होता है, और उनकी लचीलापन इनपुट प्रक्रिया में महत्वपूर्ण योगदान करती है।
एक प्रॉम्प्ट टेम्पलेट का एक सरल उदाहरण है:
<p>from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=[&quot;subject&quot;],
template=&quot;What are the recent advancements in the field of {subject}?&quot;)
print(prompt.format(subject=&quot;Natural Language Processing&quot;))</p>
जैसा कि हम जटिलता में आगे बढ़ते हैं, हम लैंगचेन में अधिक परिष्कृत पैटर्न का सामना करते हैं, जैसे कि रीज़न एंड एक्ट (ReAct) पैटर्न। ReAct एक क्रिया निष्पादन के लिए एक महत्वपूर्ण पैटर्न है जहां एजेंट एक उपयुक्त उपकरण को एक कार्य सौंपता है, इसके लिए इनपुट को अनुकूलित करता है, और इसके आउटपुट को पार्स करता है ताकि कार्य को पूरा किया जा सके। नीचे दिया गया पाइथन उदाहरण एक ReAct पैटर्न को प्रदर्शित करता है। यह दिखाता है कि लैंगचेन में एक प्रॉम्प्ट कैसे संरचित किया जाता है, जिसमें एक समस्या के माध्यम से तर्क करने और एक अंतिम उत्तर उत्पन्न करने के लिए विचारों और क्रियाओं की एक श्रृंखला होती है:
PREFIX = &quot;&quot;&quot;Answer the following question using the given tools:&quot;&quot;&quot;
FORMAT_INSTRUCTIONS = &quot;&quot;&quot;Follow this format:
Question: {input_question}
Thought: your initial thought on the question
Action: your chosen action from [{tool_names}]
Action Input: your input for the action
Observation: the action's outcome&quot;&quot;&quot;
SUFFIX = &quot;&quot;&quot;Start!
Question: {input}
Thought:{agent_scratchpad}&quot;&quot;&quot;
मेमोरी
मेमोरी लैंगचेन में एक महत्वपूर्ण概念 है, जो LLM और उपकरणों को समय के साथ जानकारी को बनाए रखने की अनुमति देता है। यह राज्य-विशिष्ट व्यवहार लैंगचेन अनुप्रयोगों के प्रदर्शन में सुधार करता है जो पिछले प्रतिक्रियाओं, उपयोगकर्ता इंटरैक्शन, पर्यावरण की स्थिति, और एजेंट के लक्ष्यों को संग्रहीत करता है। कॉन्वर्सेशनबफरमेमोरी और कॉन्वर्सेशनबफरविंडोमेमोरी रणनीतियां पूरी या हाल की बातचीत के हिस्सों को ट्रैक करने में मदद करती हैं। एक अधिक परिष्कृत दृष्टिकोण के लिए, कॉन्वर्सेशनकेजीमेमोरी रणनीति बातचीत को एक ज्ञान ग्राफ के रूप में एन्कोड करने की अनुमति देती है जिसे प्रॉम्प्ट में वापस खिलाया जा सकता है या प्रतिक्रियाओं की भविष्यवाणी करने के लिए उपयोग किया जा सकता है बिना LLM को कॉल किए।
एजेंट
एक एजेंट दुनिया के साथ बातचीत करके कार्यों और कार्यों को निष्पादित करता है। लैंगचेन में, एजेंट उपकरणों और श्रृंखलाओं को कार्य निष्पादन के लिए जोड़ते हैं। यह बाहरी दुनिया के साथ जुड़ने के लिए LLM ज्ञान को बढ़ाने के लिए जानकारी पुनर्प्राप्ति के लिए एक कनेक्शन स्थापित कर सकता है, इस प्रकार उनकी अंतर्निहित सीमाओं को दूर करता है। वे स्थिति के आधार पर एक कैलकुलेटर या पाइथन इंटरप्रेटर को गणना पास करने का निर्णय ले सकते हैं।
एजेंटों में उप-घटक होते हैं:
- उपकरण: ये कार्यात्मक घटक हैं।
- उपकरण सेट: उपकरणों के संग्रह।
- एजेंट एक्जीक्यूटर: यह निष्पादन तंत्र है जो उपकरणों के बीच चयन करने की अनुमति देता है।
लैंगचेन में एजेंट भी शून्य-शॉट ReAct पैटर्न का पालन करते हैं, जहां निर्णय केवल उपकरण के विवरण पर आधारित होता है। इस तंत्र को स्मृति के साथ बढ़ाया जा सकता है ताकि पूरी बातचीत इतिहास को ध्यान में रखा जा सके। ReAct के साथ, आप LLM से अपना पाठ पूरा करने के बजाय, इसे एक विचार/क्रिया/अवलोकन लूप में प्रतिक्रिया देने के लिए प्रेरित कर सकते हैं।
चेन
चेन, जैसा कि नाम से पता चलता है, ऑपरेशन की श्रृंखलाएं हैं जो लैंगचेन पुस्तकालय को भाषा मॉडल इनपुट और आउटपुट को निर्बाध रूप से संसाधित करने की अनुमति देती हैं। लैंगचेन के इन एकीकृत घटकों को मूल रूप से लिंक से बनाया जाता है, जो अन्य श्रृंखलाएं हो सकती हैं या प्रॉम्प्ट, भाषा मॉडल, या उपयोगिताओं जैसे मूलभूत हो सकते हैं।
एक चेन की कल्पना एक फैक्ट्री में एक कन्वेयर बेल्ट के रूप में करें। इस बेल्ट पर प्रत्येक चरण एक विशिष्ट ऑपरेशन का प्रतिनिधित्व करता है, जो भाषा मॉडल को बुलाना, एक पाठ पर एक पाइथन फंक्शन लागू करना, या मॉडल को एक विशिष्ट तरीके से प्रॉम्प्ट करना हो सकता है।
लैंगचेन अपनी श्रृंखलाओं को तीन प्रकारों में वर्गीकृत करता है: उपयोगिता श्रृंखलाएं, सामान्य श्रृंखलाएं, और संयुक्त दस्तावेज़ श्रृंखलाएं। हम उपयोगिता और सामान्य श्रृंखलाओं पर चर्चा करेंगे।
- उपयोगिता श्रृंखलाएं विशिष्ट कार्यों के लिए भाषा मॉडल से सटीक उत्तर प्राप्त करने के लिए डिज़ाइन की जाती हैं। उदाहरण के लिए, LLMMathChain पर विचार करें। यह उपयोगिता श्रृंखला भाषा मॉडल को गणितीय गणना करने की अनुमति देती है। यह एक प्राकृतिक भाषा प्रश्न स्वीकार करती है, और भाषा मॉडल एक पाइथन कोड स्निपेट उत्पन्न करता है जिसे तब निष्पादित किया जाता है ताकि उत्तर प्राप्त किया जा सके।
- सामान्य श्रृंखलाएं, दूसरी ओर, अन्य श्रृंखलाओं के लिए निर्माण खंड के रूप में कार्य करती हैं लेकिन स्वयं स्टैंडअलोन रूप से उपयोग नहीं की जा सकती हैं। ये श्रृंखलाएं, जैसे कि LLMChain, मूलभूत हैं और अक्सर जटिल कार्यों को पूरा करने के लिए अन्य श्रृंखलाओं के साथ जोड़ी जाती हैं। उदाहरण के लिए, LLMChain अक्सर एक भाषा मॉडल वस्तु को एक प्रदान किए गए प्रॉम्प्ट टेम्पलेट के आधार पर इनपुट को प्रारूपित करके और फिर इसे भाषा मॉडल को पास करके प्रश्न करने के लिए उपयोग किया जाता है।
लैंगचेन के साथ प्रॉम्प्ट इंजीनियरिंग का चरण-दर-चरण कार्यान्वयन
हम आपको लैंगचेन का उपयोग करके प्रॉम्प्ट इंजीनियरिंग लागू करने की प्रक्रिया के माध्यम से ले जाएंगे। आगे बढ़ने से पहले, सुनिश्चित करें कि आपने आवश्यक सॉफ़्टवेयर और पैकेज स्थापित किए हैं।
आप लैंगचेन सेट अप करने के लिए डॉकर, कोंडा, पिप, और पोएट्री जैसे लोकप्रिय उपकरणों का लाभ उठा सकते हैं। लैंगचेन रिपॉजिटरी में प्रत्येक विधि के लिए संबंधित स्थापना फ़ाइलें पाई जा सकती हैं: https://github.com/benman1/generative_ai_with_langchain। इसमें डॉकर के लिए एक डॉकरफ़ाइल, पिप के लिए एक आवश्यकताएं.txt, पोएट्री के लिए एक pyproject.toml, और कोंडा के लिए एक langchain_ai.yml फ़ाइल शामिल है।
हमारे लेख में, हम पाइथन के लिए मानक पैकेज मैनेजर पिप का उपयोग करके तीसरे पक्ष के पुस्तकालयों की स्थापना और प्रबंधन को सुविधाजनक बनाएंगे। यदि यह आपके पाइथन वितरण में शामिल नहीं है, तो आप https://pip.pypa.io/ पर दिए गए निर्देशों का पालन करके पिप स्थापित कर सकते हैं।
पिप का उपयोग करके एक पुस्तकालय स्थापित करने के लिए, आप pip install library_name कमांड का उपयोग करें।
हालांकि, पिप स्वयं पर्यावरणों का प्रबंधन नहीं करता है। विभिन्न पर्यावरणों को संभालने के लिए, हम वर्चुअलएनवी उपकरण का उपयोग करते हैं।
अगले खंड में, हम मॉडल एकीकरण पर चर्चा करेंगे।
चरण 1: लैंगचेन सेट अप करना
पहले, आपको लैंगचेन पैकेज स्थापित करने की आवश्यकता है। हम विंडोज़ ओएस का उपयोग कर रहे हैं। इसे स्थापित करने के लिए अपने टर्मिनल में निम्नलिखित कमांड चलाएं:
pip install langchain
चरण 2: लैंगचेन और अन्य आवश्यक मॉड्यूल आयात करना
इसके बाद, लैंगचेन के साथ-साथ अन्य आवश्यक मॉड्यूल आयात करें। यहां, हम एनएलपी कार्यों के लिए व्यापक रूप से उपयोग की जाने वाली ट्रांसफॉर्मर पुस्तकालय भी आयात करते हैं।
<p>import langchain from transformers import AutoModelWithLMHead, AutoTokenizer
चरण 3: पूर्व-प्रशिक्षित मॉडल लोड करना
ओपनएआई
ओपनएआई मॉडल लैंगचेन पुस्तकालय या ओपनएआई पाइथन क्लाइंट लाइब्रेरी के माध्यम से सुविधाजनक रूप से इंटरफ़ेस किया जा सकता है। उल्लेखनीय रूप से, ओपनएआई एक एम्बेडिंग क्लास प्रदान करता है जो पाठ एम्बेडिंग मॉडल के लिए है। दो प्रमुख LLM मॉडल GPT-3.5 और GPT-4 हैं, जो मुख्य रूप से टोकन लंबाई में भिन्न होते हैं। प्रत्येक मॉडल की कीमत ओपनएआई की वेबसाइट पर पाई जा सकती है। जबकि GPT-4-32K जैसे अधिक परिष्कृत मॉडल हैं जिनमें उच्च टोकन स्वीकृति है, उनकी API के माध्यम से उपलब्धता हमेशा गारंटीकृत नहीं होती है।

इन मॉडलों तक पहुंचने के लिए, आपको एक ओपनएआई API कुंजी की आवश्यकता होगी। यह ओपनएआई के मंच पर एक खाता बनाकर, बिलिंग जानकारी सेट करके, और एक नई गुप्त कुंजी उत्पन्न करके किया जा सकता है।
<p>import os os.environ[&quot;OPENAI_API_KEY&quot;] = 'your-openai-token'</p>
एक बार जब आप कुंजी बना लेते हैं, तो आप इसे एक पर्यावरण переменा (OPENAI_API_KEY) के रूप में सेट कर सकते हैं या ओपनएआई कॉल के दौरान एक पैरामीटर के रूप में पास कर सकते हैं।
एक लैंगचेन स्क्रिप्ट पर विचार करें जो ओपनएआई मॉडल के साथ इंटरैक्शन को प्रदर्शित करता है:
from langchain.llms import OpenAI llm = OpenAI(model_name=&quot;text-davinci-003&quot;) # LLM एक प्रॉम्प्ट को इनपुट के रूप में लेता है और एक पूर्णता का आउटपुट देता है prompt = &quot;who is the president of the United States of America?&quot; completion = llm(prompt)
<p>संयुक्त राज्य अमेरिका के वर्तमान राष्ट्रपति जो बिडेन हैं।</p>
इस उदाहरण में, एक एजेंट को गणना करने के लिए आरंभ किया जाता है। एजेंट एक इनपुट लेता है, एक सरल जोड़ का कार्य, इसे प्रदान किए गए ओपनएआई मॉडल का उपयोग करके संसाधित करता है, और परिणाम लौटाता है।
हगिंग फेस
हगिंग फेस एक नि:शुल्क ट्रांसफॉर्मर पाइथन पुस्तकालय है, जो पाइथन, टेंसोरफ्लो और जैक्स के साथ संगत है, और बERT, T5, आदि जैसे मॉडलों के कार्यान्वयन शामिल हैं।
हगिंग फेस हगिंग फेस हब भी प्रदान करता है, जो एक मंच है जो कोड रिपॉजिटरी, मशीन लर्निंग मॉडल, डेटासेट, और वेब अनुप्रयोगों की मेजबानी के लिए है।
हगिंग फेस के मॉडल प्रदाता के रूप में उपयोग करने के लिए, आपको एक खाते और API कुंजी की आवश्यकता होगी, जिसे उनकी वेबसाइट से प्राप्त किया जा सकता है। टोकन को HUGGINGFACEHUB_API_TOKEN के रूप में आपके पर्यावरण में उपलब्ध कराया जा सकता है।
गूगल द्वारा विकसित फ्लैन-टी5-एक्सएक्सएल मॉडल का उपयोग करने वाले निम्नलिखित पाइथन स्निपेट पर विचार करें:
from langchain.llms import HuggingFaceHub
<p>llm = HuggingFaceHub(model_kwargs={&quot;temperature&quot;: 0.5, &quot;max_length&quot;: 64},repo_id=&quot;google/flan-t5-xxl&quot;)
prompt = &quot;In which country is Tokyo?&quot;
completion = llm(prompt)
print(completion)</p>
यह स्क्रिप्ट एक प्रश्न को इनपुट के रूप में लेती है और एक उत्तर लौटाती है, मॉडल की ज्ञान और पूर्वानुमान क्षमताओं को प्रदर्शित करती है।
चरण 4: बुनियादी प्रॉम्प्ट इंजीनियरिंग
शुरू करने के लिए, हम एक सरल प्रॉम्प्ट उत्पन्न करेंगे और देखेंगे कि मॉडल कैसे प्रतिक्रिया करता है।
prompt = 'Translate the following English text to French: &quot;{0}&quot;'
input_text = 'Hello, how are you?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')
<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
उपरोक्त कोड स्निपेट में, हम एक प्रॉम्प्ट प्रदान करते हैं जो अंग्रेजी पाठ को फ्रेंच में अनुवादित करने के लिए कहता है। भाषा मॉडल फिर दिए गए पाठ का अनुवाद करने का प्रयास करता है।
चरण 5: उन्नत प्रॉम्प्ट इंजीनियरिंग
जबकि ऊपर का दृष्टिकोण अच्छा काम करता है, यह प्रॉम्प्ट इंजीनियरिंग की शक्ति का पूरा लाभ नहीं उठाता है। आइए इसे अधिक जटिल प्रॉम्प्ट संरचनाओं को पेश करके सुधारें:
prompt = 'As a highly proficient French translator, translate the following English text to French: &quot;{0}&quot;'
input_text = 'Hello, how are you?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')
<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
इस कोड स्निपेट में, हम प्रॉम्प्ट को संशोधित करते हैं ताकि यह सुझाव दिया जा सके कि अनुवाद एक ‘अत्यधिक कुशल फ्रेंच अनुवादक’ द्वारा किया जा रहा है। प्रॉम्प्ट में यह परिवर्तन बेहतर अनुवादों को जन्म दे सकता है, क्योंकि मॉडल अब एक विशेषज्ञ की भूमिका निभाता है।
लैंगचेन के साथ एक अकादमिक साहित्य प्रश्न और उत्तर प्रणाली का निर्माण
हम लैंगचेन का उपयोग करके एक अकादमिक साहित्य प्रश्न और उत्तर प्रणाली बनाएंगे जो हाल ही में प्रकाशित अकादमिक पत्रों के बारे में प्रश्नों का उत्तर दे सकती है।

पहले, हम अपने वातावरण को स्थापित करने के लिए आवश्यक निर्भरताओं को स्थापित करते हैं।
pip install langchain arxiv openai transformers faiss-cpu
स्थापना के बाद, हम एक नई पाइथन नोटबुक बनाते हैं और आवश्यक पुस्तकालयों को आयात करते हैं:
from langchain.llms import OpenAI from langchain.chains.qa_with_sources import load_qa_with_sources_chain from langchain.docstore.document import Document import arxiv
हमारी प्रश्न और उत्तर प्रणाली का मुख्य भाग अकादमिक पत्रों को एक निश्चित क्षेत्र से संबंधित प्राप्त करने की क्षमता है, यहां हम प्राकृतिक भाषा प्रसंस्करण (NLP) पर विचार करते हैं, अरXiv अकादमिक डेटाबेस का उपयोग करके। इसे करने के लिए, हम एक फ़ंक्शन get_arxiv_data(max_results=10) परिभाषित करते हैं। यह फ़ंक्शन अरXiv से सबसे हाल के NLP पेपर सारांश एकत्र करता है और उन्हें लैंगचेन डॉक्यूमेंट वस्तुओं में 封装 करता है, सारांश को सामग्री के रूप में और अद्वितीय प्रवेश आईडी को स्रोत के रूप में उपयोग करता है।
हम अरXiv API का उपयोग करके NLP से संबंधित हाल के पत्रों को प्राप्त करने जा रहे हैं:
<p>def get_arxiv_data(max_results=10):
search = arxiv.Search(
query=&quot;NLP&quot;,
max_results=max_results,
sort_by=arxiv.SortCriterion.SubmittedDate,
)</p>
documents = []
<p>for result in search.results():
documents.append(Document(
page_content=result.summary,
metadata={&quot;source&quot;: result.entry_id},
))</p>
return documents
यह फ़ंक्शन अरXiv से सबसे हाल के NLP पेपर के सारांश प्राप्त करता है और उन्हें लैंगचेन डॉक्यूमेंट वस्तुओं में 封装 करता है, सारांश को सामग्री के रूप में और अद्वितीय प्रवेश आईडी को स्रोत के रूप में उपयोग करता है।
def print_answer(question):
print(
chain(
{
&quot;input_documents&quot;: sources,
&quot;question&quot;: question,
},
return_only_outputs=True,
)[&quot;output_text&quot;]
)
आइए अपना स्रोत और लैंगचेन सेट अप करें:
sources = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(temperature=0))
अब हमारी अकादमिक प्रश्न और उत्तर प्रणाली तैयार है, हम इसे एक प्रश्न पूछकर परीक्षण कर सकते हैं:
print_answer(&quot;What are the recent advancements in NLP?&quot;)
आउटपुट आपके प्रश्न का उत्तर होगा, जिसमें जानकारी निकाली गई स्रोतों का उल्लेख किया जाएगा। उदाहरण के लिए:
<p>हाल के वर्षों में, NLP में कई नए दृष्टिकोण विकसित किए गए हैं, जिनमें रिट्रीवर-ऑगमेंटेड इंस्ट्रक्शन-फॉलोइंग मॉडल और ग्राफिक्स प्रोसेसिंग यूनिट (GPU) का उपयोग करके वैकल्पिक करंट ऑप्टिमल पावर फ्लो (ACOPF) समस्याओं को हल करने के लिए एक नई गणना ढांचा शामिल है। स्रोत: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
आप आसानी से मॉडल या प्रणाली को अपनी आवश्यकताओं के अनुसार बदल सकते हैं। उदाहरण के लिए, यहां हम GPT-4 में बदल रहे हैं जो हमें एक बहुत बेहतर और विस्तृत प्रतिक्रिया देता है:
sources = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(model_name=&quot;gpt-4&quot;,temperature=0))
<p>NLP में हाल की प्रगति में रिट्रीवर-ऑगमेंटेड इंस्ट्रक्शन-फॉलोइंग मॉडल का विकास शामिल है जो जानकारी खोज कार्यों जैसे प्रश्न उत्तर देने के लिए अनुकूलित किया जा सकता है। ये मॉडल विभिन्न जानकारी डोमेन और कार्यों में अनुकूलित किए जा सकते हैं बिना अतिरिक्त फाइन-ट्यूनिंग के। हालांकि, वे अक्सर प्रदान किए गए ज्ञान के लिए चिपके रहने में संघर्ष करते हैं और अपनी प्रतिक्रियाओं में कल्पना कर सकते हैं। एक और प्रगति वैकल्पिक करंट ऑप्टिमल पावर फ्लो (ACOPF) समस्याओं को हल करने के लिए ग्राफिक्स प्रोसेसिंग यूनिट (GPU) का उपयोग करके एक नई गणना ढांचे की शुरुआत है। यह दृष्टिकोण एक एकल-निर्देश, बहु-डेटा (SIMD) गैर-रेखीय कार्यक्रमों (NLP) के स abstract का उपयोग करता है और एक संक्षिप्त-स्थान आंतरिक-बिंदु विधि (IPM) को रोजगार देता है जिसमें एक असमानता शिथिलीकरण रणनीति होती है। यह रणनीति KKT मैट्रिक्स को संख्यात्मक पिवोटिंग के बिना कारक करने की अनुमति देती है, जिसने पहले IPM एल्गोरिदम के समांतरीकरण को बाधित किया था। स्रोत: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
GPT-4 में एक टोकन एक अक्षर या एक शब्द के रूप में लंबा हो सकता है। उदाहरण के लिए, GPT-4-32K एक ही रन में 32,000 टोकन संसाधित कर सकता है, जबकि GPT-4-8K और GPT-3.5-टर्बो क्रमशः 8,000 और 4,000 टोकन का समर्थन करते हैं। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि इन मॉडलों के साथ हर बार बातचीत करने से लागत उत्पन्न होती है जो सीधे टोकन की संख्या से संबंधित होती है जो संसाधित की जाती है, चाहे वह इनपुट हो या आउटपुट।
हमारी प्रश्न और उत्तर प्रणाली के संदर्भ में, यदि एक टुकड़ा अकादमिक साहित्य टोकन सीमा से अधिक है, तो प्रणाली इसे पूरी तरह से संसाधित करने में विफल हो जाएगी, जिससे प्रतिक्रियाओं की गुणवत्ता और पूर्णता प्रभावित हो सकती है। इस मुद्दे से निपटने के लिए, पाठ को टोकन सीमा के अनुरूप छोटे हिस्सों में विभाजित किया जा सकता है।
FAISS (फेसबुक AI समानता खोज) उपयोगकर्ता के प्रश्न से संबंधित सबसे प्रासंगिक पाठ टुकड़ों को जल्दी से खोजने में मदद करता है। यह प्रत्येक पाठ टुकड़े का एक वेक्टर प्रतिनिधित्व बनाता है और इन वेक्टरों का उपयोग प्रश्न के वेक्टर प्रतिनिधित्व के लिए सबसे समान टुकड़ों को पुनर्प्राप्त करने के लिए करता है।
सुनिश्चित करें कि उपरोक्त पुस्तकालय स्थापित हैं:
pip install faiss-cpu langchain CharacterTextSplitter
एक बार जब आप सुनिश्चित हो जाते हैं कि पुस्तकालय स्थापित हैं, तो चलाएं:
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.faiss import FAISS
from langchain.text_splitter import CharacterTextSplitter
documents = get_arxiv_data(max_results=10) # अब हम अधिक डेटा फीड कर सकते हैं
document_chunks = []
splitter = CharacterTextSplitter(separator=&quot; &quot;, chunk_size=1024, chunk_overlap=0)
for document in documents:
for chunk in splitter.split_text(document.page_content):
document_chunks.append(Document(page_content=chunk, metadata=document.metadata))
<p>search_index = FAISS.from_documents(document_chunks, OpenAIEmbeddings())</p>
<p>chain = load_qa_with_sources_chain(OpenAI(temperature=0))</p>
<p>def print_answer(question):
print(
chain(
{
&quot;input_documents&quot;: search_index.similarity_search(question, k=4),
&quot;question&quot;: question,
},
return_only_outputs=True,
)[&quot;output_text&quot;]
)
कोड पूरा होने के साथ, हमारे पास अब NLP क्षेत्र में नवीनतम अकादमिक साहित्य के बारे में पूछने के लिए एक शक्तिशाली उपकरण है।
NLP में हाल की प्रगति में गहरे तंत्रिका नेटवर्क (DNN) का उपयोग स्वचालित पाठ विश्लेषण और NLP कार्यों जैसे वर्तनी जांच, भाषा पता लगाने, इकाई निष्कर्षण, लेखक पता लगाने, प्रश्न उत्तर देने और अन्य कार्यों के लिए किया जाता है। स्रोत: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1
निष्कर्ष
बड़े भाषा मॉडल (LLM) का अनुप्रयोगों में एकीकरण विभिन्न क्षेत्रों को अपनाने में तेजी ला सकता है, जिनमें भाषा अनुवाद, भावना विश्लेषण, और जानकारी पुनर्प्राप्ति शामिल हैं। प्रॉम्प्ट इंजीनियरिंग इन मॉडलों की क्षमता को अधिकतम करने में एक शक्तिशाली उपकरण है, और लैंगचेन इस जटिल कार्य को सरल बनाने में अग्रणी है। इसका मानकीकृत इंटरफ़ेस, लचीले प्रॉम्प्ट टेम्पलेट, मजबूत मॉडल एकीकरण, और एजेंटों और श्रृंखलाओं का नवाचार LLM के प्रदर्शन के लिए ऑप्टिमल परिणाम सुनिश्चित करता है।
हालांकि, इन प्रगति के बावजूद, कुछ सुझावों को ध्यान में रखना आवश्यक है। जब आप लैंगचेन का उपयोग करते हैं, तो यह महत्वपूर्ण है कि आप समझें कि आउटपुट की गुणवत्ता प्रॉम्प्ट के शब्दों पर बहुत अधिक निर्भर करती है। विभिन्न प्रॉम्प्ट शैलियों और संरचनाओं के साथ प्रयोग करने से बेहतर परिणाम मिल सकते हैं। इसके अलावा, याद रखें कि लैंगचेन विभिन्न भाषा मॉडलों का समर्थन करता है, और प्रत्येक मॉडल की अपनी ताकत और कमजोरियां होती हैं। अपने विशिष्ट कार्य के लिए सही मॉडल चुनना महत्वपूर्ण है। अंत में, यह याद रखना आवश्यक है कि इन मॉडलों का उपयोग करने से लागत संबंधी विचार उत्पन्न होते हैं, क्योंकि टोकन प्रसंस्करण सीधे बातचीत की लागत को प्रभावित करता है।
जैसा कि चरण-दर-चरण गाइड में प्रदर्शित किया गया है, लैंगचेन मजबूत अनुप्रयोगों को संचालित कर सकता है, जैसे कि अकादमिक साहित्य प्रश्न और उत्तर प्रणाली। एक बढ़ती उपयोगकर्ता समुदाय और ओपन-सोर्स परिदृश्य में बढ़ती प्रमुखता के साथ, लैंगचेन GPT-4 जैसे LLM की पूरी क्षमता को हार्नेस करने में एक निर्णायक उपकरण होने का वादा करता है।














