LangChain hè un strumentu d'avanguardia è robustu sviluppatu per sfruttà u putere di i Grandi Modelli di Lingua (LLM).
Questi LLM pussede capacità notevuli è ponu affruntà in modu efficiente una larga gamma di compiti. In ogni casu, hè impurtante nutà chì a so forza si trova in a so natura generale piuttostu cà una sperienza di duminiu in prufundità. A so popularità hè cresciutu rapidamente da l'intruduzioni di GPT-4.
Mentre i LLM eccellenu à gestisce diverse attività, puderanu affruntà limitazioni quandu si tratta di furnisce risposte specifiche o di affruntà i travaglii chì necessitanu una cunniscenza prufonda di u duminiu. Cunsiderate, per esempiu, utilizendu un LLM per risponde à e dumande o eseguisce attività in campi specializati cum'è medicina o dirittu.
Mentre chì u LLM pò certamente risponde à e dumande generale nantu à questi campi, pò luttà per offre risposte più dettagliate o sfumate chì necessitanu cunniscenze o cumpetenze specializate.
Questu hè chì i LLM sò furmatu nantu à una grande quantità di dati di testu da diverse fonti, chì li permettenu di amparà mudelli, capisce u cuntestu è generà risposte coerenti. Tuttavia, a so furmazione ùn implica micca tipicamente l'acquisizione di cunniscenze specifiche o specializate à u listessu puntu chì l'esperti umani in quelli campi.
Dunque, mentre LangChain, in cunjunzione cù LLMs, pò esse un strumentu inestimabile per una larga gamma di compiti, hè impurtante ricunnosce chì a prufundità di u duminiu pò ancu esse necessariu in certe situazioni. L'esperti umani cun cunniscenze specializate ponu furnisce a prufundità necessaria, una comprensione sfumata è una visione specifica di u cuntestu chì puderia esse oltre e capacità di i LLM solu.
Avemu cunsigliatu per vede i documenti di LangChain o GitHub repository per una comprensione più approfondita di i so casi d'usu tipici. Hè cunsigliatu fermamente à ottene una stampa più grande di stu bundle.
Cumu travaglia?
Per capisce u scopu è u travagliu di LangChain, cunsideremu un esempiu praticu. Sapemu chì GPT-4 hà una cunniscenza generale impressiunanti è pò furnisce risposte affidabili à una larga gamma di dumande.
Tuttavia, chì si vulemu infurmazione specifica da i nostri dati, cum'è un ducumentu persunale, un libru, un schedariu PDF o una basa di dati proprietaria?
LangChain ci permette di cunnette un grande mudellu di lingua cum'è GPT-4 à e nostre fonti di dati. Va al di là di semplice incolla un frammentu di testu in una interfaccia di chat. Invece, pudemu riferite una basa di dati sana piena di i nostri dati.
Una volta ottene l'infurmazioni desiderate, LangChain pò aiutà à piglià azzioni specifiche. Per esempiu, pudemu urdinà à mandà un email chì cuntene certi dettagli.
Per ottene questu, seguitamu un approcciu di pipeline cù LangChain. Prima, pigliamu u documentu chì vulemu mudellu di lingua per riferimentu è dividite in pezzi più chjuchi. Questi pezzi sò allora guardati cum'è embeddings, chì sò rapprisentazioni vettoriali di u testu, in una basa di dati Vector.
Cù sta stallazione, pudemu custruisce applicazioni di mudelli di lingua chì seguitanu un pipeline standard: un utilizatore fa una dumanda iniziale, chì hè dopu mandata à u mudellu di lingua. A rapprisintazioni vettoriali di a quistione hè aduprata per fà una ricerca di similarità in a basa di dati Vector, ricuperendu i pezzi pertinenti di l'infurmazioni.
Questi chjappi sò poi rimbursati à u mudellu di lingua, chì permettenu di furnisce una risposta o piglià l'azzione desiderata.
LangChain faciliteghja u sviluppu di l'applicazioni chì sò cuscenti di dati, cum'è pudemu riferite i nostri dati in una tenda di vettori, è autentichi, cum'è ponu piglià azzione oltre à risponde à e dumande. T
u so apre una multitùdine di casi di usu praticu, in particulare in assistenza persunale, induve un mudellu di lingua grande pò manighjà compiti cum'è prenotazione voli, trasferimentu di soldi, o assisting with questione impositi.
Inoltre, l'implicazioni per u studiu è l'apprendimentu di novi sugetti sò significativi, postu chì un mudellu di lingua pò riferisce à un prugramma tutale è accelerà u prucessu di apprendimentu. A codificazione, l'analisi di dati è a scienza di i dati sò ancu previsti per esse assai influenzati da questi avanzamenti.
Una di e prospettive più eccitanti hè a cunnessione di i grandi mudelli di lingua à i dati di l'imprese esistenti, cum'è l'infurmazioni di i clienti o i dati di marketing. Questa integrazione cù API avanzati cum'è l'API di Meta o l'API di Google prumesse un prugressu esponenziale in l'analisi di dati è a scienza di dati.
Cumu Custruì una Pagina Web (Demo)
Attualmente, Langchain hè dispunibule cum'è Pacchetti Python è JavaScript.
Pudemu creà una dimostrazione Web App utilizendu Streamlit, LangChain è u mudellu OpenAI GPT-3 per implementà u cuncettu LangChain.
Ma prima, duvemu installà uni pochi di dipendenze, cumprese Streamlit, LangChain è OpenAI.
Prerequisite
Streamlit: Un pacchettu Python populari per creà applicazioni web relative à a scienza di dati
OpenAI: L'accessu à u mudellu di lingua GPT-3 di OpenAI hè necessariu.
Per installà queste dipendenze, utilizate i seguenti cumandamenti in cmd:
pip install streamlit
pip install langchain
pip install openai
Pacchetti impurtati
Cuminciamu da impurtà i pacchetti richiesti, cum'è OpenAI, LangChain è Streamlit. I nostri catene di mudelli di lingua sò definiti è eseguiti cù trè classi da LangChain: LLMChain, SimpleSequentialChain è PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basic Setup
A basa strutturale di u nostru prughjettu hè stata poi messa in a sintassi Streamlit. Avemu datu l'app u tìtulu "Chì hè TRUE: Using Simple Sequential Chain" è includeu un ligame di marcatura à u repository GitHub chì hà servitu cum'è l'ispirazione di l'app.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets Front-End
Avemu stallatu l'app cù pochi infurmazioni pertinenti, utilizendu una sintassi Streamlit simplice:
# 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 aghjunghje widgets front-end
In più, avemu bisognu di furnisce un widget di input per permette à i nostri utilizatori di entre in ogni quistione.
# 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?",
)
Tuttu fattu! E catene sò in funziunamentu !
Impieghemu diverse catene di operazioni inseme SimpleSequentialChain
per risponde à a dumanda di l'utilizatori. I catene sò realizati in a seguente sequenza quandu l'utilizatore sceglie "Tell me about it"
buttone:
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
: chì hè u primu passu in u nostru pipeline, riceve a quistione di l'utilizatori cum'è input è output. A dumanda di l'utilizatore serve cum'è mudellu di a catena.- Basatu nantu à una dichjarazione ligata à a quistione, u
assumptions_chain
genera una lista bullet-point di supposizioni utilizendu l'output da uquestion_chain
cum'è input. ULLMChain
eOpenAI
mudellu da LangChain hè stata utilizata per custruisce a dichjarazione. L'utilizatore hè incaricatu di creà una lista di l'assunzioni chì sò stati fatti per pruduce a dichjarazione cù u mudellu per questa catena. - Basatu nantu à l'outputs da u
question_chain
eassumptions_chain
, l 'fact_checker_chain
genera una lista di asserzioni in forma di bullet points. I rivindicazioni sò pruduciuti cù uOpenAI
mudellu èLLMChain
da LangChain. L'utilizatore hè incaricatu di determinà se ogni rivendicazione hè precisa o incorrecta è furnisce una ghjustificazione per quelli chì sò. - lu
answer_chain
usa l'outputs da uquestion_chain
,assumptions_chain
, efact_checker_chain
cum'è inputs per creà una risposta à a quistione di l'utilizatori utilizendu e dati pruduciutu da e catene prima. U mudellu per questa catena dumanda chì l'utilizatore risponde à a prima dumanda utilizendu i fatti chì sò stati creati. - Per furnisce a risposta definitiva à a dumanda di l'utilizatori basatu annantu à l'infurmazioni prudutte da e catene precedenti, integremu queste catene in a catena generale. Dopu chì e catene sò finite, usemu
st.success()
per mustrà l'utilizatori a suluzione.
cunchiusioni
Pudemu simpricimenti incatena inseme diverse azzioni di mudelli di lingua per creà pipeline più cumplicate usendu u SimpleSequentialChain
modulu di LangChain. Per una larga varietà di applicazioni NLP, cumprese chatbots, sistemi di dumande è risposte, è strumenti di traduzzione di lingua, questu pò esse assai utile.
U splendore di LangChain si trova in a so capacità di astrazione, chì permette à l'utilizatori di cuncentrazione nantu à u prublema attuale piuttostu cà i specifichi di u mudellu di lingua.
LangChain rende u prucessu di creazione di mudelli di lingua sofisticati più faciule d'utilizazione offrendu mudelli pre-furmati è una selezzione di mudelli.
Vi dà l'opzione di fine-tune i mudelli di lingua cù i so dati, facendu simplice per persunalizà i mudelli di lingua. Questu permette u sviluppu di mudelli più precisi, specifichi di u duminiu chì, per un travagliu determinatu, superanu i mudelli furmati.
lu SimpleSequentialChain
U modulu è altre caratteristiche di LangChain facenu un strumentu efficace per sviluppà rapidamente è implementà sistemi NLP sofisticati.
Lascia un Audiolibro