Schiță rapidă
Această postare va arăta:
Cum să utilizați un agent pentru a returna o ieșire structurată în LangChain
- Instalarea cadrelor
- Mediul OpenAI
- Crearea unui magazin de vectori
- Stabilirea Căii
- Încărcarea și împărțirea datelor
- Crearea unui Retriever
Metoda 1: Combinarea agentului cu Vector Stores
Metoda 2: Utilizarea agentului ca router
Metoda 3: Utilizarea agentului cu Multi-Hop Vector Store
Cum să utilizați un agent pentru a returna o ieșire structurată în LangChain?
Dezvoltatorul folosește agenți pentru a ruta între bazele de date care conțin date de antrenament pentru modele. Un agent are planul întregului proces prin stocarea tuturor pașilor. Agentul are instrumentele necesare pentru a efectua toate aceste activități pentru a finaliza procesul. De asemenea, utilizatorul poate folosi agentul pentru a obține date din diferite depozite de date pentru a diversifica modelul.
Pentru a învăța procesul de combinare a agenților și a magazinelor de vectori în LangChain, pur și simplu urmați pașii enumerați:
Pasul 1: Instalarea cadrelor
Mai întâi, instalați modulul LangChain și dependențele acestuia pentru a combina agenții și magazinele de vectori:
pip install langchain
În acest ghid, folosim baza de date Chroma care poate stoca date în diferite locații sau tabele:
pip install chromadb
Pentru o mai bună înțelegere a datelor, împărțiți fișierele mari în bucăți mai mici utilizând tokenizerul tiktoken:
pip install tiktoken
OpenAI este modulul care poate fi folosit pentru a construi modelul de limbaj mare în cadrul LangChain:
pip install openai
Pasul 2: Mediul OpenAI
Următorul pas aici este să configura mediul folosind cheia API a OpenAI, care poate fi extrasă din contul oficial OpenAI:
import tuimport getpass
tu . aproximativ [ „OPENAI_API_KEY” ] = getpass . getpass ( „Cheie API OpenAI:” )
Acum, încărcați datele din sistemul local în colaboratorul Google pentru a le utiliza în viitor:
din Google. colab import fişiereîncărcat = fișiere. încărcați ( )
Pasul 3: Crearea unui magazin de vectori
Acest pas configurează prima componentă a sarcinii noastre, care este un magazin de vectori pentru stocarea datelor încărcate. Configurarea depozitelor de vectori necesită biblioteci care pot fi importate din diferite dependențe ale LangChain:
din langchain. înglobări . openai import OpenAIEmbeddings#Vector stochează dependența pentru a obține baza de date sau vectorul necesar
din langchain. vectorstores import Chroma
#Text Splitter este folosit pentru a converti textul mare în bucăți mai mici
din langchain. text_splitter import CharacterTextSplitter
din langchain. llms import OpenAI
din langchain. document_loaders import WebBaseLoader
din langchain. lanţuri import RecuperareQA
llm = OpenAI ( temperatura = 0 )
Pasul 4: Stabilirea căii
După importarea bibliotecilor, pur și simplu setați calea pentru accesarea depozitelor de vectori înainte de a stoca datele în ele:
din calea lib import calepărţi_relevante = [ ]
pentru p în cale ( '.' ) . absolut ( ) . părți :
părţi_relevante. adăuga ( p )
dacă părţi_relevante [ - 3 : ] == [ 'langchain' , 'docs' , 'module' ] :
pauză
#Conditional Statement în interiorul buclei pentru a seta calea pentru fiecare bază de date
doc_path = str ( cale ( *părți_relevante ) / „state_of_the_union.txt” )
Pasul 5: Încărcarea și împărțirea datelor
Acum, pur și simplu încărcați datele și împărțiți-le în bucăți mai mici pentru a le îmbunătăți lizibilitatea și înțelegerea. Creați înglobări ale datelor prin conversia textului în numere, făcându-și spațiile vectoriale și stocându-le în baza de date Chorma:
din langchain. document_loaders import TextLoader#Încărcarea setului de date din calea acestuia și stocarea bucăților sale mai mici în baza de date
încărcător = TextLoader ( doc_path )
documente = încărcător. sarcină ( )
text_splitter = CharacterTextSplitter ( chunk_size = 2000 , chunk_overlap = 0 )
textele = text_splitter. split_documents ( documente )
#Convertiți textul în numere și stocați înglobările în baza de date
înglobări = OpenAIEmbeddings ( )
docsearch = Chroma. din_documente ( textele , înglobări , nume_colecție = 'starea-uniunii' )
Pasul 6: Crearea unui Retriever
Pentru a combina depozitele de agenți și vectori, este necesar să creați un retriever folosind metoda RetrievalQA() din cadrul LangChain. Această metodă de recuperare este recomandată pentru a obține date din magazinele de vectori folosind agenții ca instrument de lucru cu bazele de date:
stare_de_unire = RecuperareQA. din_tip_lanț (llm = llm , tip_lanț = 'chestie' , copoi = docsearch. ca_retriever ( )
)
Încărcați un alt set de date pentru a integra agentul cu mai multe seturi de date sau magazine de vectori:
încărcător = WebBaseLoader ( „https://beta.ruff.rs/docs/faq/” )Stocați setul de date ruff în chromadb după ce ați creat bucățile mai mici de date cu vectorii de încorporare:
docs = încărcător. sarcină ( )ruff_texts = text_splitter. split_documents ( docs )
ruff_db = Chroma. din_documente ( ruff_texts , înglobări , nume_colecție = 'ruf' )
ruf = RecuperareQA. din_tip_lanț (
llm = llm , tip_lanț = 'chestie' , copoi = ruff_db. ca_retriever ( )
)
Metoda 1: Combinarea agentului cu Vector Stores
Prima metodă de a combina atât agenții, cât și depozitele de vectori pentru a extrage informații este menționată mai jos:
Pasul 1: Configurați instrumentele
Acum că stocurile de vectori sunt configurate, trecem spre construirea celei de-a doua componente a procesului nostru, adică agentul. Pentru a crea agentul pentru proces, importați bibliotecile folosind dependențe precum agenți, instrumente etc.
din langchain. agenţi import initialize_agentdin langchain. agenţi import AgentType
#Obținerea de instrumente de la LangChain pentru a construi agentul
din langchain. unelte import BaseTool
din langchain. llms import OpenAI
#Obținerea LLMMathChain din lanțuri pentru a construi modelul de limbaj
din langchain. lanţuri import LLMathChain
din langchain. utilitati import SerpAPIWrapper
din langchain. agenţi import Instrument
Configurați instrumentele care vor fi utilizate cu agenții utilizând sistemul QA sau recuperarea configurată mai devreme cu numele și descrierea instrumentelor:
unelte = [Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată” ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările despre ruff (un linter python) cu intrare ca o întrebare complet formată” ,
) ,
]
Pasul 2: Inițializați agentul
Odată ce instrumentele sunt configurate, pur și simplu setați agentul în argumentul metodei initializa_agent(). Agentul pe care îl folosim aici este ZERO_SHOT_REACT_DESCRIPTION împreună cu instrumentele, llm (model de limbaj) și verbose:
agent = initialize_agent (unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat
)
Pasul 3: Testați agentul
Pur și simplu executați agentul folosind metoda run() care conține întrebarea în argumentul său:
agent. alerga („Ce a spus președintele Joe Biden despre kanji maro în adresă”
)
Următoarea captură de ecran afișează răspunsul extras din ambele depozite de date folosind observația stocată în memoria agentului:
Metoda 2: Utilizarea agentului ca router
O altă modalitate de a combina ambele componente este prin utilizarea agentului ca router și următoarele explică procesul:
Pasul 1: Configurați instrumentele
Utilizarea agentului ca router înseamnă că sistemul RetrievalQA va returna rezultatul direct, deoarece instrumentele sunt configurate pentru a returna rezultatul direct:
unelte = [#configurarea instrumentelor necesare pentru a construi agentul pentru obținerea datelor din date
Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca întrebare completă” ,
return_direct = Adevărat ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările despre ruff (un linter python) cu intrare ca întrebare completă” ,
return_direct = Adevărat ,
) ,
]
Pasul 2: Inițializați și testați agentul
După setarea instrumentelor, pur și simplu setați agentul care poate fi folosit doar ca router folosind metoda initialize_agent():
agent = initialize_agent (unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat
)
Testați agentul dând întrebarea de intrare în metoda agent.run() executând următoarea comandă:
agent. alerga („Ce a spus președintele Joe Biden despre kanji maro în adresă”
)
Ieșire
Captura de ecran de ieșire arată că agentul a returnat pur și simplu răspunsul la întrebare din setul de date extras de sistemul RetrievalQA:
Metoda 3: Utilizarea agentului cu Multi-Hop Vector Store
A treia metodă în care dezvoltatorii pot combina ambele depozite de agenți și vectori este pentru interogările de stocare de vectori multi-hop. Următoarea secțiune explică procesul complet:
Pasul 1: Configurați instrumentele
Primul pas este, ca de obicei, configurarea instrumentelor utilizate pentru construirea agenților pentru extragerea datelor din depozitele de date:
unelte = [Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată, fără referire la niciun pronume din conversația anterioară” ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată, fără referire la niciun pronume din conversația anterioară” ,
) ,
]
Pasul 2: Inițializați și testați agentul
După aceea, construiți variabila agent folosind metoda initialize_agent() cu numele agentului:
agent = initialize_agent (unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat
)
Rulați agentul folosind întrebarea multi-hop care conține mai multe aspecte sau caracteristici, deoarece următorul bloc de cod conține o astfel de întrebare:
agent. alerga („Ce instrument folosește Ruff pentru a rula notebook-urile Python și a menționat vreunul dintre vorbitori instrumentul în adresa lor”
)
Ieșire
Următoarea captură de ecran sugerează că agentul trebuie să rezolve întrebarea pentru a înțelege complexitatea acesteia. A returnat răspunsul extras de sistemul QA din multiplele depozite de date pe care le-am încărcat mai devreme în proces:
Acesta este totul despre cum să combinați agenții și magazinele de vectori în LangChain.
Concluzie
Pentru a combina agenții cu magazinele de vectori din LangChain, începeți cu instalarea modulelor pentru a configura mediul și a încărca seturile de date. Configurați depozitele de vectori pentru a încărca datele împărțindu-le mai întâi în bucăți mai mici și apoi construiți modelul de limbaj folosind metoda OpenAI(). Configurați agentul pentru a-l integra cu magazinul de vectori pentru a extrage date pentru diferite tipuri de interogări. Acest articol a elaborat procesul de combinare a agenților și a magazinelor de vectori în LangChain.