LangChain як абзори муосир ва мустаҳкамест, ки барои истифода бурдани қудрати моделҳои забонҳои калон (LLMs) таҳия шудааст.
Ин LLMҳо дорои қобилиятҳои назаррас мебошанд ва метавонанд як қатор вазифаҳоро самаранок ҳал кунанд. Аммо, қайд кардан муҳим аст, ки қувваи онҳо дар табиати умумии онҳо вобаста аст, на таҷрибаи амиқи домен. Маъруфияти он пас аз ҷорӣ шудани GPT-4 босуръат афзоиш ёфт.
Гарчанде ки LLMҳо дар ҳалли вазифаҳои гуногун бартарӣ доранд, онҳо метавонанд ҳангоми пешниҳоди ҷавобҳои мушаххас ё ҳалли вазифаҳое, ки дониши амиқи доменро талаб мекунанд, ба маҳдудиятҳо дучор шаванд. Масалан, истифодаи LLM-ро барои ҷавоб додан ба саволҳо ё иҷрои вазифаҳо дар соҳаҳои махсус ба монанди тиб ё ҳуқуқ баррасӣ кунед.
Гарчанде ки LLM албатта метавонад ба дархостҳои умумӣ дар бораи ин соҳаҳо посух диҳад, он метавонад барои пешниҳоди ҷавобҳои муфассал ё нозукие, ки дониш ё таҷрибаи махсусро талаб мекунад, мубориза барад.
Сабаб дар он аст, ки LLMҳо дар миқдори зиёди маълумоти матнӣ аз сарчашмаҳои гуногун таълим дода мешаванд, ки ба онҳо имкон медиҳанд, ки намунаҳоро омӯзанд, контекстро фаҳманд ва посухҳои мувофиқро тавлид кунанд. Аммо, омӯзиши онҳо маъмулан ба даст овардани донишҳои мушаххас ё махсусро дар бар намегирад, ки ба ҳамон дараҷае, ки коршиносони инсонӣ дар ин соҳаҳо доранд.
Аз ин рӯ, дар ҳоле, ки LangChain дар якҷоягӣ бо LLMҳо метавонад як воситаи бебаҳо барои доираи васеи вазифаҳо бошад, муҳим аст, ки дарк кардан мумкин аст, ки таҷрибаи амиқи домен дар ҳолатҳои муайян ҳанӯз зарур бошад. Коршиносони инсонӣ, ки дорои донишҳои махсус мебошанд, метавонанд амиқ, фаҳмиши нозуки ва фаҳмишҳои мушаххаси контекстро таъмин кунанд, ки метавонанд танҳо аз имконоти LLM берун бошанд.
Мо маслиҳат медиҳем, ки ба ҳуҷҷатҳои LangChain нигаред ё GitHub репозиторий барои фаҳмиши амиқтари ҳолатҳои истифодаи маъмулии он. Тавсия дода мешавад, ки тасвири калонтари ин бастаро гиред.
Чӣ кор мекунад?
Барои фаҳмидани ҳадаф ва кори LangChain, биёед як мисоли амалиро дида бароем. Мо медонем, ки GPT-4 дорои маълумоти умумии таъсирбахш аст ва метавонад ба доираи васеи саволҳо ҷавобҳои боэътимод диҳад.
Аммо, агар мо маълумоти мушаххасро аз маълумоти шахсии худ, ба монанди ҳуҷҷати шахсӣ, китоб, файли PDF ё пойгоҳи додаи хусусӣ бихоҳем?
LangChain ба мо имкон медиҳад, ки a модели забони калон ба монанди GPT-4 ба манбаъҳои маълумотҳои худи мо. Он аз танҳо гузоштани порчаи матн ба интерфейси чат фаротар аст. Ба ҷои ин, мо метавонем ба тамоми махзани маълумоте, ки бо маълумоти шахсии мо пур шудааст, истинод кунем.
Вақте ки мо маълумоти дилхоҳро ба даст меорем, LangChain метавонад ба мо дар андешидани амалҳои мушаххас кӯмак расонад. Масалан, мо метавонем ба он дастур диҳем, ки паёми электронии дорои тафсилоти муайянро фиристад.
Барои ноил шудан ба ин, мо бо истифода аз LangChain усули қубурро риоя мекунем. Аввалан, мо ҳуҷҷатеро, ки мо мехоҳем, мегирем модели забон истинод кардан ва онро ба қисмҳои хурдтар тақсим кардан. Ин порчаҳо пас аз он ҳамчун дохилкунӣ нигоҳ дошта мешаванд, ки онҳо ҳастанд Намоишҳои вектории матн, дар пойгоҳи додаҳои векторӣ.
Бо ин насб, мо метавонем барномаҳои модели забониро, ки аз лӯлаи стандартӣ пайравӣ мекунанд, созем: корбар саволи аввалро медиҳад, ки баъдан ба модели забон фиристода мешавад. Намоиши вектории савол барои анҷом додани ҷустуҷӯи шабоҳат дар пойгоҳи додаҳои векторӣ бо дарёфти қисмҳои дахлдори иттилоот истифода мешавад.
Сипас ин қисмҳо ба модели забон бармегарданд ва ба он имкон медиҳад, ки ҷавоб диҳад ё амали дилхоҳро анҷом диҳад.
LangChain ба таҳияи барномаҳое мусоидат мекунад, ки аз маълумот огоҳанд, зеро мо метавонем маълумоти шахсии худро дар як мағозаи векторӣ истинод кунем ва аслӣ, зеро онҳо метавонанд берун аз посух додан ба саволҳо амал кунанд. Т
вай шумораи зиёди ҳолатҳои истифодаи амалиро мекушояд, бахусус дар кӯмаки шахсӣ, ки модели забони калон метавонад вазифаҳоро ба мисли фармоиши парвозҳо, интиқоли пул ё кӯмак дар масъалаҳои марбут ба андоз ҳал кунад.
Илова бар ин, оқибатҳои омӯзиш ва омӯзиши фанҳои нав хеле муҳиманд, зеро модели забонӣ метавонад ба тамоми барномаи таълимӣ муроҷиат кунад ва раванди омӯзишро суръат бахшад. Интизор меравад, ки рамзгузорӣ, таҳлили додаҳо ва илми додаҳо низ аз ин пешрафтҳо таъсири калон хоҳанд дошт.
Яке аз дурнамои ҷолибтарин пайваст кардани моделҳои забони калон ба маълумоти мавҷудаи ширкат, ба монанди маълумоти муштариён ё маълумоти маркетингӣ мебошад. Ин ҳамгироӣ бо API-ҳои пешрафта ба монанди API-и Meta ё API-и Google пешравии экспоненсиалӣ дар таҳлили додаҳо ва илми маълумотро ваъда медиҳад.
Чӣ тавр сохтани вебсайт (демо)
Дар айни замон, Langchain ҳамчун бастаҳои Python ва JavaScript дастрас аст.
Мо метавонем як барномаи намоишии Web-ро бо истифода аз Streamlit, LangChain ва модели OpenAI GPT-3 барои татбиқи консепсияи LangChain эҷод кунем.
Аммо аввал, мо бояд якчанд вобастагӣ насб кунем, аз ҷумла Streamlit, LangChain ва OpenAI.
Пеш аз мӯҳлат
Ҷараён: Бастаи маъмули Python барои эҷоди барномаҳои веби марбут ба илм
OpenAI: Дастрасӣ ба модели забони GPT-3-и OpenAI лозим аст.
Барои насб кардани ин вобастагӣ, фармонҳои зеринро дар cmd истифода баред:
pip install streamlit
pip install langchain
pip install openai
Бастаҳои воридотӣ
Мо аз воридоти бастаҳои зарурӣ ба монанди OpenAI, LangChain ва Streamlit оғоз мекунем. Занҷирҳои модели забонии мо бо истифода аз се синф аз LangChain муайян ва иҷро карда мешаванд: LLMCain, 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 мегардонанд.
Дин ва мазҳаб