LangChain është një mjet modern dhe i fuqishëm i zhvilluar për të shfrytëzuar fuqinë e Modeleve të Mëdha të Gjuhës (LLM).
Këto LLM kanë aftësi të jashtëzakonshme dhe mund të trajtojnë me efikasitet një gamë të gjerë detyrash. Megjithatë, është e rëndësishme të theksohet se forca e tyre qëndron në natyrën e tyre të përgjithshme dhe jo në ekspertizën e thelluar të fushës. Popullariteti i tij është rritur me shpejtësi që nga prezantimi i GPT-4.
Ndërsa LLM-të shkëlqejnë në trajtimin e detyrave të ndryshme, ata mund të përballen me kufizime kur bëhet fjalë për dhënien e përgjigjeve specifike ose trajtimin e detyrave që kërkojnë njohuri të thella të fushës. Merrni parasysh, për shembull, përdorimin e një LLM për t'iu përgjigjur pyetjeve ose për të kryer detyra brenda fushave të specializuara si mjekësia ose ligji.
Ndërsa LLM me siguri mund t'u përgjigjet pyetjeve të përgjithshme në lidhje me këto fusha, mund të jetë e vështirë të ofrojë përgjigje më të hollësishme ose të nuancuara që kërkojnë njohuri ose ekspertizë të specializuar.
Kjo është për shkak se LLM-të janë trajnuar në sasi të mëdha të të dhënave tekstuale nga burime të ndryshme, duke u mundësuar atyre të mësojnë modele, të kuptojnë kontekstin dhe të gjenerojnë përgjigje koherente. Megjithatë, trajnimi i tyre zakonisht nuk përfshin përvetësimin e njohurive specifike të fushës ose të specializuara në të njëjtën masë si ekspertët njerëzorë në ato fusha.
Prandaj, ndërsa LangChain, në lidhje me LLM-të, mund të jetë një mjet i paçmuar për një gamë të gjerë detyrash, është e rëndësishme të pranohet se ekspertiza e thellë e domenit mund të jetë ende e nevojshme në situata të caktuara. Ekspertët njerëzorë me njohuri të specializuara mund të ofrojnë thellësinë e nevojshme, kuptimin e nuancuar dhe njohuritë specifike të kontekstit që mund të jenë përtej aftësive vetëm të LLM-ve.
Ne do të këshillonim të shikoni dokumentet e LangChain ose GitHub depo për një kuptim më të plotë të rasteve tipike të përdorimit të tij. Këshillohet fuqimisht që të merrni një pamje më të madhe të kësaj pakete.
Si punon?
Për të kuptuar qëllimin dhe punën e LangChain, le të shqyrtojmë një shembull praktik. Ne jemi të vetëdijshëm se GPT-4 ka njohuri të përgjithshme mbresëlënëse dhe mund të japë përgjigje të besueshme për një gamë të gjerë pyetjesh.
Megjithatë, çka nëse duam informacion specifik nga të dhënat tona, si p.sh. një dokument personal, libër, skedar PDF ose bazë të dhënash të pronarit?
LangChain na lejon të lidhim një modeli i madh i gjuhës si GPT-4 për burimet tona të të dhënave. Ajo shkon përtej thjesht ngjitjes së një fragmenti teksti në një ndërfaqe bisede. Në vend të kësaj, ne mund të referojmë një bazë të dhënash të tërë të mbushur me të dhënat tona.
Pasi të marrim informacionin e dëshiruar, LangChain mund të na ndihmojë në marrjen e veprimeve specifike. Për shembull, ne mund ta udhëzojmë atë të dërgojë një email që përmban detaje të caktuara.
Për ta arritur këtë, ne ndjekim një qasje tubacioni duke përdorur LangChain. Së pari, marrim dokumentin që duam model gjuhësor për ta referuar dhe për ta ndarë në copa më të vogla. Këto pjesë më pas ruhen si ngulitje, të cilat janë paraqitjet vektoriale të tekstit, në një bazë të dhënash vektoriale.
Me këtë konfigurim, ne mund të ndërtojmë aplikacione të modelit të gjuhës që ndjekin një linjë standarde: një përdorues bën një pyetje fillestare, e cila më pas i dërgohet modelit të gjuhës. Paraqitja vektoriale e pyetjes përdoret për të kryer një kërkim ngjashmërie në bazën e të dhënave vektoriale, duke marrë pjesët përkatëse të informacionit.
Këto pjesë i kthehen më pas modelit të gjuhës, duke i mundësuar atij të japë një përgjigje ose të ndërmarrë veprimin e dëshiruar.
LangChain lehtëson zhvillimin e aplikacioneve që janë të vetëdijshëm për të dhënat, pasi ne mund t'i referohemi të dhënave tona në një dyqan vektori, dhe autentike, pasi ato mund të ndërmarrin veprime përtej përgjigjes së pyetjeve. T
ai hap një mori rastesh përdorimi praktik, veçanërisht në asistencën personale, ku një model i madh gjuhësor mund të përballojë detyra si rezervimi i fluturimeve, transferimi i parave ose ndihma për çështje që lidhen me taksat.
Për më tepër, implikimet për studimin dhe mësimin e lëndëve të reja janë të rëndësishme, pasi një model gjuhësor mund të referojë një planprogram të tërë dhe të përshpejtojë procesin e të mësuarit. Kodimi, analiza e të dhënave dhe shkenca e të dhënave pritet gjithashtu të ndikohen shumë nga këto përparime.
Një nga perspektivat më emocionuese është lidhja e modeleve të mëdha gjuhësore me të dhënat ekzistuese të kompanisë, të tilla si informacioni i klientit ose të dhënat e marketingut. Ky integrim me API-të e avancuara si API-ja e Meta-s ose API-ja e Google premton përparim eksponencial në analitikën e të dhënave dhe shkencën e të dhënave.
Si të ndërtoni një faqe interneti (Demo)
Aktualisht, Langchain është i disponueshëm si Paketa Python dhe JavaScript.
Ne mund të krijojmë një aplikacion ueb demonstrues duke përdorur modelin Streamlit, LangChain dhe OpenAI GPT-3 për të zbatuar konceptin LangChain.
Por së pari, ne duhet të instalojmë disa varësi, duke përfshirë Streamlit, LangChain dhe OpenAI.
Parakushtet
Streamlit: Një paketë e njohur Python për krijimin e aplikacioneve në internet të lidhura me shkencën e të dhënave
OpenAI: Nevojitet akses në modelin e gjuhës GPT-3 të OpenAI.
Për të instaluar këto varësi, përdorni komandat e mëposhtme në cmd:
pip install streamlit
pip install langchain
pip install openai
Paketat e importit
Ne fillojmë duke importuar paketat e kërkuara, si OpenAI, LangChain dhe Streamlit. Zinxhirët tanë të modelit të gjuhës përcaktohen dhe ekzekutohen duke përdorur tre klasa nga LangChain: LLMChain, SimpleSequentialChain dhe PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Setup bazë
Baza strukturore e projektit tonë u vendos më pas duke përdorur sintaksën Streamlit. Ne i dhamë aplikacionit titullin "Çfarë është e VËRTETË: Përdorimi i zinxhirit të thjeshtë vijues" dhe përfshimë një lidhje shënjuese në depon e GitHub që shërbeu si frymëzim i aplikacionit.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Miniaplikacionet e përparme
Ne konfiguruam aplikacionin me pak informacione përkatëse, duke përdorur sintaksë të thjeshtë 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")
Për të shtuar pajisje të përparme
Më tej, ne duhet të ofrojmë një miniaplikacion hyrës për t'i lejuar përdoruesit tanë të shkruajnë çdo pyetje.
# 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?",
)
Gjithçka u krye! Zinxhirët janë në punë!
Ne punësojmë zinxhirë të ndryshëm operacionesh së bashku me SimpleSequentialChain
për t'iu përgjigjur pyetjes së përdoruesit. Zinxhirët kryhen në sekuencën vijuese kur përdoruesi zgjedh "Tell me about it"
button:
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
: që është hapi i parë në tubacionin tonë, merr pyetjen e përdoruesit si hyrje dhe dalje. Kërkesa e përdoruesit shërben si shabllon i zinxhirit.- Bazuar në një deklaratë të lidhur me pyetjen,
assumptions_chain
gjeneron një listë pikë-pikë supozimesh duke përdorur daljen ngaquestion_chain
si hyrje. TëLLMChain
OpenAI
modeli nga LangChain u përdor për të ndërtuar deklaratën. Përdoruesi ka për detyrë të krijojë një listë të supozimeve që janë bërë për të prodhuar deklaratën duke përdorur shabllonin për këtë zinxhir. - Bazuar në rezultatet nga
question_chain
assumptions_chain
,fact_checker_chain
gjeneron një listë të pohimeve në formën e pikave. Pretendimet prodhohen duke përdorurOpenAI
model dheLLMChain
nga LangChain. Përdoruesi ka për detyrë të përcaktojë nëse çdo pretendim është i saktë apo i pasaktë dhe të sigurojë justifikim për ato që janë. - La
answer_chain
përdor rezultatet ngaquestion_chain
,assumptions_chain
dhefact_checker_chain
si inpute për të krijuar një përgjigje ndaj pyetjes së përdoruesit duke përdorur të dhënat e prodhuara nga zinxhirët e mëparshëm. Modeli për këtë zinxhir kërkon që përdoruesi t'i përgjigjet pyetjes së parë duke përdorur faktet që janë krijuar. - Për të dhënë përgjigjen përfundimtare ndaj kërkesës së përdoruesit bazuar në informacionin e prodhuar nga zinxhirët e mëparshëm, ne i integrojmë këto zinxhirë në zinxhirin e përgjithshëm. Pasi zinxhirët janë përfunduar, ne përdorim
st.success()
për t'i treguar përdoruesit zgjidhjen.
Përfundim
Ne thjesht mund të lidhim së bashku veprime të ndryshme të modelit të gjuhës për të krijuar tubacione më të ndërlikuara duke përdorur SimpleSequentialChain
moduli i LangChain. Për një shumëllojshmëri të gjerë aplikacionesh NLP, duke përfshirë chatbots, sistemet e pyetjeve dhe përgjigjeve dhe mjetet e përkthimit të gjuhës, kjo mund të jetë mjaft e dobishme.
Shkëlqimi i LangChain gjendet në aftësinë e tij për të abstraguar, gjë që i mundëson përdoruesit të përqendrohet në çështjen aktuale dhe jo në specifikat e modelimit të gjuhës.
LangChain e bën procesin e krijimit të modeleve të sofistikuara të gjuhës më miqësore për përdoruesit duke ofruar modele të trajnuara paraprakisht dhe një përzgjedhje shabllonesh.
Ai ju jep mundësinë për të rregulluar mirë modelet e gjuhës duke përdorur të dhënat e tyre, duke e bërë të thjeshtë personalizimin e modeleve të gjuhës. Kjo mundëson zhvillimin e modeleve më të sakta, specifike për domenin që, për një punë të caktuar, i tejkalojnë modelet e trajnuara.
La SimpleSequentialChain
moduli dhe veçoritë e tjera të LangChain e bëjnë atë një mjet efektiv për zhvillimin dhe vendosjen e shpejtë të sistemeve të sofistikuara NLP.
Lini një Përgjigju