LangChain बड़े भाषा मॉडल (एलएलएम) की शक्ति का उपयोग करने के लिए विकसित एक अत्याधुनिक और मजबूत उपकरण है।
इन एलएलएम में उल्लेखनीय क्षमताएं हैं और ये कुशलतापूर्वक कार्यों की एक विस्तृत श्रृंखला को निपटा सकते हैं। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि उनकी ताकत गहन डोमेन विशेषज्ञता के बजाय उनकी सामान्य प्रकृति में निहित है। GPT-4 की शुरुआत के बाद से इसकी लोकप्रियता तेजी से बढ़ी है।
जबकि एलएलएम विभिन्न कार्यों को संभालने में उत्कृष्टता प्राप्त करते हैं, जब विशिष्ट उत्तर देने या गहन डोमेन ज्ञान की आवश्यकता वाले कार्यों से निपटने की बात आती है तो उन्हें सीमाओं का सामना करना पड़ सकता है। उदाहरण के लिए, प्रश्नों के उत्तर देने या चिकित्सा या कानून जैसे विशेष क्षेत्रों में कार्य करने के लिए एलएलएम का उपयोग करने पर विचार करें।
जबकि एलएलएम निश्चित रूप से इन क्षेत्रों के बारे में सामान्य पूछताछ का जवाब दे सकता है, यह विशेष ज्ञान या विशेषज्ञता की आवश्यकता वाले अधिक विस्तृत या सूक्ष्म उत्तरों की पेशकश करने के लिए संघर्ष कर सकता है।
ऐसा इसलिए है क्योंकि एलएलएम को विविध स्रोतों से बड़ी मात्रा में टेक्स्ट डेटा पर प्रशिक्षित किया जाता है, जिससे वे पैटर्न सीखने, संदर्भ को समझने और सुसंगत प्रतिक्रियाएं उत्पन्न करने में सक्षम होते हैं। हालांकि, उनके प्रशिक्षण में आम तौर पर डोमेन-विशिष्ट या विशेष ज्ञान अधिग्रहण शामिल नहीं होता है, जैसा कि उन क्षेत्रों में मानव विशेषज्ञ करते हैं।
इसलिए, जबकि लैंगचैन, एलएलएम के संयोजन के साथ, कार्यों की एक विस्तृत श्रृंखला के लिए एक अमूल्य उपकरण हो सकता है, यह पहचानना महत्वपूर्ण है कि कुछ स्थितियों में गहन डोमेन विशेषज्ञता अभी भी आवश्यक हो सकती है। विशिष्ट ज्ञान वाले मानव विशेषज्ञ आवश्यक गहराई, बारीक समझ और संदर्भ-विशिष्ट अंतर्दृष्टि प्रदान कर सकते हैं जो अकेले एलएलएम की क्षमताओं से परे हो सकते हैं।
हम LangChain के डॉक्स या को देखने की सलाह देंगे GitHub इसके विशिष्ट उपयोग मामलों की अधिक गहन समझ के लिए रिपॉजिटरी। इस बंडल की एक बड़ी तस्वीर लेने की जोरदार सलाह दी जाती है।
यह कैसे काम करता है?
LangChain के उद्देश्य और कार्य को समझने के लिए, आइए एक व्यावहारिक उदाहरण पर विचार करें। हम जानते हैं कि GPT-4 में प्रभावशाली सामान्य ज्ञान है और यह विस्तृत श्रेणी के प्रश्नों के विश्वसनीय उत्तर प्रदान कर सकता है।
हालाँकि, क्या होगा यदि हम अपने स्वयं के डेटा से विशिष्ट जानकारी चाहते हैं, जैसे कि एक व्यक्तिगत दस्तावेज़, पुस्तक, पीडीएफ फाइल, या मालिकाना डेटाबेस?
LangChain हमें कनेक्ट करने की अनुमति देता है बड़ी भाषा मॉडल डेटा के हमारे अपने स्रोतों के लिए GPT-4 की तरह। यह केवल टेक्स्ट के एक स्निपेट को चैट इंटरफ़ेस में चिपकाने से परे है। इसके बजाय, हम अपने स्वयं के डेटा से भरे हुए संपूर्ण डेटाबेस का संदर्भ दे सकते हैं।
एक बार जब हम वांछित जानकारी प्राप्त कर लेते हैं, तो LangChain विशिष्ट कार्रवाई करने में हमारी सहायता कर सकता है। उदाहरण के लिए, हम इसे कुछ विवरणों वाली ईमेल भेजने का निर्देश दे सकते हैं।
इसे प्राप्त करने के लिए, हम लैंगचेन का उपयोग करके एक पाइपलाइन दृष्टिकोण का पालन करते हैं। सबसे पहले, हम वह दस्तावेज़ लेते हैं जो हमें चाहिए भाषा मॉडल इसे संदर्भित करने और इसे छोटे टुकड़ों में विभाजित करने के लिए। फिर इन टुकड़ों को एम्बेडिंग के रूप में संग्रहित किया जाता है, जो कि हैं वेक्टर डेटाबेस में टेक्स्ट का वेक्टर प्रतिनिधित्व.
इस सेटअप के साथ, हम भाषा मॉडल अनुप्रयोगों का निर्माण कर सकते हैं जो मानक पाइपलाइन का पालन करते हैं: उपयोगकर्ता प्रारंभिक प्रश्न पूछता है, जिसे बाद में भाषा मॉडल में भेजा जाता है। प्रश्न के वेक्टर प्रतिनिधित्व का उपयोग वेक्टर डेटाबेस में समानता की खोज करने के लिए किया जाता है, जो सूचना के प्रासंगिक भाग को पुनः प्राप्त करता है।
फिर इन टुकड़ों को भाषा मॉडल में वापस फीड किया जाता है, जिससे यह उत्तर देने या वांछित कार्रवाई करने में सक्षम हो जाता है।
LangChain उन अनुप्रयोगों के विकास की सुविधा देता है जो डेटा-जागरूक हैं, क्योंकि हम एक वेक्टर स्टोर में अपने स्वयं के डेटा को संदर्भित कर सकते हैं, और प्रामाणिक हैं, क्योंकि वे सवालों के जवाब देने से परे कार्रवाई कर सकते हैं। टी
यह कई व्यावहारिक उपयोग के मामलों को खोलता है, विशेष रूप से व्यक्तिगत सहायता में, जहां एक बड़ा भाषा मॉडल बुकिंग उड़ानें, धन हस्तांतरण, या कर-संबंधी मामलों में सहायता करने जैसे कार्यों को संभाल सकता है।
इसके अतिरिक्त, नए विषयों के अध्ययन और सीखने के निहितार्थ महत्वपूर्ण हैं, क्योंकि एक भाषा मॉडल पूरे पाठ्यक्रम को संदर्भित कर सकता है और सीखने की प्रक्रिया को तेज कर सकता है। कोडिंग, डेटा विश्लेषण और डेटा विज्ञान के भी इन प्रगति से काफी प्रभावित होने की उम्मीद है।
सबसे रोमांचक संभावनाओं में से एक बड़े भाषा मॉडल को मौजूदा कंपनी डेटा, जैसे ग्राहक जानकारी या मार्केटिंग डेटा से जोड़ना है। मेटा के एपीआई या गूगल के एपीआई जैसे उन्नत एपीआई के साथ यह एकीकरण डेटा एनालिटिक्स और डेटा साइंस में तेजी से प्रगति का वादा करता है।
वेबपेज कैसे बनाएं (डेमो)
वर्तमान में, लैंगचैन पायथन और जावास्क्रिप्ट पैकेज के रूप में उपलब्ध है।
हम LangChain अवधारणा को लागू करने के लिए स्ट्रीमलिट, LangChain और OpenAI GPT-3 मॉडल का उपयोग करके एक प्रदर्शन वेब ऐप बना सकते हैं।
लेकिन पहले, हमें कुछ निर्भरताएँ स्थापित करनी होंगी, जिनमें स्ट्रीमलिट, लैंगचैन और ओपनएआई शामिल हैं।
पूर्व आवश्यक वस्तुएँ
स्ट्रीमलाइट: डेटा विज्ञान से संबंधित वेब एप्लिकेशन बनाने के लिए एक लोकप्रिय पायथन पैकेज
ओपनएआई: OpenAI के GPT-3 भाषा मॉडल तक पहुंच की आवश्यकता है।
इन निर्भरताओं को स्थापित करने के लिए, cmd में निम्न कमांड का उपयोग करें:
pip install streamlit
pip install langchain
pip install openai
पैकेज आयात करें
हम OpenAI, LangChain और Streamlit जैसे आवश्यक पैकेजों को आयात करके शुरू करते हैं। हमारी भाषा मॉडल श्रृंखला को LangChain से तीन वर्गों का उपयोग करके परिभाषित और निष्पादित किया जाता है: LLMChain, SimpleSequentialChain, और PromptTemplate।
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
बुनियादी सेटअप
हमारी परियोजना का संरचनात्मक आधार तब स्ट्रीमलिट सिंटैक्स का उपयोग करके रखा गया था। हमने ऐप को "व्हाट्स ट्रू: सिंपल सीक्वेंशियल चेन का उपयोग करना" शीर्षक दिया और इसमें गिटहब रिपॉजिटरी के लिए एक मार्कडाउन लिंक शामिल किया जो ऐप की प्रेरणा के रूप में कार्य करता है।
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
फ्रंट-एंड विजेट
हमने सरल स्ट्रीमलिट सिंटैक्स का उपयोग करते हुए, कुछ प्रासंगिक जानकारी के साथ ऐप को सेट किया है:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
फ्रंट-एंड विजेट जोड़ने के लिए
इसके अलावा, हमें अपने उपयोगकर्ताओं को कोई भी प्रश्न दर्ज करने की अनुमति देने के लिए एक इनपुट विजेट प्रदान करने की आवश्यकता है।
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
सब कुछ कर दिया! जंजीरें ऊपर और चल रही हैं!
हम संचालन की विभिन्न श्रृंखलाओं को एक साथ नियोजित करते हैं SimpleSequentialChain
उपयोगकर्ता के प्रश्न का उत्तर देने के लिए। जब उपयोगकर्ता चयन करता है तो जंजीरों को निम्नलिखित क्रम में किया जाता है "Tell me about it"
बटन:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: जो हमारी पाइपलाइन का पहला चरण है, इनपुट और आउटपुट के रूप में उपयोगकर्ता के प्रश्न प्राप्त करता है। उपयोगकर्ता की क्वेरी श्रृंखला के टेम्पलेट के रूप में कार्य करती है।- प्रश्न से जुड़े एक बयान के आधार पर,
assumptions_chain
से आउटपुट का उपयोग करके मान्यताओं की बुलेट-पॉइंट सूची बनाता हैquestion_chain
इनपुट के रूप में।LLMChain
औरOpenAI
बयान के निर्माण के लिए लैंगचैन के मॉडल का उपयोग किया गया था। उपयोगकर्ता को इस श्रृंखला के लिए टेम्पलेट का उपयोग करके बयान तैयार करने के लिए किए गए अनुमानों की एक सूची बनाने का काम सौंपा गया है। - के आउटपुट के आधार पर
question_chain
औरassumptions_chain
,fact_checker_chain
बुलेट बिंदुओं के रूप में अभिकथनों की एक सूची बनाता है। दावों का उपयोग कर उत्पादन किया जाता हैOpenAI
मॉडल औरLLMChain
लैंगचेन से। उपयोगकर्ता को यह निर्धारित करने का काम सौंपा जाता है कि क्या प्रत्येक दावा सही या गलत है और जो हैं उनके लिए औचित्य प्रदान करता है। - RSI
answer_chain
के आउटपुट का उपयोग करता हैquestion_chain
,assumptions_chain
, तथाfact_checker_chain
पिछली श्रृंखलाओं द्वारा उत्पादित डेटा का उपयोग करके उपयोगकर्ता के प्रश्न की प्रतिक्रिया बनाने के लिए इनपुट के रूप में। इस श्रृंखला के लिए टेम्प्लेट अनुरोध करता है कि उपयोगकर्ता बनाए गए तथ्यों का उपयोग करके पहली क्वेरी का जवाब देता है। - पिछली श्रृंखलाओं द्वारा उत्पादित जानकारी के आधार पर उपयोगकर्ता की पूछताछ के लिए अंतिम प्रतिक्रिया प्रदान करने के लिए, हम इन श्रृंखलाओं को समग्र श्रृंखला में एकीकृत करते हैं। जंजीरों के पूरा होने के बाद, हम उपयोग करते हैं
st.success()
उपयोगकर्ता को समाधान दिखाने के लिए।
निष्कर्ष
का उपयोग करके अधिक जटिल पाइपलाइन बनाने के लिए हम बस विभिन्न भाषा मॉडल क्रियाओं को एक साथ जोड़ सकते हैं SimpleSequentialChain
लैंगचेन का मॉड्यूल। एनएलपी अनुप्रयोगों की एक विस्तृत विविधता के लिए, जिसमें चैटबॉट, प्रश्न-उत्तर प्रणाली और भाषा अनुवाद उपकरण शामिल हैं, यह काफी मददगार हो सकता है।
LangChain की प्रतिभा अमूर्त करने की क्षमता में पाई जाती है, जो उपयोगकर्ता को भाषा मॉडलिंग की बारीकियों के बजाय वर्तमान मुद्दे पर ध्यान केंद्रित करने में सक्षम बनाती है।
LangChain पूर्व-प्रशिक्षित मॉडल और टेम्प्लेट के चयन की पेशकश करके परिष्कृत भाषा मॉडल बनाने की प्रक्रिया को अधिक उपयोगकर्ता के अनुकूल बनाता है।
यह आपको अपने स्वयं के डेटा का उपयोग करके भाषा मॉडल को फाइन-ट्यून करने का विकल्प देता है, जिससे भाषा मॉडल को अनुकूलित करना आसान हो जाता है। यह अधिक सटीक, डोमेन-विशिष्ट मॉडल के विकास को सक्षम बनाता है, जो किसी दिए गए कार्य के लिए प्रशिक्षित मॉडल से बेहतर प्रदर्शन करता है।
RSI SimpleSequentialChain
मॉड्यूल और LangChain की अन्य विशेषताएं इसे परिष्कृत एनएलपी सिस्टम को जल्दी से विकसित करने और तैनात करने के लिए एक प्रभावी उपकरण बनाती हैं।
एक जवाब लिखें