LangChain - гэта перадавы і надзейны інструмент, распрацаваны для выкарыстання магутнасці вялікіх моўных мадэляў (LLM).
Гэтыя LLM валодаюць выдатнымі магчымасцямі і могуць эфектыўна вырашаць шырокі спектр задач. Аднак важна адзначыць, што іх сіла заключаецца ў іх агульным характары, а не ў глыбокім веданні вобласці. Яго папулярнасць хутка ўзрасла пасля ўвядзення GPT-4.
Нягледзячы на тое, што магістранты выдатна спраўляюцца з рознымі задачамі, яны могуць сутыкнуцца з абмежаваннямі, калі справа даходзіць да канкрэтных адказаў або рашэння задач, якія патрабуюць глыбокіх ведаў у галіне. Разгледзім, напрыклад, выкарыстанне 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.
Мы можам стварыць дэманстрацыйнае вэб-прыкладанне з выкарыстаннем Streamlit, LangChain і мадэлі OpenAI GPT-3 для рэалізацыі канцэпцыі LangChain.
Але спачатку мы павінны ўсталяваць некалькі залежнасцей, у тым ліку 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
Франтальныя віджэты
Мы наладзілі праграму з невялікай колькасцю адпаведнай інфармацыі, выкарыстоўваючы просты сінтаксіс 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. Карыстальніку даручана вызначыць, ці з'яўляецца кожная прэтэнзія дакладнай ці няправільнай, і даць абгрунтаванне тых, што сцвярджаюць. - ,en
answer_chain
выкарыстоўвае выхады з стquestion_chain
,assumptions_chain
, іfact_checker_chain
у якасці ўваходных дадзеных для стварэння адказу на пытанне карыстальніка з выкарыстаннем даных, створаных папярэднімі ланцужкамі. Шаблон для гэтай ланцужкі патрабуе, каб карыстальнік адказваў на першы запыт, выкарыстоўваючы факты, якія былі створаны. - Каб даць канчатковы адказ на запыт карыстальніка на аснове інфармацыі, атрыманай папярэднімі ланцужкамі, мы інтэгруем гэтыя ланцужкі ў агульны ланцужок. Пасля таго, як ланцужкі скончаны, выкарыстоўваем
st.success()
каб паказаць карыстальніку рашэнне.
заключэнне
Мы можам проста аб'яднаць дзеянні розных моўных мадэляў для стварэння больш складаных канвеераў з дапамогай SimpleSequentialChain
модуль LangChain. Для шырокага спектру прыкладанняў NLP, у тым ліку чат-ботаў, сістэм пытанняў і адказаў і інструментаў моўнага перакладу, гэта можа быць вельмі карысна.
Бляск LangChain заключаецца ў яго здольнасці абстрагавацца, што дазваляе карыстальніку засяродзіцца на бягучай праблеме, а не на асаблівасцях моўнага мадэлявання.
LangChain робіць працэс стварэння складаных моўных мадэляў больш зручным, прапаноўваючы падрыхтаваныя мадэлі і выбар шаблонаў.
Гэта дае вам магчымасць тонкай налады моўных мадэляў з выкарыстаннем іх уласных дадзеных, што дазваляе лёгка наладжваць моўныя мадэлі. Гэта дазваляе распрацоўваць больш дакладныя мадэлі, арыентаваныя на прадметную вобласць, якія для пэўнай працы пераўзыходзяць падрыхтаваныя мадэлі.
,en SimpleSequentialChain
модуль і іншыя магчымасці LangChain робяць яго эфектыўным інструментам для хуткай распрацоўкі і разгортвання складаных сістэм НЛП.
Пакінуць каментар