LangChain se yon zouti dènye kri ak solid devlope pou exploiter pouvwa a nan modèl gwo lang (LLMs).
LLM sa yo posede kapasite remakab epi yo ka efikasman atake yon pakèt travay. Sepandan, li enpòtan sonje ke fòs yo chita nan nati jeneral yo olye ke ekspètiz nan domèn pwofondè. Popilarite li te grandi rapidman depi entwodiksyon de GPT-4.
Pandan ke LLM yo briye nan manyen divès travay, yo ta ka fè fas a limit lè li rive bay repons espesifik oswa abòde travay ki mande konesans pwofon domèn. Konsidere, pou egzanp, itilize yon LLM pou reponn kesyon oswa fè travay nan domèn espesyalize tankou medikaman oswa lalwa.
Pandan ke LLM a ka sètènman reponn a kesyon jeneral sou domèn sa yo, li ka lite pou ofri repons plis detay oswa nuans ki bezwen konesans espesyalize oswa ekspètiz.
Sa a se paske LLM yo resevwa fòmasyon sou gwo kantite done tèks ki soti nan divès sous, sa ki pèmèt yo aprann modèl, konprann kontèks, ak jenere repons aderan. Sepandan, fòmasyon yo pa tipikman enplike nan domèn espesifik oswa akizisyon konesans espesyalize nan menm limit ak ekspè imen nan domèn sa yo.
Se poutèt sa, pandan ke LangChain, ansanm ak LLMs, kapab yon zouti anpil valè pou yon pakèt travay, li enpòtan pou rekonèt ke ekspètiz domèn gwo twou san fon ka toujou nesesè nan sèten sitiyasyon. Ekspè imen ki gen konesans espesyalize ka bay pwofondè ki nesesè yo, konpreyansyon nuans, ak konpreyansyon espesifik kontèks ki ta ka depase kapasite LLM yo poukont yo.
Nou ta konseye gade nan dokiman LangChain oswa GitHub repozitwa pou yon konpreyansyon pi konplè sou ka itilizasyon tipik li yo. Li konseye anpil pou jwenn yon foto pi gwo nan pake sa a.
Kijan li travay?
Pou konprann objektif ak travay LangChain, ann konsidere yon egzanp pratik. Nou konnen ke GPT-4 gen konesans jeneral enpresyonan epi li ka bay repons serye pou yon pakèt kesyon.
Sepandan, e si nou vle enfòmasyon espesifik ki soti nan pwòp done pa nou, tankou yon dokiman pèsonèl, liv, dosye PDF, oswa baz done propriétaires?
LangChain pèmèt nou konekte yon gwo modèl lang tankou GPT-4 nan pwòp sous done nou yo. Li ale pi lwen pase tou senpleman kole yon ti bout tèks nan yon koòdone chat. Olye de sa, nou ka fè referans a tout yon baz done plen ak pwòp done nou yo.
Yon fwa nou jwenn enfòmasyon yo vle, LangChain ka ede nou nan pran aksyon espesifik. Pou egzanp, nou ka enstwi li voye yon imèl ki gen sèten detay.
Pou reyalize sa, nou swiv yon apwòch tiyo lè l sèvi avèk LangChain. Premyèman, nou pran dokiman nou vle a modèl lang fè referans ak divize li an pi piti fragman. Mors sa yo lè sa a sere kòm embeddings, ki se reprezantasyon vektè tèks la, nan yon baz done vektè.
Avèk konfigirasyon sa a, nou ka bati aplikasyon modèl lang ki swiv yon tiyo estanda: yon itilizatè poze yon premye kesyon, ki answit voye nan modèl lang lan. Yo itilize reprezantasyon vektè kesyon an pou fè yon rechèch resanblans nan baz done vektè a, pou rekipere moso enfòmasyon ki enpòtan yo.
Lè sa a, fragman sa yo tounen nan modèl lang lan, ki pèmèt li bay yon repons oswa pran aksyon an vle.
LangChain fasilite devlopman aplikasyon ki konsyan done, kòm nou ka fè referans pwòp done nou yo nan yon magazen vektè, ak natif natal, paske yo ka pran aksyon pi lwen pase reponn kesyon yo. T
li ouvè yon multitude de ka itilizasyon pratik, patikilyèman nan asistans pèsonèl, kote yon modèl lang gwo ka okipe travay tankou anrjistreman vòl, transfere lajan, oswa ede ak zafè ki gen rapò ak taks.
Anplis de sa, enplikasyon yo pou etidye ak aprann nouvo matyè yo enpòtan, kòm yon modèl lang ka fè referans a yon pwogram antye epi akselere pwosesis aprantisaj la. Kodaj, analiz done, ak syans done yo tou espere anpil enfliyanse pa pwogrè sa yo.
Youn nan kandida ki pi enteresan se konekte modèl lang gwo ak done konpayi ki deja egziste, tankou enfòmasyon kliyan oswa done maketing. Entegrasyon sa a ak API avanse tankou API Meta oswa API Google pwomèt pwogrè eksponansyèl nan analiz done ak syans done.
Ki jan yo bati yon paj wèb (Demo)
Kounye a, Langchain disponib kòm Python ak JavaScript Packages.
Nou ka kreye yon aplikasyon Web demonstrasyon ki itilize Streamlit, LangChain, ak modèl OpenAI GPT-3 pou aplike konsèp LangChain.
Men, anvan, nou dwe enstale kèk depandans, tankou Streamlit, LangChain, ak OpenAI.
Pre-requisites
Streamlit: Yon pake Python popilè pou kreye aplikasyon entènèt ki gen rapò ak syans done yo
OpenAI: Aksè nan modèl lang GPT-3 OpenAI a nesesè.
Pou enstale depandans sa yo, sèvi ak kòmandman sa yo nan cmd:
pip install streamlit
pip install langchain
pip install openai
Pakè enpòte
Nou kòmanse pa enpòte pakè obligatwa yo, tankou OpenAI, LangChain, ak Streamlit. Chèn modèl lang nou yo defini ak egzekite lè l sèvi avèk twa klas ki soti nan LangChain: LLMChain, SimpleSequentialChain, ak PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Debaz Enstalasyon
Lè sa a, yo te mete baz estriktirèl pwojè nou an lè l sèvi avèk sentaks Streamlit. Nou te bay aplikasyon an tit "Ki sa ki VRE: Sèvi ak Senp Sekansyèl Chain" epi li te enkli yon lyen markdown nan depo GitHub ki te sèvi kòm enspirasyon aplikasyon an.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets Front-End
Nou mete aplikasyon an ak kèk enfòmasyon enpòtan, lè l sèvi avèk senp sentaks 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")
Pou ajoute widgets front-end
Anplis de sa, nou bezwen bay yon widje opinyon pou pèmèt itilizatè nou yo antre nenpòt kesyon.
# 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?",
)
Tout fini! Chenn yo ap mache!
Nou anplwaye plizyè chenn operasyon yo ansanm ak SimpleSequentialChain
pou reponn demann itilizatè a. Chenn yo te pote soti nan sekans sa a lè itilizatè a chwazi "Tell me about it"
bouton:
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
: ki se premye etap la nan tiyo nou an, resevwa kesyon itilizatè a kòm opinyon ak pwodiksyon. Rekèt itilizatè a sèvi kòm modèl chèn lan.- Baze sou yon deklarasyon ki lye ak kesyon an, la
assumptions_chain
jenere yon lis sipozisyon bal-pwen lè l sèvi avèk pwodiksyon an soti nanquestion_chain
kòm opinyon. LaLLMChain
akOpenAI
modèl ki soti nan LangChain te itilize pou konstwi deklarasyon an. Itilizatè a gen responsablite pou l kreye yon lis sipozisyon yo te fè pou l ka pwodui deklarasyon an lè l sèvi avèk modèl pou chèn sa a. - Ki baze sou rezilta yo soti nan
question_chain
akassumptions_chain
, Anfact_checker_chain
jenere yon lis afimasyon nan fòm bal. Reklamasyon yo pwodui lè l sèvi avèk laOpenAI
modèl akLLMChain
soti nan LangChain. Itilizatè a gen responsablite pou detèmine si chak reklamasyon egzat oswa kòrèk epi bay jistifikasyon pou sa yo. - Jounal
answer_chain
sèvi ak rezilta yo soti nanquestion_chain
,assumptions_chain
, epifact_checker_chain
kòm opinyon yo kreye yon repons a kesyon itilizatè a lè l sèvi avèk done yo ki te pwodwi pa chenn yo pi bonè. Modèl pou chèn sa a mande pou itilizatè a reponn premye demann lan lè l sèvi avèk reyalite yo te kreye. - Yo nan lòd yo bay repons final la nan rechèch itilizatè a ki baze sou enfòmasyon ki te pwodwi pa chenn yo pi bonè, nou entegre chenn sa yo nan chèn an jeneral. Apre chenn yo fin ranpli, nou itilize
st.success()
pou montre itilizatè a solisyon an.
konklizyon
Nou ka tou senpleman chenn ansanm diferan aksyon modèl lang yo kreye tiyo pi konplike lè l sèvi avèk la SimpleSequentialChain
modil LangChain. Pou yon gran varyete aplikasyon NLP, ki gen ladan chatbots, sistèm kesyon-ak-repons, ak zouti tradiksyon lang, sa a ka byen itil.
Briyan nan LangChain yo jwenn nan kapasite li nan abstrè, ki pèmèt itilizatè a konsantre sou pwoblèm aktyèl la olye ke spesifik yo nan modèl lang.
LangChain fè pwosesis pou kreye modèl lang sofistike plis zanmitay lè li ofri modèl pre-antre ak yon seleksyon modèl.
Li ba ou opsyon pou ajiste modèl lang yo lè l sèvi avèk pwòp done pa yo, sa ki fè li senp pou Customize modèl lang yo. Sa a pèmèt devlopman modèl ki pi presi, espesifik nan domèn ki, pou yon travay bay, depase modèl ki resevwa fòmasyon yo.
Jounal SimpleSequentialChain
modil ak lòt karakteristik LangChain fè li yon zouti efikas pou devlope byen vit ak deplwaye sistèm NLP sofistike.
Kite yon Reply