Rychlý přehled
Tento příspěvek zobrazí:
Jak používat agenta k vrácení strukturovaného výstupu v LangChain
- Instalace frameworků
- Prostředí OpenAI
- Vytvoření vektorového obchodu
- Nastavení cesty
- Načítání a dělení dat
- Vytvoření retrívra
Metoda 1: Kombinace agenta s vektorovými obchody
Metoda 2: Použití agenta jako směrovače
Metoda 3: Použití agenta s Multi-Hop Vector Store
Jak používat agenta k vrácení strukturovaného výstupu v LangChain?
Vývojář používá agenty ke směrování mezi databázemi obsahujícími trénovací data pro modely. Agent má plán celého procesu uložením všech kroků. Agent má nástroje k provedení všech těchto činností k dokončení procesu. Uživatel může také použít agenta k získání dat z různých datových úložišť, aby byl model různorodý.
Chcete-li se naučit proces kombinování agentů a vektorových obchodů v LangChain, jednoduše postupujte podle uvedených kroků:
Krok 1: Instalace frameworků
Nejprve nainstalujte modul LangChain a jeho závislosti pro kombinování agentů a vektorových úložišť:
pip install langchain
V této příručce používáme databázi Chroma, která může ukládat data do různých umístění nebo tabulek:
pip install chromadb
Chcete-li lépe porozumět datům, rozdělte velké soubory na menší části pomocí tokenizeru tiktoken:
pip nainstalovat tiktoken
OpenAI je modul, který lze použít k vytvoření velkého jazykového modelu v rámci LangChain:
pip install openai
Krok 2: Prostředí OpenAI
Dalším krokem je zde nastavit prostředí pomocí klíče API OpenAI, který lze extrahovat z oficiálního účtu OpenAI:
import vyimport getpass
vy . přibližně [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Klíč OpenAI API:' )
Nyní nahrajte data z místního systému do služby Google collaboratory, abyste je mohli v budoucnu použít:
z Google. ET AL import souborynahráno = soubory. nahrát ( )
Krok 3: Vytvoření obchodu Vector
Tento krok nakonfiguruje první komponentu naší úlohy, kterou je vektorové úložiště pro ukládání nahraných dat. Konfigurace úložiště vektorů vyžaduje knihovny, které lze importovat z různých závislostí LangChain:
z langchain. vložení . openai import OpenAIEmbeddings#Vector ukládá závislost pro získání požadované databáze nebo vektoru
z langchain. vectorstores import Chroma
#Text splitter se používá k převodu velkého textu na menší kusy
z langchain. text_splitter import CharacterTextSplitter
z langchain. llms import OpenAI
z langchain. nakladače dokumentů import WebBaseLoader
z langchain. řetězy import RetrievalQA
llm = OpenAI ( teplota = 0 )
Krok 4: Nastavení cesty
Po importu knihoven jednoduše nastavte cestu pro přístup k vektorovým úložištím, než do nich uložíte data:
z pathlib import Cestarelevantní_části = [ ]
pro p v Cesta ( '.' ) . absolutní ( ) . díly :
relevantní_části. připojit ( p )
-li relevantní_části [ - 3 : ] == [ 'langchain' , 'dokumenty' , 'moduly' ] :
přestávka
#Podmíněný příkaz uvnitř smyčky pro nastavení cesty pro každou databázi
cesta_dokumentu = str ( Cesta ( *relevantní_části ) / 'state_of_the_union.txt' )
Krok 5: Načtení a rozdělení dat
Nyní jednoduše načtěte data a rozdělte je na menší části, aby byla lepší čitelnost a srozumitelnost. Vytvořte vložení dat převodem textu na čísla, vytvořením jejich vektorových mezer a jejich uložením do databáze Chorma:
z langchain. nakladače dokumentů import TextLoader#Načítání datové sady z její cesty a ukládání jejích menších částí do databáze
nakladač = TextLoader ( cesta_dokumentu )
dokumenty = nakladač. zatížení ( )
text_splitter = CharacterTextSplitter ( chunk_size = 2000 , chunk_overlap = 0 )
texty = text_splitter. split_documents ( dokumenty )
# Převeďte text na čísla a uložte vložení do databáze
vložení = OpenAIEmbeddings ( )
docsearch = Chroma. z_dokumentů ( texty , vložení , název_kolekce = 'svazový stát' )
Krok 6: Vytvoření retrívra
Chcete-li kombinovat úložiště agentů a vektorů, je nutné vytvořit retriever pomocí metody RetrievalQA() z rámce LangChain. Tato metoda vyhledávání se doporučuje pro získání dat z vektorových úložišť pomocí agentů jako nástroje pro práci s databázemi:
state_of_union = RetrievalQA. from_chain_type (llm = llm , typ_řetězce = 'věci' , retriever = docsearch. jako_retrívr ( )
)
Načtěte další datovou sadu pro integraci agenta s více datovými sadami nebo vektorovými úložišti:
nakladač = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Uložte datovou sadu ruff do chromadb po vytvoření menších částí dat také s vektory pro vkládání:
docs = nakladač. zatížení ( )ruff_texts = text_splitter. split_documents ( docs )
ruff_db = Chroma. z_dokumentů ( ruff_texts , vložení , název_kolekce = 'ruff' )
límec = RetrievalQA. from_chain_type (
llm = llm , typ_řetězce = 'věci' , retriever = ruff_db. jako_retrívr ( )
)
Metoda 1: Kombinace agenta s vektorovými obchody
První metoda kombinace agentů a vektorových úložišť pro extrakci informací je uvedena níže:
Krok 1: Nakonfigurujte nástroje
Nyní, když jsou vektorová úložiště nakonfigurována, pokračujeme k budování druhé složky našeho procesu, tj. agenta. Chcete-li vytvořit agenta pro proces, importujte knihovny pomocí závislostí, jako jsou agenti, nástroje atd.
z langchain. agenti import inicializovat_agentaz langchain. agenti import Typ agenta
#Získání nástrojů z LangChain k sestavení agenta
z langchain. nástroje import Základní nástroj
z langchain. llms import OpenAI
#Získání LLMMathChain z řetězců pro vytvoření jazykového modelu
z langchain. řetězy import LLMMathChain
z langchain. utility import SerpAPIWrapper
z langchain. agenti import Nástroj
Nakonfigurujte nástroje pro použití s agenty pomocí systému QA nebo vyhledávání nakonfigurovaného dříve s názvem a popisem nástrojů:
nástroje = [Nástroj (
název = 'State of Union systém kontroly kvality' ,
func = state_of_union. běh ,
popis = 'Poskytuje odpovědi na otázky související s načtenou datovou sadou se vstupem jako plně vytvořená otázka' ,
) ,
Nástroj (
název = 'Ruff QA System' ,
func = límec. běh ,
popis = 'Poskytuje odpovědi na otázky o ruffovi (python linter) se vstupem jako plně vytvořenou otázkou' ,
) ,
]
Krok 2: Inicializujte agenta
Jakmile jsou nástroje nakonfigurovány, jednoduše nastavte agenta v argumentu metody initializa_agent(). Agent, kterého zde používáme, je ZERO_SHOT_REACT_DESCRIPTION spolu s nástroji, llm (jazykový model) a verbose:
činidlo = inicializovat_agenta (nástroje , llm , činidlo = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Skutečný
)
Krok 3: Otestujte agenta
Jednoduše spusťte agenta pomocí metody run(), která ve svém argumentu obsahuje otázku:
činidlo. běh ('Co řekl prezident Joe Biden o kanji brown v projevu?'
)
Následující snímek obrazovky zobrazuje odpověď extrahovanou z obou úložišť dat pomocí pozorování uloženého v paměti agenta:
Metoda 2: Použití agenta jako směrovače
Dalším způsobem, jak zkombinovat obě komponenty, je použití agenta jako routeru a následující postup vysvětluje:
Krok 1: Nakonfigurujte nástroje
Použití agenta jako směrovače znamená, že systém RetrievalQA vrátí výstup přímo, protože nástroje jsou nakonfigurovány tak, aby výstup vracely přímo:
nástroje = [#configuring nástrojů potřebných k sestavení agenta pro získávání dat z dat
Nástroj (
název = 'State of Union systém kontroly kvality' ,
func = state_of_union. běh ,
popis = 'Poskytuje odpovědi na otázky související s načtenou datovou sadou se vstupem jako úplnou otázkou' ,
return_direct = Skutečný ,
) ,
Nástroj (
název = 'Ruff QA System' ,
func = límec. běh ,
popis = 'Poskytuje odpovědi na otázky o ruffu (python linter) se vstupem jako úplnou otázkou' ,
return_direct = Skutečný ,
) ,
]
Krok 2: Inicializujte a otestujte agenta
Po nastavení nástrojů jednoduše nastavte agenta, kterého lze použít pouze jako router pomocí metody initialize_agent():
činidlo = inicializovat_agenta (nástroje , llm , činidlo = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Skutečný
)
Otestujte agenta zadáním vstupní otázky v metodě agent.run() provedením následujícího příkazu:
činidlo. běh ('Co řekl prezident Joe Biden o kanji brown v projevu?'
)
Výstup
Výstupní snímek obrazovky ukazuje, že agent jednoduše vrátil odpověď na otázku z datové sady extrahované systémem RetrievalQA:
Metoda 3: Použití agenta s Multi-Hop Vector Store
Třetí metoda, ve které mohou vývojáři kombinovat úložiště agentů a vektorů, je pro víceskokové dotazy na vektorové úložiště. Následující část vysvětluje celý proces:
Krok 1: Nakonfigurujte nástroje
Prvním krokem je jako obvykle konfigurace nástrojů používaných pro sestavení agentů pro extrakci dat z datových úložišť:
nástroje = [Nástroj (
název = 'State of Union systém kontroly kvality' ,
func = state_of_union. běh ,
popis = 'Poskytuje odpovědi na otázky související s načtenou datovou sadou se vstupem jako plně vytvořenou otázkou, která neodkazuje na žádná zájmena z předchozí konverzace' ,
) ,
Nástroj (
název = 'Ruff QA System' ,
func = límec. běh ,
popis = 'Poskytuje odpovědi na otázky související s načtenou datovou sadou se vstupem jako plně vytvořenou otázkou, která neodkazuje na žádná zájmena z předchozí konverzace' ,
) ,
]
Krok 2: Inicializujte a otestujte agenta
Poté vytvořte proměnnou agenta pomocí metody initialize_agent() s názvem agenta:
činidlo = inicializovat_agenta (nástroje , llm , činidlo = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Skutečný
)
Spusťte agenta pomocí víceskokové otázky, která obsahuje více než jeden aspekt nebo funkci, protože takovou otázku obsahuje následující blok kódu:
činidlo. běh ('Jaký nástroj používá ruff k běhu přes notebooky Python a zmínil někdo z řečníků tento nástroj ve své adrese?'
)
Výstup
Následující snímek obrazovky naznačuje, že agent musí projít otázkou, aby pochopil její složitost. Vrátil odpověď extrahovanou systémem QA z více datových úložišť, která jsme nahráli dříve v procesu:
To je vše o tom, jak kombinovat agenty a vektorové obchody v LangChain.
Závěr
Chcete-li kombinovat agenty s vektorovými obchody v LangChain, začněte instalací modulů pro nastavení prostředí a načtení datových sad. Nakonfigurujte vektorová úložiště pro načítání dat tak, že je nejprve rozdělíte na menší části a poté vytvoříte jazykový model pomocí metody OpenAI(). Nakonfigurujte agenta tak, aby jej integroval s vektorovým úložištěm pro extrahování dat pro různé druhy dotazů. Tento článek rozvedl proces kombinování agentů a vektorových obchodů v LangChain.