Taula de continguts[Amaga][Espectacle]
LangChain és una eina d'avantguarda i robusta desenvolupada per aprofitar el poder dels grans models de llenguatge (LLM).
Aquests LLM posseeixen capacitats notables i poden abordar de manera eficient una àmplia gamma de tasques. No obstant això, és important tenir en compte que la seva força rau en la seva naturalesa general i no en l'experiència del domini en profunditat. La seva popularitat ha crescut ràpidament des de la introducció de GPT-4.
Tot i que els LLM excel·lent en la gestió de diverses tasques, poden tenir limitacions a l'hora de proporcionar respostes específiques o d'abordar tasques que requereixen un coneixement profund del domini. Penseu, per exemple, en utilitzar un LLM per respondre preguntes o realitzar tasques en camps especialitzats com la medicina o el dret.
Tot i que el LLM certament pot respondre a consultes generals sobre aquests camps, pot tenir dificultats per oferir respostes més detallades o matisades que requereixin coneixements o experiència especialitzats.
Això es deu al fet que els LLM estan formats en grans quantitats de dades de text de fonts diverses, cosa que els permet aprendre patrons, entendre el context i generar respostes coherents. Tanmateix, la seva formació normalment no implica l'adquisició de coneixements específics o especialitzats en la mateixa mesura que els experts humans en aquests camps.
Per tant, tot i que LangChain, juntament amb els LLM, pot ser una eina inestimable per a una àmplia gamma de tasques, és important reconèixer que encara pot ser necessària una experiència profunda del domini en determinades situacions. Els experts humans amb coneixements especialitzats poden proporcionar la profunditat necessària, la comprensió matisada i els coneixements específics del context que podrien estar més enllà de les capacitats dels LLM.
Recomanem consultar els documents de LangChain o GitHub repositori per a una comprensió més completa dels seus casos d'ús típics. És molt recomanable obtenir una imatge més gran d'aquest paquet.
Com funciona?
Per entendre el propòsit i el treball de LangChain, considerem un exemple pràctic. Som conscients que GPT-4 té un coneixement general impressionant i pot proporcionar respostes fiables a una àmplia gamma de preguntes.
Tanmateix, què passa si volem informació específica de les nostres pròpies dades, com ara un document personal, un llibre, un fitxer PDF o una base de dades propietat?
LangChain ens permet connectar a gran model de llengua com GPT-4 a les nostres pròpies fonts de dades. Va més enllà de simplement enganxar un fragment de text a una interfície de xat. En canvi, podem fer referència a una base de dades sencera plena de dades pròpies.
Un cop obtinguem la informació desitjada, LangChain ens pot ajudar a prendre accions específiques. Per exemple, podem demanar-li que enviï un correu electrònic amb determinats detalls.
Per aconseguir-ho, seguim un enfocament pipeline utilitzant LangChain. Primer, agafem el document que volem model lingüístic per fer referència i dividir-lo en trossos més petits. Aquests trossos s'emmagatzemen com a incrustacions, que ho són representacions vectorials del text, en una base de dades vectorial.
Amb aquesta configuració, podem crear aplicacions de model d'idioma que segueixen un pipeline estàndard: un usuari fa una pregunta inicial, que després s'envia al model d'idioma. La representació vectorial de la pregunta s'utilitza per realitzar una cerca de similitud a la base de dades de vectors, recuperant els fragments d'informació rellevants.
A continuació, aquests fragments es retroalimenten al model d'idioma, cosa que li permet donar una resposta o prendre l'acció desitjada.
LangChain facilita el desenvolupament d'aplicacions que siguin conscients de les dades, ja que podem fer referència a les nostres pròpies dades en un magatzem de vectors, i autèntiques, ja que poden prendre accions més enllà de respondre preguntes. T
El seu obre una multitud de casos d'ús pràctics, especialment en l'assistència personal, on un gran model d'idioma pot gestionar tasques com la reserva de vols, la transferència de diners o l'assistència en qüestions fiscals.
A més, les implicacions per estudiar i aprendre noves assignatures són significatives, ja que un model lingüístic pot fer referència a un pla d'estudis sencer i accelerar el procés d'aprenentatge. També s'espera que la codificació, l'anàlisi de dades i la ciència de dades estiguin molt influenciades per aquests avenços.
Una de les perspectives més interessants és connectar grans models lingüístics amb les dades de l'empresa existents, com ara la informació dels clients o les dades de màrqueting. Aquesta integració amb API avançades com l'API de Meta o l'API de Google promet un progrés exponencial en l'anàlisi de dades i la ciència de dades.
Com crear una pàgina web (demo)
Actualment, Langchain està disponible com a paquets Python i JavaScript.
Podem crear una aplicació web de demostració utilitzant Streamlit, LangChain i el model OpenAI GPT-3 per implementar el concepte LangChain.
Però primer, hem d'instal·lar algunes dependències, com ara Streamlit, LangChain i OpenAI.
Prerequisits
Streamlit: Un paquet Python popular per crear aplicacions web relacionades amb la ciència de dades
OpenAI: Cal accedir al model d'idioma GPT-3 d'OpenAI.
Per instal·lar aquestes dependències, utilitzeu les ordres següents a cmd:
pip install streamlit
pip install langchain
pip install openai
Importa paquets
Comencem important els paquets necessaris, com ara OpenAI, LangChain i Streamlit. Les nostres cadenes de models de llenguatge es defineixen i s'executen mitjançant tres classes de LangChain: LLMChain, SimpleSequentialChain i PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Configuració bàsica
La base estructural del nostre projecte es va posar després utilitzant la sintaxi Streamlit. Vam donar a l'aplicació el títol "Què és cert: ús de cadena seqüencial simple" i vam incloure un enllaç de reducció al dipòsit de GitHub que va servir d'inspiració per a l'aplicació.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Ginys de front-end
Configurem l'aplicació amb poca informació rellevant, utilitzant la sintaxi simple de 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")
Per afegir ginys de front-end
A més, hem de proporcionar un widget d'entrada per permetre als nostres usuaris introduir qualsevol pregunta.
# 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?",
)
Tot fet! Les cadenes estan en marxa!
Fem servir diverses cadenes d'operacions juntament amb SimpleSequentialChain
per respondre a la consulta de l'usuari. Les cadenes es realitzen en la següent seqüència quan l'usuari selecciona el "Tell me about it"
botó:
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
: que és el primer pas del nostre pipeline, rep la pregunta de l'usuari com a entrada i sortida. La consulta de l'usuari serveix com a plantilla de la cadena.- A partir d'una afirmació vinculada a la pregunta, el
assumptions_chain
genera una llista amb vinyetes de supòsits utilitzant la sortida de l'question_chain
com a entrada. ElLLMChain
iOpenAI
es va utilitzar el model de LangChain per construir la declaració. L'usuari té l'encàrrec de crear una llista dels supòsits que es van fer per produir la declaració utilitzant la plantilla d'aquesta cadena. - Basat en les sortides del
question_chain
iassumptions_chain
, Elfact_checker_chain
genera una llista d'afirmacions en forma de vinyetes. Les reclamacions es produeixen mitjançant elOpenAI
model iLLMChain
de LangChain. L'usuari té l'encàrrec de determinar si cada reclamació és precisa o incorrecta i de justificar les que ho són. - El
answer_chain
utilitza les sortides delquestion_chain
,assumptions_chain
ifact_checker_chain
com a inputs per crear una resposta a la pregunta de l'usuari utilitzant les dades produïdes per les cadenes anteriors. La plantilla d'aquesta cadena demana que l'usuari respongui a la primera consulta utilitzant els fets que es van crear. - Per tal de donar la resposta definitiva a la consulta de l'usuari a partir de la informació produïda per les cadenes anteriors, integrem aquestes cadenes a la cadena global. Després de completar les cadenes, fem servir
st.success()
per mostrar a l'usuari la solució.
Conclusió
Simplement podem encadenar diferents accions de model d'idioma per crear canalitzacions més complicades mitjançant l' SimpleSequentialChain
mòdul de LangChain. Per a una gran varietat d'aplicacions de PNL, com ara chatbots, sistemes de preguntes i respostes i eines de traducció d'idiomes, això pot ser molt útil.
La brillantor de LangChain es troba en la seva capacitat d'abstracció, que permet a l'usuari concentrar-se en el problema actual en lloc de les especificitats del modelatge del llenguatge.
LangChain fa que el procés de creació de models d'idioma sofisticats sigui més fàcil d'utilitzar, oferint models pre-entrenats i una selecció de plantilles.
Us ofereix l'opció d'ajustar els models d'idioma utilitzant les seves pròpies dades, de manera que és senzill personalitzar els models d'idioma. Això permet desenvolupar models més precisos i específics del domini que, per a un treball determinat, superen els models entrenats.
El SimpleSequentialChain
mòdul i altres característiques de LangChain el converteixen en una eina eficaç per desenvolupar i desplegar ràpidament sistemes de PNL sofisticats.
Deixa un comentari