I-LangChain sisixhobo sokusika kunye nesomeleleyo esiphuhliswe ukusebenzisa amandla eeModeli zoLwimi olukhulu (LLMs).
Ezi LLMs zinamandla amangalisayo kwaye zinokujongana ngokufanelekileyo uluhlu olubanzi lwemisebenzi. Nangona kunjalo, kubalulekile ukuqaphela ukuba amandla abo alele kwindalo yabo jikelele kunokuba kubuchwephesha obunzulu besizinda. Ukuthandwa kwayo kuye kwanda ngokukhawuleza ukususela ekuqalisweni kwe-GPT-4.
Ngelixa ii-LLM zigqwesa ekuphatheni imisebenzi eyahlukeneyo, zinokujongana nemida xa kuziwa ekuboneleleni ngeempendulo ezithile okanye ekujongeni imisebenzi efuna ulwazi olunzulu lwesizinda. Cinga, umzekelo, ukusebenzisa iLLM ukuphendula imibuzo okanye ukwenza imisebenzi kwiinkalo ezikhethekileyo njengamayeza okanye umthetho.
Ngelixa i-LLM ngokuqinisekileyo inokuphendula kwimibuzo ngokubanzi malunga nezi nkalo, kusenokuba nzima ukunika iimpendulo ezineenkcukacha okanye ezintsonkothileyo ezifuna ulwazi olulodwa okanye ubuchule.
Oku kungenxa yokuba ii-LLM ziqeqeshelwa ubuninzi bedatha yokubhaliweyo esuka kwimithombo eyahlukeneyo, ebenza ukuba bafunde iipatheni, baqonde umxholo, kwaye bavelise iimpendulo ezihambelanayo. Nangona kunjalo, uqeqesho lwabo alubandakanyi ukufunyanwa kolwazi oluthe ngqo okanye olukhethekileyo kumlinganiselo ofanayo neengcali zabantu kwezo nkalo.
Ngoko ke, ngelixa i-LangChain, ngokubambisana ne-LLMs, inokuba sisixhobo esixabisekileyo kuluhlu olubanzi lwemisebenzi, kubalulekile ukuqaphela ukuba ubuchule obunzulu besizinda busenokuba yimfuneko kwiimeko ezithile. Iingcali zoluntu ezinolwazi olukhethekileyo zinokubonelela ngobunzulu obuyimfuneko, ukuqonda okungephi, kunye nokuqonda okuthe ngqo kwimeko ethile enokuba ngaphaya kwamandla e-LLM kuphela.
Sicebisa ukuba sijonge amaxwebhu eLangChain okanye GitHub indawo yokugcina ukuqonda ngokucokisekileyo ngakumbi kwiimeko zayo zokusetyenziswa. Kucetyiswa ngamandla ukuba ufumane umfanekiso omkhulu wale bundle.
Ingaba isebenza kanjani?
Ukuqonda injongo kunye nomsebenzi weLangChain, makhe siqwalasele umzekelo osebenzayo. Siyazi ukuba i-GPT-4 inolwazi oluphangaleleyo jikelele kwaye inokunika iimpendulo ezithembekileyo kuluhlu olubanzi lwemibuzo.
Nangona kunjalo, kuthekani ukuba sifuna ulwazi oluthile olusuka kweyethu idatha, njengoxwebhu lobuqu, incwadi, ifayile yePDF, okanye idatabase yobunikazi?
I-LangChain ivumela ukuba sidibanise a imodeli yolwimi olukhulu njenge GPT-4 kwimithombo yethu yedatha. Idlulela ngaphaya kokuncamathisela isicatshulwa sesicatshulwa kujongano lwengxoxo. Endaweni yoko, sinokubhekisa kwisiseko sedatha yonke ezaliswe ngezethu idatha.
Sakuba sifumene ulwazi olufunekayo, iLangChain ingasinceda ekuthatheni amanyathelo athile. Ngokomzekelo, sinokuyiyalela ukuba ithumele i-imeyile eneenkcukacha ezithile.
Ukufezekisa oku, silandela indlela yombhobho usebenzisa iLangChain. Okokuqala, sithatha uxwebhu esilufunayo imodeli yolwimi kwireferensi kwaye uyahlule ube ziziqwengana ezincinci. Ezi ziqwenga zigcinwa njengofakelo, ezilulo iVector yokubonisa okubhaliweyo, kwiVector Database.
Ngolu cwangciso, sinokwakha imodeli yokusetyenziswa kolwimi elandela umbhobho osemgangathweni: umsebenzisi ubuza umbuzo wokuqala, othi uthunyelwe kwimodeli yolwimi. Umboniso wevector yombuzo usetyenziselwa ukwenza uphando olufanayo kwiVector Database, ukufumana iinqununu ezifanelekileyo zolwazi.
Ezi ziqendwana zibuyiselwa kwimodeli yolwimi, nto leyo eyenza ukuba inike impendulo okanye ithathe inyathelo elifunekayo.
I-LangChain iququzelela ukuphuhliswa kwezicelo ezinolwazi lwedatha, njengoko sinokubhekisela kwidatha yethu kwivenkile ye-vector, kwaye iyinyani, njengoko inokuthatha amanyathelo ngaphaya kokuphendula imibuzo. T
yakhe ivula inkitha yamatyala osetyenziso olusebenzayo, ngakumbi kuncedo lomntu, apho imodeli yolwimi enkulu inokusingatha imisebenzi efana nokubhukisha iinqwelomoya, ukudlulisa imali, okanye ukuncedisa kwimicimbi enxulumene nerhafu.
Ukongeza, iziphumo zokufunda nokufunda izifundo ezitsha zibalulekile, njengoko imodeli yolwimi inokubhekisa kwisilabhasi iphela kwaye ikhawulezise inkqubo yokufunda. Ukubhalwa kweekhowudi, uhlalutyo lwedatha, kunye nenzululwazi yedatha nazo kulindeleke ukuba ziphenjelelwe kakhulu kwezi nkqubela phambili.
Elinye lawona mathuba anika umdla kukudibanisa imifuziselo yolwimi olukhulu kwidatha yenkampani esele ikhona, efana neenkcukacha zabathengi okanye idatha yokuthengisa. Oku kudityaniswa kunye nee-APIs eziphambili ezifana ne-Meta's API okanye i-API kaGoogle ithembisa inkqubela phambili ekuhlalutyweni kwedatha kunye nesayensi yedatha.
Ulakha njani iphepha lewebhu (idemo)
Okwangoku, iLangchain iyafumaneka njengePython kunye neJavaScript Packages.
Sinokwenza umboniso we-Web App usebenzisa i-Streamlit, i-LangChain, kunye nemodeli ye-OpenAI GPT-3 ukuphumeza ingcamango yeLangChain.
Kodwa okokuqala, kufuneka sifake ukuxhomekeka okumbalwa, kubandakanya i-Streamlit, LangChain, kunye ne-OpenAI.
Iimfuneko zokuqala
Ukukhanya: Iphakheji eyaziwayo yePython yokudala izicelo zewebhu ezinxulumene nesayensi
VulaAI: Ukufikelela kwimodeli yolwimi ye-OpenAI ye-GPT-3 iyafuneka.
Ukufakela ezi zixhomekeke, sebenzisa le miyalelo ilandelayo kwi-cmd:
pip install streamlit
pip install langchain
pip install openai
Iipakethe ezivela ngaphandle
Siqala ngokungenisa iiphakheji ezifunekayo, ezifana ne-OpenAI, i-LangChain, kunye ne-Streamlit. Iimodeli zethu zemixokelelwano yolwimi zichazwa kwaye zenziwa kusetyenziswa iiklasi ezintathu ezivela kwiLangChain: LLMChain, SimpleSequentialChain, kunye nePromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Ukusekwa kweSiseko
Isiseko solwakhiwo lweprojekthi yethu sabekwa kusetyenziswa isintaksi se-Streamlit. Sinike i-app isihloko esithi "Yintoni EYINYANISO: Ukusebenzisa Ikhonkco Elilula Ngokulandelelanayo" kwaye ibandakanye ikhonkco lokuphawula kwindawo yokugcina ye-GitHub esebenze njengenkuthazo ye-app.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Ngaphambili-Isiphelo Widgets
Siseta i-app ngolwazi olumbalwa olufanelekileyo, sisebenzisa i-syntax elula ye-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")
Ukongeza iiwijethi zangaphambili
Ngaphaya koko, kufuneka sinikeze iwijethi yegalelo ukuvumela abasebenzisi bethu ukuba bangene kuyo nayiphi na imibuzo.
# 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?",
)
Konke kwenzekile! Amatyathanga avukile kwaye ayabaleka!
Sisebenzisa amakhonkco ohlukeneyo okusebenza kunye SimpleSequentialChain
ukuphendula umbuzo womsebenzisi. Amatyathanga enziwa ngolandelelwano olulandelayo xa umsebenzisi ekhetha i "Tell me about it"
iqhosha:
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
: elinyathelo lokuqala kumbhobho wethu, ufumana umbuzo womsebenzisi njengegalelo kunye nemveliso. Umbuzo womsebenzisi usebenza njengetemplate yetsheyini.- Ngokusekelwe kwingxelo enxulumene nombuzo, i
assumptions_chain
yenza uluhlu lwembumbulu-manqaku engqikelelo usebenzisa imveliso evela kwiquestion_chain
njengegalelo. ILLMChain
kwayeOpenAI
imodeli evela eLangChain yayisetyenziselwa ukwakha inkcazo. Umsebenzisi unikwe umsebenzi wokudala uluhlu lweengqikelelo ezenziweyo ukwenzela ukuvelisa inkcazo usebenzisa itemplate yeli khonkco. - Ngokusekwe kwiziphumo ezivela kwi
question_chain
kwayeassumptions_chain
, ifact_checker_chain
yenza uluhlu lweengqinisekiso ngohlobo lwamanqaku embumbulu. Amabango aveliswa ngokusebenzisa iOpenAI
model kunyeLLMChain
ukusuka eLangChain. Umsebenzisi unikwe umsebenzi wokumisela ukuba ibango ngalinye lichanekile okanye alichanekanga kwaye linike izizathu ezithethelela abo banjalo. - The
answer_chain
isebenzisa iziphumo ezisuka kwiquestion_chain
,assumptions_chain
, yayefact_checker_chain
njengamagalelo okudala impendulo kumbuzo womsebenzisi usebenzisa idatha eveliswe ngamatyathanga angaphambili. Ithemplethi yale chain icela ukuba umsebenzisi aphendule kumbuzo wokuqala esebenzisa iinyani ezidaliweyo. - Ukuze unikeze impendulo yokugqibela kumbuzo womsebenzisi ngokusekelwe kulwazi oluveliswe ngamatyathanga angaphambili, sidibanisa la matyathanga kwikhonkco lilonke. Emva kokuba amatyathanga agqityiwe, sisebenzisa
st.success()
ukubonisa umsebenzisi isisombululo.
isiphelo
Singavele sidibanise iintshukumo ezahlukeneyo zemodeli yolwimi ukwenza imibhobho enzima ngakumbi ngokusebenzisa i SimpleSequentialChain
imodyuli yeLangChain. Kwiintlobo ngeentlobo zezicelo ze-NLP, ezibandakanya ii-chatbots, iisistim zemibuzo kunye neempendulo, kunye nezixhobo zokuguqulela ulwimi, oku kunokuba luncedo kakhulu.
Ubuchule beLangChain bufumaneka kwisakhono saso sokwenza i-abstract, eyenza ukuba umsebenzisi agxininise kumbandela okhoyo ngoku kunokuba neenkcukacha zokusetyenziswa kolwimi.
I-LangChain yenza inkqubo yokudala imodeli yeelwimi eziyinkimbinkimbi ngakumbi kumsebenzisi ngokunikezela ngeemodeli eziqeqeshwe kwangaphambili kunye nokukhethwa kweetemplates.
Ikunika ukhetho lokulungisa kakuhle imifuziselo yolwimi usebenzisa eyabo idatha, ikwenza kube lula ukwenza imifuziselo yolwimi. Oku kwenza ukuba kuphuhliswe imifuziselo echaneke ngakumbi, ethe ngqo kwi-domain ethi, kumsebenzi othile, igqwese imodeli eqeqeshiweyo.
The SimpleSequentialChain
imodyuli kunye nezinye iimpawu zeLangChain zenza ukuba ibe sisixhobo esisebenzayo sokuphuhlisa ngokukhawuleza kunye nokuhambisa iinkqubo ze-NLP ezinobunkunkqele.
Shiya iMpendulo