LangChain ir moderns un izturīgs rīks, kas izstrādāts, lai izmantotu lielo valodu modeļu (LLM) jaudu.
Šiem LLM ir ievērojamas spējas, un tie var efektīvi risināt plašu uzdevumu klāstu. Tomēr ir svarīgi atzīmēt, ka to spēks ir to vispārējā būtībā, nevis padziļinātā jomā. Kopš GPT-4 ieviešanas tā popularitāte ir strauji augusi.
Lai gan LLM ir izcili dažādu uzdevumu veikšanā, viņiem var rasties ierobežojumi, sniedzot konkrētas atbildes vai risinot uzdevumus, kuriem nepieciešamas padziļinātas zināšanas jomā. Apsveriet, piemēram, iespēju izmantot LLM, lai atbildētu uz jautājumiem vai veiktu uzdevumus tādās specializētās jomās kā medicīna vai jurisprudence.
Lai gan LLM noteikti var atbildēt uz vispārīgiem jautājumiem par šīm jomām, tai var būt grūtības piedāvāt detalizētākas vai niansētākas atbildes, kurām nepieciešamas īpašas zināšanas vai zināšanas.
Tas ir tāpēc, ka LLM ir apmācīti par lielu teksta datu apjomu no dažādiem avotiem, ļaujot viņiem apgūt modeļus, izprast kontekstu un radīt saskaņotas atbildes. Tomēr viņu apmācība parasti neietver konkrētai jomai specifisku vai specializētu zināšanu apguvi tādā pašā mērā kā cilvēku eksperti šajās jomās.
Tāpēc, lai gan LangChain kopā ar LLM var būt nenovērtējams rīks plašam uzdevumu klāstam, ir svarīgi atzīt, ka noteiktās situācijās joprojām var būt nepieciešamas dziļas zināšanas par domēnu. Cilvēku eksperti ar specializētām zināšanām var sniegt nepieciešamo dziļumu, niansētu izpratni un kontekstam specifisku ieskatu, kas varētu būt ārpus LLM iespējām.
Mēs iesakām apskatīt LangChain dokumentus vai GitHub repozitoriju, lai labāk izprastu tās tipiskos lietošanas gadījumus. Ir ļoti ieteicams iegūt lielāku priekšstatu par šo komplektu.
Kā tas darbojas?
Lai saprastu LangChain mērķi un darbu, apskatīsim praktisku piemēru. Mēs apzināmies, ka GPT-4 ir iespaidīgas vispārējās zināšanas un tas var sniegt uzticamas atbildes uz dažādiem jautājumiem.
Tomēr ko darīt, ja mēs vēlamies iegūt konkrētu informāciju no mūsu pašu datiem, piemēram, personas dokumenta, grāmatas, PDF faila vai patentētas datu bāzes?
LangChain ļauj mums savienot a liels valodas modelis piemēram, GPT-4 mūsu pašu datu avotiem. Tas pārsniedz teksta fragmenta ielīmēšanu tērzēšanas saskarnē. Tā vietā mēs varam atsaukties uz visu datu bāzi, kas piepildīta ar mūsu pašu datiem.
Kad esam ieguvuši vajadzīgo informāciju, LangChain var mums palīdzēt veikt konkrētas darbības. Piemēram, mēs varam uzdot tai nosūtīt e-pastu ar noteiktu informāciju.
Lai to panāktu, mēs izmantojam konveijera pieeju, izmantojot LangChain. Pirmkārt, mēs paņemam dokumentu, kuru mēs vēlamies valodas modelis lai atsauktos un sadalītu to mazākos gabalos. Šie gabali pēc tam tiek saglabāti kā ieguljumi, kas ir teksta vektora attēlojums vektoru datu bāzē.
Izmantojot šo iestatījumu, mēs varam izveidot valodas modeļa lietojumprogrammas, kas atbilst standarta konveijeram: lietotājs uzdod sākotnējo jautājumu, kas pēc tam tiek nosūtīts valodas modelim. Jautājuma vektora attēlojums tiek izmantots, lai vektoru datu bāzē veiktu līdzības meklēšanu, izgūstot atbilstošos informācijas gabalus.
Pēc tam šie fragmenti tiek atgriezti valodas modelī, ļaujot tam sniegt atbildi vai veikt vēlamo darbību.
LangChain atvieglo tādu lietojumprogrammu izstrādi, kas ir informētas par datiem, jo mēs varam atsaukties uz saviem datiem vektoru krātuvē, un autentiskas, jo tās var veikt darbības, kas nav saistītas ar atbildēm uz jautājumiem. T
tas paver daudzus praktiskus lietojuma gadījumus, jo īpaši personīgās palīdzības jomā, kur ar lielu valodas modeli var tikt galā ar tādiem uzdevumiem kā lidojumu rezervēšana, naudas pārskaitīšana vai palīdzība ar nodokļiem saistītos jautājumos.
Turklāt ietekme uz jaunu priekšmetu mācīšanos un apgūšanu ir nozīmīga, jo valodas modelis var atsaukties uz visu mācību programmu un paātrināt mācību procesu. Paredzams, ka šie sasniegumi lielā mērā ietekmēs arī kodēšanu, datu analīzi un datu zinātni.
Viena no aizraujošākajām perspektīvām ir lielu valodu modeļu savienošana ar esošajiem uzņēmuma datiem, piemēram, klientu informāciju vai mārketinga datiem. Šī integrācija ar uzlabotām API, piemēram, Meta API vai Google API, sola eksponenciālu progresu datu analītikas un datu zinātnes jomā.
Kā izveidot tīmekļa lapu (demonstrācija)
Pašlaik Langchain ir pieejams kā Python un JavaScript pakotnes.
Mēs varam izveidot demonstrācijas Web App, izmantojot Streamlit, LangChain un OpenAI GPT-3 modeli, lai ieviestu LangChain koncepciju.
Bet vispirms mums ir jāinstalē dažas atkarības, tostarp Streamlit, LangChain un OpenAI.
Priekšnosacījumi
Plūsmīgs: Populāra Python pakotne ar datu zinātni saistītu tīmekļa lietojumprogrammu izveidei
OpenAI: Nepieciešama piekļuve OpenAI GPT-3 valodas modelim.
Lai instalētu šīs atkarības, izmantojiet šādas komandas cmd:
pip install streamlit
pip install langchain
pip install openai
Importēt pakotnes
Mēs sākam ar nepieciešamo pakotņu, piemēram, OpenAI, LangChain un Streamlit, importēšanu. Mūsu valodu modeļu ķēdes ir definētas un izpildītas, izmantojot trīs LangChain klases: LLMChain, SimpleSequentialChain un PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Pamata iestatīšana
Pēc tam mūsu projekta strukturālā bāze tika izveidota, izmantojot Streamlit sintaksi. Mēs piešķīrām lietotnei nosaukumu “Kas ir patiesība: vienkāršas secīgas ķēdes izmantošana” un iekļāvām atzīmes saiti uz GitHub repozitoriju, kas kalpoja kā lietotnes iedvesma.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Priekšgala logrīki
Mēs iestatījām lietotni ar nelielu informāciju, izmantojot vienkāršu Streamlit sintaksi:
# 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")
Lai pievienotu priekšgala logrīkus
Turklāt mums ir jānodrošina ievades logrīks, lai lietotāji varētu ievadīt visus jautājumus.
# 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?",
)
Viss pabeigts! Ķēdes ir izveidotas un darbojas!
Mēs nodarbinām dažādas darbības ķēdes kopā ar SimpleSequentialChain
lai atbildētu uz lietotāja vaicājumu. Ķēdes tiek veiktas šādā secībā, kad lietotājs izvēlas "Tell me about it"
Poga:
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
: kas ir pirmais solis mūsu konveijerā, saņem lietotāja jautājumu kā ievadi un izvadi. Lietotāja vaicājums kalpo kā ķēdes veidne.- Pamatojoties uz paziņojumu, kas saistīts ar jautājumu,
assumptions_chain
ģenerē pieņēmumu aizzīmju sarakstu, izmantojot izvadi noquestion_chain
kā ievade. TheLLMChain
unOpenAI
Paziņojuma izveidošanai tika izmantots LangChain modelis. Lietotājam ir uzdots izveidot sarakstu ar pieņēmumiem, kas tika veikti, lai izveidotu paziņojumu, izmantojot šīs ķēdes veidni. - Pamatojoties uz rezultātiem no
question_chain
unassumptions_chain
, tadfact_checker_chain
ģenerē apgalvojumu sarakstu aizzīmju veidā. Pretenzijas ir sagatavotas, izmantojotOpenAI
modelis unLLMChain
no LangChain. Lietotājam ir pienākums noteikt, vai katrs apgalvojums ir precīzs vai nepareizs, un sniegt pamatojumu tiem, kas ir. - Jūsu darbs IR Klientu apkalpošana
answer_chain
izmanto izejas noquestion_chain
,assumptions_chain
, unfact_checker_chain
kā ievadi, lai izveidotu atbildi uz lietotāja jautājumu, izmantojot iepriekšējo ķēžu radītos datus. Šīs ķēdes veidne pieprasa, lai lietotājs atbildētu uz pirmo vaicājumu, izmantojot izveidotos faktus. - Lai sniegtu galīgo atbildi uz lietotāja pieprasījumu, pamatojoties uz informāciju, ko radījušas iepriekšējās ķēdes, mēs integrējam šīs ķēdes kopējā ķēdē. Pēc tam, kad ķēdes ir pabeigtas, mēs izmantojam
st.success()
lai parādītu lietotājam risinājumu.
Secinājumi
Mēs varam vienkārši savienot dažādas valodas modeļa darbības, lai izveidotu sarežģītākus cauruļvadus, izmantojot SimpleSequentialChain
LangChain modulis. Tas var būt ļoti noderīgi dažādām NLP lietojumprogrammām, tostarp tērzēšanas robotiem, jautājumu un atbilžu sistēmām un valodu tulkošanas rīkiem.
LangChain spožums slēpjas tā spējā abstrakti, kas ļauj lietotājam koncentrēties uz aktuālo problēmu, nevis valodas modelēšanas specifiku.
LangChain padara sarežģītu valodu modeļu izveides procesu lietotājam draudzīgāku, piedāvājot iepriekš apmācītus modeļus un veidņu izlasi.
Tas sniedz jums iespēju precīzi noregulēt valodu modeļus, izmantojot to datus, padarot valodu modeļu pielāgošanu vienkāršu. Tas ļauj izstrādāt precīzākus, jomai specifiskus modeļus, kas konkrētajā darbā pārspēj apmācītos modeļus.
Jūsu darbs IR Klientu apkalpošana SimpleSequentialChain
modulis un citas LangChain funkcijas padara to par efektīvu rīku, lai ātri izstrādātu un ieviestu sarežģītas NLP sistēmas.
Atstāj atbildi