LangChain - үлкен тіл үлгілерінің (LLMs) қуатын пайдалану үшін әзірленген озық және сенімді құрал.
Бұл LLMs керемет мүмкіндіктерге ие және тапсырмалардың кең ауқымын тиімді шеше алады. Дегенмен, олардың күші терең домендік сараптамадан гөрі жалпы табиғатында екенін ескеру маңызды. Оның танымалдығы GPT-4 енгізілгеннен кейін тез өсті.
LLM әртүрлі тапсырмаларды орындауда жақсы болғанымен, олар нақты жауаптар беруге немесе домен туралы терең білімді қажет ететін тапсырмаларды шешуге келгенде шектеулерге тап болуы мүмкін. Мысалы, сұрақтарға жауап беру немесе медицина немесе заң сияқты мамандандырылған салалардағы тапсырмаларды орындау үшін LLM пайдалануды қарастырыңыз.
LLM осы салаларға қатысты жалпы сұрауларға жауап бере алатынымен, ол арнайы білімді немесе тәжірибені қажет ететін егжей-тегжейлі немесе нақты жауаптарды ұсынуға тырысуы мүмкін.
Себебі LLM әртүрлі көздерден алынған мәтіндік деректердің үлкен көлеміне үйретіледі, бұл оларға үлгілерді үйренуге, контекстті түсінуге және дәйекті жауаптарды жасауға мүмкіндік береді. Дегенмен, оларды оқыту әдетте осы салалардағы адам сарапшылары сияқты доменге қатысты немесе арнайы білім алуды қамтымайды.
Сондықтан, LangChain LLM-мен бірге тапсырмалардың кең ауқымы үшін баға жетпес құрал бола алатынымен, белгілі бір жағдайларда терең домендік сараптама әлі де қажет болуы мүмкін екенін мойындау маңызды. Арнайы білімі бар адам сарапшылары тек LLM мүмкіндіктерінен тыс болуы мүмкін қажетті тереңдікті, нюанстарды түсінуді және контекстке қатысты түсініктерді бере алады.
Біз LangChain құжаттарын қарауға кеңес береміз немесе GitHub оның типтік пайдалану жағдайларын толық түсіну үшін репозиторий. Бұл топтаманың үлкенірек суретін алу ұсынылады.
Бұл қалай жұмыс істейді?
LangChain мақсаты мен жұмысын түсіну үшін практикалық мысалды қарастырайық. Біз GPT-4 әсерлі жалпы білімге ие екенін және көптеген сұрақтарға сенімді жауап бере алатынын білеміз.
Дегенмен, жеке құжат, кітап, PDF файлы немесе меншікті дерекқор сияқты жеке деректерімізден нақты ақпаратты алғымыз келсе ше?
LangChain бізге қосылуға мүмкіндік береді үлкен тілдік модель GPT-4 сияқты біздің жеке деректер көздеріне. Ол жай ғана мәтін үзіндісін чат интерфейсіне қоюмен шектелмейді. Оның орнына біз өз деректерімізбен толтырылған толық дерекқорға сілтеме жасай аламыз.
Біз қажетті ақпаратты алғаннан кейін, LangChain бізге нақты әрекеттерді орындауға көмектесе алады. Мысалы, біз оған белгілі бір мәліметтерді қамтитын электрондық поштаны жіберуге нұсқау бере аламыз.
Бұған қол жеткізу үшін біз LangChain көмегімен құбыр жолын ұстанамыз. Алдымен біз қалаған құжатты аламыз тіл үлгісі сілтеме жасау және оны кішірек бөліктерге бөлу. Содан кейін бұл бөліктер ендірмелер ретінде сақталады Векторлық деректер қорындағы мәтіннің векторлық көріністері.
Бұл орнату арқылы біз стандартты конвейерді ұстанатын тіл үлгісі қолданбаларын құра аламыз: пайдаланушы бастапқы сұрақты қояды, содан кейін ол тіл үлгісіне жіберіледі. Сұрақтың векторлық көрінісі ақпараттың сәйкес бөліктерін шығарып, Векторлық дерекқорда ұқсастықты іздеу үшін пайдаланылады.
Содан кейін бұл бөліктер тіл үлгісіне қайтарылады, бұл оған жауап беруге немесе қажетті әрекетті орындауға мүмкіндік береді.
LangChain деректерден хабардар қолданбаларды әзірлеуді жеңілдетеді, өйткені біз векторлық қоймада өз деректерімізге сілтеме жасай аламыз және түпнұсқалық, өйткені олар сұрақтарға жауап беруден басқа әрекеттерді жасай алады. Т
оның көптеген практикалық қолдану жағдайларын ашады, әсіресе жеке көмекте, мұнда үлкен тіл үлгісі рейстерді брондау, ақша аудару немесе салыққа қатысты мәселелерге көмектесу сияқты тапсырмаларды орындай алады.
Сонымен қатар, жаңа пәндерді оқу мен үйренудің салдары маңызды, өйткені тілдік модель бүкіл оқу жоспарына сілтеме жасай алады және оқу процесін тездетеді. Кодтау, деректерді талдау және деректер ғылымы да осы жетістіктерге үлкен әсер етеді деп күтілуде.
Ең қызықты перспективалардың бірі үлкен тілдік үлгілерді тұтынушылар туралы ақпарат немесе маркетингтік деректер сияқты бар компания деректеріне қосу болып табылады. Meta API немесе Google API сияқты кеңейтілген API интерфейстерімен біріктіру деректер талдауы мен деректер ғылымындағы экспоненциалды прогреске уәде береді.
Веб-бетті қалай құруға болады (демо)
Қазіргі уақытта Langchain Python және JavaScript пакеттері ретінде қол жетімді.
LangChain тұжырымдамасын жүзеге асыру үшін 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 үш класы арқылы анықталады және орындалады: LLMChain, 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
Front-end виджеттері
Біз қарапайым 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
кіріс ретінде. TheLLMChain
жәнеOpenAI
мәлімдеме жасау үшін LangChain үлгісі пайдаланылды. Пайдаланушыға осы тізбектің үлгісін пайдаланып мәлімдеме жасау үшін жасалған болжамдар тізімін жасау тапсырылады. - нәтижелеріне негізделген
question_chain
жәнеassumptions_chain
,fact_checker_chain
нүктелер түріндегі бекітулер тізімін жасайды. Шағымдар көмегімен жасаладыOpenAI
модель жәнеLLMChain
LangChain сайтынан. Пайдаланушыға әрбір шағымның дұрыс немесе бұрыс екенін анықтау және сол талаптарды негіздеу міндеті жүктеледі. - The
answer_chain
шығыстарын пайдаланадыquestion_chain
,assumptions_chain
, жәнеfact_checker_chain
алдыңғы тізбектермен жасалған деректерді пайдалана отырып, пайдаланушының сұрағына жауап жасау үшін кірістер ретінде. Бұл тізбектің үлгісі пайдаланушының жасалған фактілерді пайдаланып бірінші сұрауға жауап беруін сұрайды. - Бұрынғы тізбектер шығарған ақпарат негізінде пайдаланушының сұрауына түпкілікті жауап беру үшін біз бұл тізбектерді жалпы тізбекке біріктіреміз. Тізбектер аяқталғаннан кейін біз пайдаланамыз
st.success()
пайдаланушыға шешімді көрсету үшін.
қорытынды
пайдалану арқылы күрделі конвейерлер жасау үшін әртүрлі тіл үлгісі әрекеттерін жай ғана тізбектей аламыз SimpleSequentialChain
LangChain модулі. NLP қолданбаларының кең ауқымы үшін, соның ішінде чат-боттар, сұрақ-жауап жүйелері және тілдік аударма құралдары үшін бұл өте пайдалы болуы мүмкін.
LangChain тамашалығы оның абстракциялау қабілетінде табылады, бұл пайдаланушыға тілді модельдеу ерекшеліктеріне емес, ағымдағы мәселеге назар аударуға мүмкіндік береді.
LangChain алдын ала дайындалған үлгілер мен үлгілер таңдауын ұсына отырып, күрделі тіл үлгілерін жасау процесін пайдаланушыға ыңғайлы етеді.
Ол тіл үлгілерін теңшеуді жеңілдететін жеке деректерін пайдаланып тіл үлгілерін дәл баптау мүмкіндігін береді. Бұл берілген тапсырма үшін оқытылған үлгілерден асып түсетін нақтырақ, доменге қатысты үлгілерді жасауға мүмкіндік береді.
The SimpleSequentialChain
модулі және LangChain басқа мүмкіндіктері оны күрделі NLP жүйелерін жылдам әзірлеу және орналастыру үшін тиімді құрал етеді.
пікір қалдыру