LangChain یو عصري او قوي وسیله ده چې د لوی ژبې ماډلونو (LLMs) ځواک کارولو لپاره رامینځته شوې.
دا LLMs د پام وړ وړتیاوې لري او کولی شي په اغیزمنه توګه د دندو پراخه لړۍ حل کړي. په هرصورت، دا مهمه ده چې یادونه وکړو چې د دوی ځواک د ژورې ډومین تخصص پرځای د دوی په عمومي طبیعت کې دی. د دې شهرت د GPT-4 معرفي کولو راهیسې په چټکۍ سره وده کړې.
پداسې حال کې چې LLMs د مختلف دندو په اداره کولو کې عالي دي ، دوی ممکن د محدودیتونو سره مخ شي کله چې د ځانګړي ځوابونو چمتو کولو یا د دندو سره مبارزه کولو خبره راځي چې د ډومین ژورې پوهې ته اړتیا لري. په پام کې ونیسئ، د بیلګې په توګه، د پوښتنو ځوابولو لپاره د LLM کارول یا په ځانګړو برخو لکه طب یا قانون کې دندې ترسره کول.
پداسې حال کې چې LLM کولی شي د دې ساحو په اړه عمومي پوښتنو ته ځواب ووایي، دا ممکن د نورو مفصلو یا لنډ ځوابونو وړاندیز کولو لپاره مبارزه وکړي چې ځانګړي پوهه یا تخصص ته اړتیا لري.
دا ځکه چې LLMs د متنوع سرچینو څخه د متن ډیټا په پراخه کچه روزل شوي ، دوی ته وړتیا ورکوي چې نمونې زده کړي ، شرایط درک کړي او همغږي ځوابونه رامینځته کړي. په هرصورت، د دوی روزنه په عمومي ډول د ډومین ځانګړي یا ځانګړي پوهې استملاک د ورته حد پورې نه لري چې په دې برخو کې د بشري متخصصینو په څیر وي.
له همدې امله، په داسې حال کې چې LangChain، د LLMs سره په ګډه، د پراخو دندو لپاره ارزښتناکه وسیله کیدی شي، دا مهمه ده چې دا وپیژندل شي چې ژوره ډومین تخصص ممکن په ځینو شرایطو کې اړین وي. د تخصصي پوهې سره بشري متخصصین کولی شي اړین ژوره، دقیق پوهاوی، او د شرایطو ځانګړي بصیرت چمتو کړي چې ممکن یوازې د LLMs وړتیاو څخه بهر وي.
موږ د LangChain اسنادو ته د کتلو مشوره ورکوو GitHub د دې د عادي کارونې قضیې د لا بشپړې پوهې لپاره ذخیره. دا په کلکه سپارښتنه کیږي چې د دې بنډل لوی عکس ترلاسه کړئ.
دا څنګه کار کوی؟
د LangChain هدف او کار پوهیدو لپاره، راځئ چې یو عملي مثال په پام کې ونیسو. موږ پوهیږو چې GPT-4 اغیزمن عمومي پوهه لري او کولی شي ډیری پوښتنو ته د باور وړ ځوابونه چمتو کړي.
که څه هم، که موږ د خپل ډیټا څخه ځانګړي معلومات غواړو، لکه شخصي سند، کتاب، د PDF فایل، یا د ملکیت ډیټابیس؟
LangChain موږ ته اجازه راکوي چې وصل کړو د ژبې لوی ماډل لکه GPT-4 زموږ د معلوماتو سرچینو ته. دا په ساده ډول د چیٹ انٹرفیس کې د متن یوه ټوټه پیسټ کولو څخه بهر ځي. پرځای یې، موږ کولی شو یو بشپړ ډیټابیس حواله کړو چې زموږ د خپلو معلوماتو څخه ډک شوی.
یوځل چې موږ مطلوب معلومات ترلاسه کړو، LangChain کولی شي موږ سره د ځانګړو اقداماتو په ترسره کولو کې مرسته وکړي. د مثال په توګه، موږ کولی شو دا لارښوونه وکړو چې یو بریښنالیک واستوئ چې ځینې توضیحات لري.
د دې ترلاسه کولو لپاره، موږ د LangChain په کارولو سره د پایپ لاین طریقه تعقیبوو. لومړی، موږ هغه سند اخلو چې موږ یې غواړو د ژبې ماډل حواله کول او په کوچنیو ټوټو ویشل. دا ټوټې بیا د سرایتونو په توګه ساتل کیږي، کوم چې دي د متن ویکتور نمایشونه، په ویکتور ډیټابیس کې.
د دې ترتیب سره، موږ کولی شو د ژبې ماډل غوښتنلیکونه جوړ کړو چې یو معیاري پایپ لاین تعقیب کړي: یو کاروونکي لومړنۍ پوښتنه کوي، چې بیا د ژبې ماډل ته لیږل کیږي. د پوښتنې ویکتور نمایندګۍ د ویکتور ډیټابیس کې د ورته لټون ترسره کولو لپاره کارول کیږي، د معلوماتو اړونده برخې بیرته ترلاسه کوي.
دا ټوټې بیا د ژبې ماډل ته ورکول کیږي، دا توان ورکوي چې ځواب چمتو کړي یا مطلوب اقدام وکړي.
LangChain د غوښتنلیکونو پراختیا اسانه کوي چې د معلوماتو څخه خبر وي، ځکه چې موږ کولی شو خپل معلومات په ویکتور پلورنځي کې حواله کړو، او مستند وي، ځکه چې دوی کولی شي د پوښتنو ځوابونو هاخوا اقدامات وکړي. ټ
هغه د عملي کارونې ډیری قضیې خلاصوي ، په ځانګړي توګه په شخصي مرستې کې ، چیرې چې د ژبې لوی ماډل کولی شي دندې ترسره کړي لکه د الوتنې بک کول ، د پیسو لیږد ، یا د مالیې پورې اړوند مسلو کې مرسته.
برسیره پردې، د نویو مضامینو د مطالعې او زده کړې اغیزې د پام وړ دي، ځکه چې د ژبې ماډل کولی شي ټول نصاب ته مراجعه وکړي او د زده کړې بهیر ګړندی کړي. کوډ کول، د معلوماتو تحلیل، او د معلوماتو ساینس هم تمه کیږي چې د دې پرمختګونو لخوا خورا اغیزمن شي.
یو له خورا زړه راښکونکو امکاناتو څخه د لوی ژبې ماډلونه د موجوده شرکت ډیټا سره نښلول دي ، لکه د پیرودونکي معلومات یا د بازار موندنې ډیټا. د پرمختللي APIs سره دا ادغام لکه د میټا API یا د ګوګل API د ډیټا تحلیلونو او ډیټا ساینس کې د پام وړ پرمختګ ژمنه کوي.
څنګه یو ویب پاڼه جوړ کړئ (ډیمو)
اوس مهال، Langchain د Python او JavaScript کڅوړو په توګه شتون لري.
موږ کولی شو د لینګ چین مفهوم پلي کولو لپاره د Streamlit، LangChain، او OpenAI GPT-3 ماډل په کارولو سره د مظاهرې ویب اپلیکیشن جوړ کړو.
مګر لومړی، موږ باید یو څو انحصارونه نصب کړو، پشمول Streamlit، LangChain، او OpenAI.
لومړني اړتیاوې
سټریمیټ: د ډیټا ساینس پورې اړوند ویب غوښتنلیکونو رامینځته کولو لپاره د Python مشهور کڅوړه
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
د مخکینۍ پای ویجټونه
موږ د ساده Streamlit ترکیب په کارولو سره د یو څو اړوندو معلوماتو سره اپلیکیشن ترتیب کړ:
# 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 سیسټمونو ګړندي پراختیا او پلي کولو لپاره مؤثره وسیله ګرځوي.
یو ځواب ورکړئ ووځي