LangChain एक अत्याधुनिक र बलियो उपकरण हो जुन ठूला भाषा मोडेलहरू (LLMs) को शक्ति प्रयोग गर्न विकसित गरिएको छ।
यी LLM सँग उल्लेखनीय क्षमताहरू छन् र कुशलतापूर्वक कार्यहरूको विस्तृत श्रृंखलालाई सम्हाल्न सक्छन्। यद्यपि, यो नोट गर्न महत्त्वपूर्ण छ कि तिनीहरूको शक्ति गहिरो डोमेन विशेषज्ञताको सट्टा तिनीहरूको सामान्य प्रकृतिमा निहित छ। GPT-4 को परिचय पछि यसको लोकप्रियता द्रुत रूपमा बढेको छ।
LLMs ले विभिन्न कार्यहरू ह्यान्डल गर्न उत्कृष्ट हुँदा, तिनीहरूले सीमितताहरू सामना गर्न सक्छन् जब यो विशिष्ट जवाफहरू प्रदान गर्न वा गहिरो डोमेन ज्ञान चाहिने कार्यहरू समाधान गर्न आउँछ। विचार गर्नुहोस्, उदाहरणका लागि, प्रश्नहरूको जवाफ दिन वा औषधि वा कानून जस्ता विशेष क्षेत्रहरूमा कार्यहरू गर्न LLM प्रयोग गर्ने।
LLM ले निश्चित रूपमा यी क्षेत्रहरूको बारेमा सामान्य सोधपुछको जवाफ दिन सक्छ, यसले विशेष ज्ञान वा विशेषज्ञता आवश्यक पर्ने थप विस्तृत वा सूक्ष्म जवाफहरू प्रदान गर्न संघर्ष गर्न सक्छ।
यो किनभने LLM लाई विभिन्न स्रोतहरूबाट पाठ डेटाको विशाल मात्रामा तालिम दिइन्छ, तिनीहरूलाई ढाँचाहरू सिक्न, सन्दर्भ बुझ्न र सुसंगत प्रतिक्रियाहरू उत्पन्न गर्न सक्षम पार्दै। यद्यपि, तिनीहरूको प्रशिक्षणमा सामान्यतया डोमेन-विशिष्ट वा विशेष ज्ञान प्राप्तिलाई ती क्षेत्रहरूमा मानव विशेषज्ञहरू जस्तै हदसम्म समावेश गर्दैन।
तसर्थ, LangChain, LLM सँग संयोजनमा, कार्यहरूको विस्तृत दायराको लागि एक बहुमूल्य उपकरण हुन सक्छ, यो महत्त्वपूर्ण छ कि गहिरो डोमेन विशेषज्ञता अझै पनि निश्चित परिस्थितिहरूमा आवश्यक हुन सक्छ। विशेष ज्ञान भएका मानव विशेषज्ञहरूले आवश्यक गहिराइ, सूक्ष्म समझ, र सन्दर्भ-विशिष्ट अन्तर्दृष्टिहरू प्रदान गर्न सक्छन् जुन LLM को मात्र क्षमताभन्दा बाहिर हुन सक्छ।
हामी LangChain को कागजातहरू हेर्न सल्लाह दिन्छौं वा GitHub यसको ठेठ प्रयोग केसहरूको थप गहिरो समझको लागि भण्डार। यो बन्डलको ठूलो तस्वीर प्राप्त गर्न दृढतापूर्वक सल्लाह दिइन्छ।
यस्ले कसरी काम गर्छ?
LangChain को उद्देश्य र काम बुझ्न, एक व्यावहारिक उदाहरण विचार गरौं। हामी सचेत छौं कि GPT-4 मा प्रभावशाली सामान्य ज्ञान छ र यसले विभिन्न प्रश्नहरूको भरपर्दो जवाफ दिन सक्छ।
यद्यपि, यदि हामी व्यक्तिगत कागजात, पुस्तक, पीडीएफ फाइल, वा स्वामित्व डाटाबेस जस्ता आफ्नै डाटाबाट विशेष जानकारी चाहनुहुन्छ भने?
LangChain ले हामीलाई जडान गर्न अनुमति दिन्छ ठूलो भाषा मोडेल GPT-4 जस्तै हाम्रो डेटाको आफ्नै स्रोतहरूमा। यो च्याट इन्टरफेसमा पाठको स्निपेट टाँस्नु भन्दा बाहिर जान्छ। यसको सट्टा, हामी हाम्रो आफ्नै डाटाले भरिएको सम्पूर्ण डाटाबेस सन्दर्भ गर्न सक्छौं।
एकपटक हामीले वांछित जानकारी प्राप्त गरेपछि, LangChain ले हामीलाई विशेष कार्यहरू गर्न मद्दत गर्न सक्छ। उदाहरणका लागि, हामी यसलाई निश्चित विवरणहरू भएको इमेल पठाउन निर्देशन दिन सक्छौं।
यो प्राप्त गर्न, हामी LangChain प्रयोग गरेर पाइपलाइन दृष्टिकोण अनुसरण गर्दछौं। पहिले, हामीले चाहेको कागजात लिन्छौं भाषा मोडेल सन्दर्भ गर्न र यसलाई सानो टुक्राहरूमा विभाजन गर्न। यी टुक्राहरू त्यसपछि इम्बेडिङको रूपमा भण्डारण गरिन्छ, जुन हो भेक्टर डाटाबेसमा पाठको भेक्टर प्रतिनिधित्व.
यस सेटअपको साथ, हामी मानक पाइपलाइन पछ्याउने भाषा मोडेल अनुप्रयोगहरू निर्माण गर्न सक्छौं: प्रयोगकर्ताले प्रारम्भिक प्रश्न सोध्छन्, जुन त्यसपछि भाषा मोडेलमा पठाइन्छ। प्रश्नको भेक्टर प्रतिनिधित्व भेक्टर डाटाबेसमा समानता खोजी गर्न प्रयोग गरिन्छ, जानकारीको सान्दर्भिक भागहरू पुन: प्राप्त गर्दै।
यी टुक्राहरूलाई भाषा मोडेलमा फिर्ता दिइन्छ, यसलाई जवाफ प्रदान गर्न वा इच्छित कार्य गर्न सक्षम पार्दै।
LangChain ले डेटा-अभिनय भएका अनुप्रयोगहरूको विकासलाई सहज बनाउँछ, किनकि हामीले भेक्टर स्टोरमा हाम्रो आफ्नै डेटा सन्दर्भ गर्न सक्छौं, र प्रमाणिक रूपमा, तिनीहरूले प्रश्नहरूको जवाफ नदिई कार्यहरू गर्न सक्छन्। T
उसले विशेष गरी व्यक्तिगत सहायतामा व्यावहारिक प्रयोगका केसहरू खोल्छ, जहाँ ठूलो भाषा मोडेलले उडानहरू बुक गर्ने, पैसा हस्तान्तरण गर्ने वा कर-सम्बन्धित मामिलाहरूमा सहयोग गर्ने जस्ता कार्यहरू ह्यान्डल गर्न सक्छ।
थप रूपमा, नयाँ विषयहरू अध्ययन गर्न र सिक्नका लागि प्रभावहरू महत्त्वपूर्ण छन्, किनकि भाषा मोडेलले सम्पूर्ण पाठ्यक्रमलाई सन्दर्भ गर्न सक्छ र सिक्ने प्रक्रियालाई छिटो बनाउन सक्छ। कोडिङ, डाटा विश्लेषण, र डाटा विज्ञान पनि यी प्रगतिहरूबाट धेरै प्रभावित हुने अपेक्षा गरिएको छ।
सबैभन्दा रोमाञ्चक सम्भावनाहरू मध्ये एक ठूला भाषा मोडेलहरूलाई अवस्थित कम्पनी डेटामा जडान गर्नु हो, जस्तै ग्राहक जानकारी वा मार्केटिङ डेटा। मेटाको एपीआई वा गुगलको एपीआई जस्ता उन्नत एपीआईहरूसँगको यो एकीकरणले डाटा एनालिटिक्स र डाटा विज्ञानमा घातीय प्रगतिको प्रतिज्ञा गर्दछ।
वेबपेज कसरी बनाउने (डेमो)
हाल, Langchain पाइथन र JavaScript प्याकेजहरूको रूपमा उपलब्ध छ।
हामी LangChain अवधारणा लागू गर्न Streamlit, LangChain, र OpenAI GPT-3 मोडेल प्रयोग गरेर एक प्रदर्शन वेब एप सिर्जना गर्न सक्छौं।
तर पहिले, हामीले Streamlit, LangChain, र OpenAI सहित केही निर्भरताहरू स्थापना गर्नुपर्छ।
पूर्व-आवश्यकताहरू
स्ट्रिमलाइट: डाटा विज्ञान-सम्बन्धित वेब अनुप्रयोगहरू सिर्जना गर्नका लागि लोकप्रिय पाइथन प्याकेज
OpenAI: OpenAI को GPT-3 भाषा मोडेलमा पहुँच आवश्यक छ।
यी निर्भरताहरू स्थापना गर्न, cmd मा निम्न आदेशहरू प्रयोग गर्नुहोस्:
pip install streamlit
pip install langchain
pip install openai
प्याकेजहरू आयात गर्नुहोस्
हामी आवश्यक प्याकेजहरू आयात गरेर सुरु गर्छौं, जस्तै OpenAI, LangChain, र Streamlit। हाम्रो भाषा मोडेल चेनहरू LangChain बाट तीन वर्गहरू प्रयोग गरी परिभाषित र कार्यान्वयन गरिन्छ: LLMCchain, SimpleSequentialChain, र PromptTemplate।
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
मूल सेटअप
हाम्रो परियोजनाको संरचनात्मक आधार त्यसपछि Streamlit वाक्य रचना प्रयोग गरेर राखिएको थियो। हामीले एपलाई शीर्षक दिएका थियौं "के सत्य हो: सरल अनुक्रमिक चेन प्रयोग गर्दै" र GitHub भण्डारमा मार्कडाउन लिङ्क समावेश गर्यौं जुन एपको प्रेरणाको रूपमा काम गर्यो।
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
LangChain को मोडेल बयान निर्माण गर्न प्रयोग गरिएको थियो। प्रयोगकर्तालाई यस श्रृंखलाको लागि टेम्प्लेट प्रयोग गरेर कथन उत्पादन गर्नका लागि बनाइएका अनुमानहरूको सूची सिर्जना गर्ने जिम्मेवारी दिइएको छ। - बाट आउटपुटमा आधारित
question_chain
रassumptions_chain
, कोfact_checker_chain
बुलेट बिन्दुहरूको रूपमा दावीहरूको सूची उत्पन्न गर्दछ। दावीहरू प्रयोग गरेर उत्पादन गरिन्छOpenAI
मोडेल रLLMChain
LangChain बाट। प्रयोगकर्तालाई प्रत्येक दाबी सही वा गलत छ कि छैन भनेर निर्धारण गर्ने र त्यसका लागि औचित्य प्रदान गर्ने जिम्मेवारी दिइएको छ। - यो
answer_chain
बाट आउटपुटहरू प्रयोग गर्दछquestion_chain
,assumptions_chain
, रfact_checker_chain
अघिल्लो चेनहरू द्वारा उत्पादित डाटा प्रयोग गरेर प्रयोगकर्ताको प्रश्नको जवाफ सिर्जना गर्न इनपुटहरूको रूपमा। यस श्रृंखलाको लागि टेम्प्लेटले प्रयोगकर्ताले सिर्जना गरिएका तथ्यहरू प्रयोग गरेर पहिलो प्रश्नको जवाफ दिन अनुरोध गर्दछ। - अघिल्लो चेनहरू द्वारा उत्पादित जानकारीको आधारमा प्रयोगकर्ताको सोधपुछको अन्तिम प्रतिक्रिया प्रदान गर्न, हामी यी चेनहरूलाई समग्र श्रृंखलामा एकीकृत गर्छौं। चेनहरू पूरा भएपछि, हामी प्रयोग गर्दछौं
st.success()
प्रयोगकर्तालाई समाधान देखाउन।
निष्कर्ष
हामी प्रयोग गरेर थप जटिल पाइपलाइनहरू सिर्जना गर्न विभिन्न भाषा मोडेल कार्यहरू एकसाथ जोड्न सक्छौं SimpleSequentialChain
LangChain को मोड्युल। च्याटबटहरू, प्रश्न-उत्तर प्रणालीहरू, र भाषा अनुवाद उपकरणहरू सहित NLP अनुप्रयोगहरूको विस्तृत विविधताका लागि, यो धेरै उपयोगी हुन सक्छ।
LangChain को प्रतिभा अमूर्त गर्न को लागी यसको क्षमता मा पाइन्छ, जसले प्रयोगकर्तालाई भाषा मोडलिङ को विशिष्टता को सट्टा वर्तमान मुद्दा मा ध्यान केन्द्रित गर्न सक्षम बनाउँछ।
LangChain ले पूर्व-प्रशिक्षित मोडेलहरू र टेम्प्लेटहरूको चयन प्रस्ताव गरेर परिष्कृत भाषा मोडेलहरू थप प्रयोगकर्ता-अनुकूल बनाउने प्रक्रिया बनाउँछ।
यसले तपाईलाई भाषा मोडेलहरूलाई आफ्नै डेटा प्रयोग गरेर फाइन-ट्यून गर्ने विकल्प दिन्छ, भाषा मोडेलहरूलाई अनुकूलन गर्न सरल बनाउँछ। यसले थप सटीक, डोमेन-विशिष्ट मोडेलहरूको विकासलाई सक्षम बनाउँछ जुन, दिइएको कामको लागि, प्रशिक्षित मोडेलहरू भन्दा राम्रो हुन्छ।
यो SimpleSequentialChain
LangChain को मोड्युल र अन्य सुविधाहरूले यसलाई छिटो विकास र परिष्कृत NLP प्रणालीहरू प्रयोग गर्नको लागि प्रभावकारी उपकरण बनाउँछ।
जवाफ छाड्नुस्