Contorno rapido
Questo post mostrerà:
Come utilizzare un agente per restituire un output strutturato in LangChain
- Installazione di framework
- Ambiente OpenAI
- Creazione di un negozio di vettori
- Impostazione del percorso
- Caricamento e suddivisione dei dati
- Creazione di un documentalista
Metodo 1: combinazione dell'agente con i negozi di vettori
Metodo 2: utilizzo dell'agente come router
Metodo 3: utilizzo dell'agente con archivio vettoriale multi-hop
Come utilizzare un agente per restituire un output strutturato in LangChain?
Lo sviluppatore utilizza agenti per instradare tra i database contenenti dati di addestramento per i modelli. Un agente dispone del progetto completo del processo memorizzando tutti i passaggi. L'agente ha gli strumenti per eseguire tutte queste attività per completare il processo. L'utente può anche utilizzare l'agente per ottenere dati da diversi archivi dati per rendere diverso il modello.
Per apprendere il processo di combinazione di agenti e negozi di vettori in LangChain, segui semplicemente i passaggi elencati:
Passaggio 1: installazione dei framework
Innanzitutto, installa il modulo LangChain e le sue dipendenze per combinare agenti e archivi vettoriali:
pip installa langchain
In questa guida utilizziamo il database Chroma che può memorizzare i dati in diverse posizioni o tabelle:
pip installa chromadb
Per comprendere meglio i dati, dividi i file di grandi dimensioni in blocchi più piccoli utilizzando il tokenizzatore tiktoken:
pip installa tiktoken
OpenAI è il modulo che può essere utilizzato per costruire il modello linguistico di grandi dimensioni nel framework LangChain:
pip installa openai
Passaggio 2: ambiente OpenAI
Il prossimo passo qui è quello di impostare l'ambiente utilizzando la chiave API di OpenAI che può essere estratta dall'account ufficiale di OpenAI:
importare Voiimportare getpass
Voi . circa [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Chiave API OpenAI:' )
Ora carica i dati dal sistema locale al collaboratore Google per poterli utilizzare in futuro:
da Google. ET AL importare Filecaricato = File. caricamento ( )
Passaggio 3: creazione di un archivio di vettori
Questo passaggio configura il primo componente della nostra attività che è un archivio vettoriale per l'archiviazione dei dati caricati. La configurazione degli archivi vettoriali richiede le librerie che possono essere importate da diverse dipendenze di LangChain:
da langchain. incastri . openai importare OpenAIEmbeddings#Vector memorizza la dipendenza per ottenere il database o il vettore richiesto
da langchain. vectorstores importare Croma
#Il divisore di testo viene utilizzato per convertire il testo di grandi dimensioni in blocchi più piccoli
da langchain. text_splitter importare CharacterTextSplitter
da langchain. llms importare OpenAI
da langchain. document_loaders importare WebBaseLoader
da langchain. Catene importare RecuperoQA
llm = OpenAI ( temperatura = 0 )
Passaggio 4: impostazione del percorso
Dopo aver importato le librerie, è sufficiente impostare il percorso per accedere agli archivi vettoriali prima di memorizzarvi i dati:
da pathlib importare Sentieroparti_rilevanti = [ ]
per P In Sentiero ( '.' ) . assoluto ( ) . parti :
parti_rilevanti. aggiungere ( P )
Se parti_rilevanti [ - 3 : ] == [ 'langchain' , 'documenti' , 'moduli' ] :
rottura
#Istruzione condizionale all'interno del ciclo per impostare il percorso per ciascun database
percorso_doc = stra ( Sentiero ( *parti_rilevanti ) / 'stato_dell_unione.txt' )
Passaggio 5: caricamento e suddivisione dei dati
Ora, carica semplicemente i dati e dividili in parti più piccole per migliorarne la leggibilità e la comprensibilità. Crea incorporamenti dei dati convertendo il testo in numeri creando i loro spazi vettoriali e memorizzandoli nel database Chorma:
da langchain. document_loaders importare TextLoader#Caricamento del set di dati dal suo percorso e memorizzazione dei blocchi più piccoli nel database
caricatore = TextLoader ( percorso_doc )
documenti = caricatore. carico ( )
text_splitter = CharacterTextSplitter ( dimensione_pezzo = 2000 , pezzo_sovrapposizione = 0 )
testi = text_splitter. documenti_divisi ( documenti )
#Converti il testo in numeri e memorizza gli incorporamenti nel database
incastri = OpenAIEmbeddings ( )
docsearch = Croma. da_documenti ( testi , incastri , nome_raccolta = 'stato dell'unione' )
Passaggio 6: creazione di un retriever
Per combinare archivi di agenti e vettori, è necessario creare un retriever utilizzando il metodo RetrievalQA() dal framework LangChain. Questo metodo di recupero è consigliato per ottenere dati dagli archivi vettoriali utilizzando gli agenti come strumento per lavorare con i database:
stato_dell'unione = RecuperoQA. from_chain_type (llm = llm , tipo_catena = 'cose' , documentalista = docsearch. as_retriever ( )
)
Carica un altro set di dati per integrare l'agente con più set di dati o archivi vettoriali:
caricatore = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Memorizza il set di dati ruff nel chromadb dopo aver creato anche i blocchi più piccoli di dati con i vettori di incorporamento:
documenti = caricatore. carico ( )ruff_texts = text_splitter. documenti_divisi ( documenti )
ruff_db = Croma. da_documenti ( ruff_texts , incastri , nome_raccolta = 'gorgiera' )
gorgiera = RecuperoQA. from_chain_type (
llm = llm , tipo_catena = 'cose' , documentalista = ruff_db. as_retriever ( )
)
Metodo 1: combinazione dell'agente con i negozi di vettori
Il primo metodo per combinare agenti e archivi di vettori per estrarre informazioni è menzionato di seguito:
Passaggio 1: configura gli strumenti
Ora che gli archivi vettoriali sono configurati, passiamo alla costruzione del secondo componente del nostro processo, ovvero l'agente. Per creare l'agente per il processo, importa le librerie utilizzando le dipendenze come agenti, strumenti, ecc.
da langchain. agenti importare inizializza_agenteda langchain. agenti importare Tipo agente
#Ottenere strumenti da LangChain per creare l'agente
da langchain. utensili importare BaseTool
da langchain. llms importare OpenAI
#Ottenere LLMMathChain dalle catene per costruire il modello linguistico
da langchain. Catene importare LLMMathChain
da langchain. utilità importare SerpAPIWrapper
da langchain. agenti importare Attrezzo
Configura gli strumenti da utilizzare con gli agenti utilizzando il sistema QA o il recupero configurato in precedenza con il nome e la descrizione degli strumenti:
utensili = [Attrezzo (
nome = 'Sistema di garanzia della qualità dello Stato dell'Unione' ,
funz = stato_dell'unione. correre ,
descrizione = 'Fornisce risposte alle domande relative al set di dati caricato con input come domanda completamente formata' ,
) ,
Attrezzo (
nome = 'Sistema di QA Ruff' ,
funz = gorgiera. correre ,
descrizione = 'Fornisce risposte alle domande su ruff (un linter python) con input come domanda completamente formata' ,
) ,
]
Passaggio 2: inizializzare l'agente
Una volta configurati gli strumenti, è sufficiente impostare l'agente nell'argomento del metodo inizializa_agent(). L'agente che stiamo utilizzando qui è il ZERO_SHOT_REACT_DESCRIPTION insieme agli strumenti, llm (modello linguistico) e verbose:
agente = inizializza_agente (utensili , llm , agente = Tipo agente. ZERO_SHOT_REACT_DESCRIPTION , prolisso = VERO
)
Passaggio 3: testare l'agente
Esegui semplicemente l'agente utilizzando il metodo run() che contiene la domanda nel suo argomento:
agente. correre ('Cosa ha detto il presidente Joe Biden riguardo ai kanji marroni nel discorso'
)
La schermata seguente mostra la risposta estratta da entrambi gli archivi dati utilizzando l'osservazione archiviata nella memoria dell'agente:
Metodo 2: utilizzo dell'agente come router
Un altro modo per combinare entrambi i componenti è utilizzare l'agente come router e quanto segue spiega il processo:
Passaggio 1: configura gli strumenti
Utilizzare l'agente come router significa che il sistema RetrievalQA restituirà l'output direttamente poiché gli strumenti sono configurati per restituire direttamente l'output:
utensili = [#configurazione degli strumenti richiesti per creare l'agente per ottenere dati dai dati
Attrezzo (
nome = 'Sistema di garanzia della qualità dello Stato dell'Unione' ,
funz = stato_dell'unione. correre ,
descrizione = 'Fornisce risposte alle domande relative al set di dati caricato con input come domanda completa' ,
ritorno_diretto = VERO ,
) ,
Attrezzo (
nome = 'Sistema di QA Ruff' ,
funz = gorgiera. correre ,
descrizione = 'Fornisce risposte alle domande su ruff (un linter python) con input come domanda completa' ,
ritorno_diretto = VERO ,
) ,
]
Passaggio 2: inizializzare e testare l'agente
Dopo aver impostato gli strumenti è sufficiente impostare l'agente che può essere utilizzato esclusivamente come router utilizzando il metodo inizializzare_agent():
agente = inizializza_agente (utensili , llm , agente = Tipo agente. ZERO_SHOT_REACT_DESCRIPTION , prolisso = VERO
)
Testare l'agente fornendo la domanda di input nel metodo agent.run() eseguendo il seguente comando:
agente. correre ('Cosa ha detto il presidente Joe Biden riguardo ai kanji marroni nel discorso'
)
Produzione
Lo screenshot di output mostra che l'agente ha semplicemente restituito la risposta alla domanda dal set di dati estratto dal sistema RetrievalQA:
Metodo 3: utilizzo dell'agente con archivio vettoriale multi-hop
Il terzo metodo in cui gli sviluppatori possono combinare sia gli archivi degli agenti che quelli dei vettori riguarda le query dell'archivio vettoriale multi-hop. La sezione seguente spiega il processo completo:
Passaggio 1: configura gli strumenti
Il primo passo è, come al solito, la configurazione degli strumenti utilizzati per costruire gli agenti per estrarre i dati dai datastore:
utensili = [Attrezzo (
nome = 'Sistema di garanzia della qualità dello Stato dell'Unione' ,
funz = stato_dell'unione. correre ,
descrizione = 'Fornisce risposte alle domande relative al set di dati caricato con input come domanda completamente formata, senza fare riferimento ad alcun pronome della conversazione precedente' ,
) ,
Attrezzo (
nome = 'Sistema di QA Ruff' ,
funz = gorgiera. correre ,
descrizione = 'Fornisce risposte alle domande relative al set di dati caricato con input come domanda completamente formata, senza fare riferimento ad alcun pronome della conversazione precedente' ,
) ,
]
Passaggio 2: inizializzare e testare l'agente
Successivamente, crea la variabile agent utilizzando il metodo inizializzare_agent() con il nome dell'agente:
agente = inizializza_agente (utensili , llm , agente = Tipo agente. ZERO_SHOT_REACT_DESCRIPTION , prolisso = VERO
)
Esegui l'agente utilizzando la domanda multi-hop che contiene più di un aspetto o funzionalità poiché il seguente blocco di codice contiene tale domanda:
agente. correre ('Quale strumento utilizza Ruff per eseguire i notebook Python e qualcuno degli oratori ha menzionato lo strumento nel proprio indirizzo'
)
Produzione
Lo screenshot seguente suggerisce che l'agente deve elaborare la domanda per comprenderne la complessità. Ha restituito la risposta estratta dal sistema di QA dai molteplici archivi dati che abbiamo caricato in precedenza nel processo:
Questo è tutto su come combinare agenti e negozi di vettori in LangChain.
Conclusione
Per combinare gli agenti con gli archivi vettoriali in LangChain, iniziare con l'installazione dei moduli per configurare l'ambiente e caricare i set di dati. Configura gli archivi vettoriali per caricare i dati suddividendoli prima in blocchi più piccoli, quindi crea il modello linguistico utilizzando il metodo OpenAI(). Configura l'agente per integrarlo con l'archivio vettoriale per estrarre dati per diversi tipi di query. Questo articolo ha approfondito il processo di combinazione di agenti e negozi di vettori in LangChain.