Edukien aurkibidea[Ezkutatu][Erakutsi]
LangChain hizkuntza-eredu handien (LLM) ahalmena aprobetxatzeko garatutako tresna abangoardista eta sendoa da.
LLM hauek gaitasun nabarmenak dituzte eta zeregin ugariri modu eraginkorrean aurre egin diezaiekete. Hala eta guztiz ere, garrantzitsua da kontutan izan haien indarra izaera orokorrean dagoela, domeinu-esperientzia sakonean baino. Bere ospea azkar hazi da GPT-4 sartu zenetik.
LLM-ek hainbat zeregin kudeatzen bikainak diren arren, mugak izan ditzakete erantzun zehatzak emateko edo domeinuaren ezagutza sakona behar duten zereginei aurre egiteko orduan. Demagun, adibidez, LLM bat erabiltzea galderei erantzuteko edo medikuntza edo zuzenbidea bezalako arlo espezializatuetan zereginak egiteko.
LLMk arlo hauei buruzko galdera orokorrei erantzun diezaiekeen arren, zailtasunak izan ditzake ezagutza edo esperientzia espezializatuak behar dituzten erantzun zehatzagoak edo ñabardurak eskaintzeko.
Hau da, LLMak hainbat iturritako testu-datu kopuru handietan trebatzen direlako, ereduak ikasteko, testuingurua ulertzeko eta erantzun koherenteak sortzeko aukera emanez. Hala ere, haien prestakuntza ez da normalean domeinuko ezagutza espezifikoak edo espezializatuak eskuratzea alor horietako giza adituen neurri berean.
Hori dela eta, LangChain, LLMekin batera, zeregin askotarako tresna eskerga izan daitekeen arren, garrantzitsua da egoera jakin batzuetan domeinu-esperientzia sakona beharrezkoa izan daitekeela aitortzea. Ezagutza espezializatua duten giza adituek beharrezko sakontasuna, ulermen ñabardura eta testuinguruaren inguruko ezagutzak eskain ditzakete, LLMen gaitasunetatik kanpo egon daitezkeenak.
LangChain-en dokumentuak ikustea gomendatuko genuke edo GitHub biltegia bere ohiko erabilera kasuak sakonago ulertzeko. Oso gomendagarria da sorta honen argazki handiagoa lortzea.
Nola dabil?
LangChain-en helburua eta lana ulertzeko, har dezagun adibide praktiko bat. Badakigu GPT-4-k ezagutza orokor ikaragarria duela eta galdera ugariri erantzun fidagarriak eman ditzakeela.
Hala ere, zer gertatzen da gure datuetatik informazio zehatza nahi badugu, hala nola dokumentu pertsonala, liburua, PDF fitxategia edo jabedun datu-basea?
LangChain-ek a konektatzeko aukera ematen digu hizkuntza eredu handia GPT-4 bezalako gure datu-iturrietara. Testu zati bat txat-interfaze batean itsatsi besterik ez dago. Horren ordez, gure datuekin betetako datu-base oso bat erreferentzia dezakegu.
Nahi dugun informazioa lortzen dugunean, LangChain-ek ekintza zehatzak egiten lagun diezaguke. Adibidez, xehetasun batzuk dituen mezu elektroniko bat bidaltzeko agindu diezaiokegu.
Hori lortzeko, kanalizazio ikuspegia jarraitzen dugu LangChain erabiliz. Lehenik eta behin, nahi dugun dokumentua hartuko dugu hizkuntza eredua erreferentzia egiteko eta zati txikiagoetan banatzeko. Zati hauek txertaketa gisa gordetzen dira, hau da testuaren irudikapen bektorialak, Bektore Datu-base batean.
Konfigurazio honekin, kanalizazio estandarra jarraitzen duten hizkuntza ereduko aplikazioak eraiki ditzakegu: erabiltzaile batek hasierako galdera bat egiten du, eta ondoren hizkuntza eredura bidaltzen da. Galderaren irudikapen bektoriala Bektorial Datu-basean antzekotasun bilaketa bat egiteko erabiltzen da, informazio zati garrantzitsuak berreskuratuz.
Gero, zati hauek hizkuntza-ereduari itzultzen zaizkio, erantzun bat emateko edo nahi den ekintza egiteko aukera emanez.
LangChain-ek datuak ezagutzen dituzten aplikazioen garapena errazten du, gure datuak erreferentzia bektorial-biltegi batean erreferentzi baititugu, eta benetakoak, galderak erantzuteaz haratago ekintzak egin ditzaketelako. T
honek erabilera-kasu praktiko ugari irekitzen ditu, bereziki laguntza pertsonalean, non hizkuntza-eredu handi batek hegaldiak erreserbatu, dirua transferitzea edo zerga-gaietan laguntzea bezalako zereginak kudeatzeko.
Gainera, irakasgai berriak ikasteko eta ikasteko inplikazioak nabarmenak dira, hizkuntza-eredu batek programa oso bat erreferentzia baitezake eta ikaskuntza-prozesua bizkortu dezake. Kodegintza, datuen analisia eta datu-zientzia ere aurrerapen hauek eragin handia izango dutela espero da.
Perspektiba zirraragarrienetako bat hizkuntza-eredu handiak lehendik dauden enpresen datuekin konektatzea da, hala nola bezeroen informazioarekin edo marketin-datuekin. Meta-ren API edo Google-ren API bezalako API aurreratuekin integratzeak aurrerapen esponentziala agintzen du datuen analisian eta datu-zientzian.
Nola sortu web orri bat (demoa)
Gaur egun, Langchain Python eta JavaScript pakete gisa eskuragarri dago.
Streamlit, LangChain eta OpenAI GPT-3 eredua erabiliz demostrazio web aplikazio bat sor dezakegu LangChain kontzeptua ezartzeko.
Baina lehenik eta behin, mendekotasun batzuk instalatu behar ditugu, besteak beste, Streamlit, LangChain eta OpenAI.
Pre-baldintzak
Erreproduzitzailea: Datu-zientziarekin lotutako web aplikazioak sortzeko Python pakete ezaguna
OpenAI: OpenAIren GPT-3 hizkuntza eredurako sarbidea behar da.
Mendekotasun hauek instalatzeko, erabili komando hauek cmd-en:
pip install streamlit
pip install langchain
pip install openai
Inportatu paketeak
Beharrezko paketeak inportatzen hasten gara, hala nola OpenAI, LangChain eta Streamlit. Gure hizkuntza-ereduen kateak LangChain-eko hiru klase erabiliz definitzen eta exekutatzen dira: LLMChain, SimpleSequentialChain eta PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Oinarrizko Konfigurazioa
Ondoren, gure proiektuaren egiturazko oinarria Streamlit sintaxia erabiliz jarri zen. Aplikazioari "Zer den egia: Kate sekuentzial sinplea erabiltzea" izenburua eman genion eta aplikazioaren inspirazio gisa balio izan zuen GitHub biltegirako markdown esteka bat sartu genuen.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-end widgetak
Aplikazioa informazio garrantzitsu gutxirekin konfiguratu dugu, Streamlit sintaxi sinplea erabiliz:
# 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")
Frontend widget-ak gehitzeko
Gainera, sarrerako widget bat eman behar dugu gure erabiltzaileek galdera guztiak sartzeko.
# 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?",
)
Dena eginda! Kateak martxan daude!
Hainbat eragiketa-kate erabiltzen ditugu elkarrekin SimpleSequentialChain
erabiltzailearen kontsultari erantzuteko. Kateak hurrengo sekuentzian egiten dira erabiltzaileak hautatzen duenean "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
: gure kanalaren lehen urratsa dena, erabiltzailearen galdera sarrera eta irteera gisa jasotzen du. Erabiltzailearen kontsultak katearen txantiloi gisa balio du.- Galderari lotutako adierazpen batean oinarrituta,
assumptions_chain
hipotesien zerrenda bat sortzen du.-ko irteera erabilizquestion_chain
sarrera gisa. TheLLMChain
OpenAI
LangChain-en eredua erabili da adierazpena eraikitzeko. Erabiltzaileak kate honetako txantiloia erabiliz adierazpena egiteko egin diren hipotesien zerrenda sortzea du zeregina. - -ren irteeretan oinarrituta
question_chain
assumptions_chain
eta,fact_checker_chain
baieztapenen zerrenda bat sortzen du buleten moduan. Erreklamazioak erabiliz sortzen diraOpenAI
eredua etaLLMChain
LangChain-en eskutik. Erabiltzaileari dagokio erreklamazio bakoitza zehatza ala okerra den zehaztea eta horiek justifikatzea. - The
answer_chain
-ko irteerak erabiltzen dituquestion_chain
,assumptions_chain
, etafact_checker_chain
sarrera gisa erabiltzailearen galderari erantzun bat sortzeko aurreko kateek sortutako datuak erabiliz. Kate honen txantiloiak erabiltzaileak lehenengo kontsultari erantzuna ematea eskatzen du sortutako gertaerak erabiliz. - Lehenagoko kateek ekoitzitako informazioan oinarrituta erabiltzailearen kontsultari azken erantzuna emateko, kate horiek kate orokorrean integratzen ditugu. Kateak osatu ondoren, erabiltzen dugu
st.success()
erabiltzaileari irtenbidea erakusteko.
Ondorioa
Besterik gabe, hizkuntza ereduko ekintza desberdinak kateatu ditzakegu kanalizazio konplikatuagoak sortzeko SimpleSequentialChain
LangChain-en modulua. NLP aplikazio askotarako, txat-botak, galdera-erantzun-sistemak eta hizkuntza-itzulpen-tresnak barne, hau nahiko lagungarria izan daiteke.
LangChain-en distira abstrakziorako ahalmenean aurkitzen da, erabiltzaileari egungo gaian kontzentratzea ahalbidetzen diona hizkuntza-modelaren berezitasunetan baino.
LangChain-ek hizkuntza-eredu sofistikatuak sortzeko prozesua errazago egiten du aldez aurretik trebatutako ereduak eta txantiloi sorta bat eskainiz.
Hizkuntza-ereduak beren datuak erabiliz doitzeko aukera ematen dizu, hizkuntza-ereduak pertsonalizatzea erraztuz. Horri esker, domeinu zehatzagoak diren eredu zehatzagoak garatzen dira, lan jakin baterako prestatutako ereduak gainditzen dituztenak.
The SimpleSequentialChain
moduluak eta LangChain-en beste ezaugarri batzuek tresna eraginkorra bihurtzen dute NLP sistema sofistikatuak azkar garatzeko eta zabaltzeko.
Utzi erantzun bat