LangChain е најсовремена и робусна алатка развиена за да ја искористи моќта на големите јазични модели (LLM).
Овие LLM поседуваат извонредни способности и можат ефикасно да се справат со широк спектар на задачи. Сепак, важно е да се забележи дека нивната сила лежи во нивната општа природа, а не во длабинската експертиза на доменот. Нејзината популарност рапидно расте по воведувањето на GPT-4.
Додека LLM се одлични во справувањето со различни задачи, тие може да се соочат со ограничувања кога станува збор за обезбедување конкретни одговори или справување со задачи кои бараат длабоко познавање на доменот. Размислете, на пример, да користите LLM за да одговорите на прашања или да извршувате задачи во специјализирани области како медицина или право.
Додека LLM сигурно може да одговори на општите прашања за овие области, може да се бори да понуди подетални или нијансирани одговори кои бараат специјализирано знаење или експертиза.
Тоа е затоа што LLM се обучени за огромни количини текстуални податоци од различни извори, овозможувајќи им да научат обрасци, да го разберат контекстот и да генерираат кохерентни одговори. Сепак, нивната обука вообичаено не вклучува стекнување знаење специфично за домен или специјализирано во иста мера како и човечките експерти во тие области.
Затоа, иако LangChain, во врска со LLMs, може да биде непроценлива алатка за широк опсег на задачи, важно е да се препознае дека експертизата во длабок домен сè уште може да биде неопходна во одредени ситуации. Човечките експерти со специјализирано знаење можат да ја обезбедат потребната длабочина, нијансираното разбирање и увидите специфични за контекстот што може да бидат надвор од можностите само на LLM.
Ние би ве советувале да ги погледнете документите на LangChain или GitHub складиште за потемелно разбирање на неговите типични случаи на употреба. Силно се препорачува да се добие поголема слика за овој пакет.
Како работи?
За да ја разбереме целта и работата на LangChain, да разгледаме практичен пример. Свесни сме дека GPT-4 има импресивно општо знаење и може да обезбеди сигурни одговори на широк опсег на прашања.
Меѓутоа, што ако сакаме конкретни информации од нашите сопствени податоци, како личен документ, книга, PDF-датотека или комерцијална база на податоци?
LangChain ни овозможува да поврземе a голем јазичен модел како GPT-4 на нашите сопствени извори на податоци. Тоа оди подалеку од едноставно вметнување парче текст во интерфејс за разговор. Наместо тоа, можеме да упатуваме цела база на податоци исполнета со наши податоци.
Откако ќе ги добиеме саканите информации, LangChain може да ни помогне во преземањето конкретни активности. На пример, можеме да му наложиме да испрати е-пошта што содржи одредени детали.
За да го постигнеме ова, следиме пристап на гасоводот користејќи LangChain. Прво, го земаме документот што го сакаме јазичен модел да се повикува и да се подели на помали парчиња. Овие парчиња потоа се складираат како вградување, кои се векторски претстави на текстот, во векторска база на податоци.
Со ова поставување, можеме да изградиме апликации за јазичен модел што следат стандардна линија: корисникот поставува првично прашање, кое потоа се испраќа до јазичниот модел. Векторската репрезентација на прашањето се користи за да се изврши пребарување на сличност во Векторската база на податоци, при што се вадат соодветните делови од информации.
Овие делови потоа се враќаат на јазичниот модел, овозможувајќи му да даде одговор или да ја преземе саканата акција.
LangChain го олеснува развојот на апликации кои се свесни за податоци, бидејќи можеме да ги повикуваме нашите сопствени податоци во векторска продавница, и автентични, бидејќи тие можат да преземаат дејства што не одговараат на прашања. Т
тој отвора мноштво случаи за практична употреба, особено за лична асистенција, каде што голем јазичен модел може да се справи со задачи како што се резервации на летови, трансфер на пари или помагање во даночни работи.
Дополнително, импликациите за изучување и учење на нови предмети се значајни, бидејќи јазичниот модел може да упатува на цела наставна програма и да го забрза процесот на учење. Кодирањето, анализата на податоците и науката за податоци, исто така, се очекува да бидат под големо влијание од овие достигнувања.
Една од највозбудливите изгледи е поврзувањето на големите јазични модели со постоечките податоци на компанијата, како што се информациите за клиентите или податоците за маркетингот. Оваа интеграција со напредни API како Meta's API или API на Google ветува експоненцијален напредок во аналитиката на податоци и науката за податоци.
Како да изградите веб-страница (демо)
Во моментов, Langchain е достапен како Python и JavaScript пакети.
Можеме да создадеме демонстративна веб-апликација користејќи Streamlit, LangChain и OpenAI GPT-3 моделот за имплементирање на концептот LangChain.
Но, прво, мора да инсталираме неколку зависности, вклучувајќи ги Streamlit, LangChain и OpenAI.
Предуслови
Streamlit: Популарен Python пакет за креирање веб-апликации поврзани со науката за податоци
OpenAI: Потребен е пристап до јазичниот модел GPT-3 на OpenAI.
За да ги инсталирате овие зависности, користете ги следните команди во 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
како влез. На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 го прават ефикасна алатка за брзо развивање и имплементирање на софистицирани НЛП системи.
Оставете Одговор