Gyors vázlat
Ez a bejegyzés a következőket fogja mutatni:
Hogyan lehet ügynököt használni egy strukturált kimenet visszaküldésére a LangChainben
- Keretrendszerek telepítése
- OpenAI környezet
- Vektorbolt létrehozása
- Az Útvonal beállítása
- Az adatok betöltése és felosztása
- Retriever létrehozása
1. módszer: Az ágens kombinálása vektortárolókkal
2. módszer: Az ügynök használata útválasztóként
3. módszer: Ügynök használata Multi-Hop Vector Store-ban
Hogyan lehet ügynököt használni a strukturált kimenet visszaküldésére a LangChainben?
A fejlesztő ügynökök segítségével irányítja a modellek betanítási adatait tartalmazó adatbázisokat. Egy ügynök rendelkezik a teljes folyamat tervrajzával az összes lépés tárolásával. Az ügynök rendelkezik az összes ilyen tevékenység végrehajtásához szükséges eszközökkel a folyamat befejezéséhez. A felhasználó arra is használhatja az ügynököt, hogy adatokat szerezzen be a különböző adattárolókból, hogy változatossá tegye a modellt.
Az ágensek és vektortárak LangChainben való kombinálásának folyamatának megismeréséhez egyszerűen kövesse a felsorolt lépéseket:
1. lépés: Keretrendszerek telepítése
Először telepítse a LangChain modult és függőségeit az ügynökök és vektortárolók kombinálásához:
pip install langchain
Ebben az útmutatóban a Chroma adatbázist használjuk, amely különböző helyeken vagy táblákban tárolhat adatokat:
pip install chromadb
Az adatok jobb megértéséhez ossza fel a nagy fájlokat kisebb darabokra a tiktoken tokenizer segítségével:
pip install tiktoken
Az OpenAI az a modul, amely a LangChain keretrendszerben a nagy nyelvi modell felépítésére használható:
pip install openai
2. lépés: OpenAI környezet
A következő lépés itt az állítsa be a környezetet az OpenAI API-kulcsával, amely az OpenAI hivatalos fiókjából kinyerhető:
import teimport getpass
te . hozzávetőlegesen, körülbelül [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API kulcs:' )
Most töltse fel az adatokat a helyi rendszerből a Google együttműködésébe, hogy a jövőben felhasználhassa azokat:
tól től Google. ET AL import fájlokatfeltöltve = fájlokat. feltölteni ( )
3. lépés: Vektortár létrehozása
Ez a lépés konfigurálja feladatunk első összetevőjét, amely egy vektortár a feltöltött adatok tárolására. A vektortárolók konfigurálásához a LangChain különböző függőségeiből importálható könyvtárak szükségesek:
tól től langchain. beágyazások . openai import OpenAIEembeddings#Vector függőséget tárol a szükséges adatbázis vagy vektor beszerzéséhez
tól től langchain. vektortárak import Chroma
A #Szövegosztó a nagy szöveget kisebb darabokra alakítja
tól től langchain. text_splitter import CharacterTextSplitter
tól től langchain. llms import OpenAI
tól től langchain. document_loaders import WebBaseLoader
tól től langchain. láncok import RetrievalQA
llm = OpenAI ( hőfok = 0 )
4. lépés: Az útvonal beállítása
A könyvtárak importálása után egyszerűen állítsa be a vektortárak elérési útvonalát, mielőtt tárolná az adatokat:
tól től pathlib import Pályareleváns_részek = [ ]
számára p ban ben Pálya ( '.' ) . abszolút ( ) . alkatrészek :
releváns_részek. mellékel ( p )
ha releváns_részek [ - 3 : ] == [ 'langchain' , 'dokumentumok' , 'modulok' ] :
szünet
#Feltételes utasítás a cikluson belül az egyes adatbázisok elérési útjának beállításához
doc_path = str ( Pálya ( *releváns_részek ) / 'a_szakszervezet_állapota.txt' )
5. lépés: Az adatok betöltése és felosztása
Most egyszerűen töltse be az adatokat, és ossza fel kisebb részekre, hogy jobb olvashatóságuk és érthetőségük legyen. Hozza létre az adatok beágyazását úgy, hogy a szöveget számokká alakítja, kialakítva a vektortereket, és eltárolja azokat a Chorma adatbázisban:
tól től langchain. document_loaders import TextLoader#Adatkészlet betöltése az elérési útjáról, és a kisebb darabok tárolása az adatbázisban
rakodó = TextLoader ( doc_path )
dokumentumokat = rakodó. Betöltés ( )
text_splitter = CharacterTextSplitter ( chunk_size = 2000 , chunk_overlap = 0 )
szövegek = text_splitter. split_documents ( dokumentumokat )
# Konvertálja a szöveget számokká, és tárolja a beágyazásokat az adatbázisban
beágyazások = OpenAIEembeddings ( )
docsearch = Chroma. from_documents ( szövegek , beágyazások , gyűjtemény_neve = 'szakszervezeti állapot' )
6. lépés: Retriever létrehozása
Az ügynök- és vektortárolók kombinálásához létre kell hozni egy retrievert a RetrievalQA() metódussal a LangChain keretrendszerből. Ez a visszakeresési módszer akkor ajánlott, ha adatokat szeretne lekérni a vektortárakból, az ügynököket használva az adatbázisokkal való munka eszközeként:
szakszervezeti_állapot = RetrievalQA. from_chain_type (llm = llm , lánc_típus = 'dolog' , vizsla = docsearch. mint_retriever ( )
)
Töltsön be egy másik adatkészletet, hogy integrálja az ügynököt több adatkészlettel vagy vektortárral:
rakodó = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Tárolja a ruff adatkészletet a chromadb-ben, miután létrehozta az adat kisebb darabjait a beágyazási vektorokkal is:
dok = rakodó. Betöltés ( )ruff_texts = text_splitter. split_documents ( dok )
ruff_db = Chroma. from_documents ( ruff_texts , beágyazások , gyűjtemény_neve = 'nyakfodor' )
nyakfodor = RetrievalQA. from_chain_type (
llm = llm , lánc_típus = 'dolog' , vizsla = ruff_db. mint_retriever ( )
)
1. módszer: Az ágens kombinálása vektortárolókkal
Az alábbiakban megemlítjük az első módszert az ügynökök és a vektortárak kombinálására az információk kinyerésére:
1. lépés: Konfigurálja az eszközöket
Most, hogy a vektortárolók konfigurálva vannak, továbblépünk a folyamatunk második összetevőjének, azaz az ügynöknek a felépítéséhez. A folyamat ügynökének létrehozásához importálja a könyvtárakat a függőségek, például ügynökök, eszközök stb. használatával.
tól től langchain. ügynökök import inicializálás_ügynöktól től langchain. ügynökök import AgentType
#Eszközök beszerzése a LangChainből az ügynök létrehozásához
tól től langchain. eszközöket import BaseTool
tól től langchain. llms import OpenAI
#LLMMathChain lekérése láncoktól a nyelvi modell felépítéséhez
tól től langchain. láncok import LLMMathChain
tól től langchain. segédprogramok import SerpAPIWrapper
tól től langchain. ügynökök import Eszköz
Konfigurálja az ügynökökhöz használandó eszközöket a minőségbiztosítási rendszer vagy a korábban konfigurált visszakeresés segítségével az eszközök nevével és leírásával:
eszközöket = [Eszköz (
név = 'Az Unió állapotának minőségbiztosítási rendszere' ,
func = szakszervezeti_állapot. fuss ,
leírás = 'Válaszokat ad a betöltött adatkészlettel kapcsolatos kérdésekre, bevitellel teljesen formált kérdésként' ,
) ,
Eszköz (
név = 'Ruff minőségbiztosítási rendszer' ,
func = nyakfodor. fuss ,
leírás = 'Válaszokat ad a ruffdal (python linterrel) kapcsolatos kérdésekre teljesen formált kérdésként' ,
) ,
]
2. lépés: Inicializálja az ügynököt
Az eszközök konfigurálása után egyszerűen állítsa be az ügynököt az inicializa_agent() metódus argumentumában. Az általunk itt használt ügynök a ZERO_SHOT_REACT_DESCRIPTION az eszközökkel együtt, az llm (nyelvi modell) és a részletes:
ügynök = inicializálás_ügynök (eszközöket , llm , ügynök = AgentType. ZERO_SHOT_REACT_DESCRIPTION , bőbeszédű = Igaz
)
3. lépés: Tesztelje az ügynököt
Egyszerűen futtassa az ügynököt a run() metódussal, amely argumentumában tartalmazza a kérdést:
ügynök. fuss ('Mit mondott Joe Biden elnök a kanji brownról a beszédben?'
)
Az alábbi képernyőképen az ügynök memóriájában tárolt megfigyelés alapján mindkét adattárból kinyert válasz látható:
2. módszer: Az ügynök használata útválasztóként
A két komponens egyesítésének másik módja az ügynök útválasztóként való használata, és az alábbiakban ismertetjük a folyamatot:
1. lépés: Konfigurálja az eszközöket
Az ügynök útválasztóként való használata azt jelenti, hogy a RetrievalQA rendszer közvetlenül adja vissza a kimenetet, mivel az eszközök úgy vannak beállítva, hogy közvetlenül adják vissza a kimenetet:
eszközöket = [#az adatokból való adatok lekéréséhez szükséges ügynök felépítéséhez szükséges eszközök konfigurálása
Eszköz (
név = 'Az Unió állapotának minőségbiztosítási rendszere' ,
func = szakszervezeti_állapot. fuss ,
leírás = 'Válaszokat ad a betöltött adatkészlettel kapcsolatos kérdésekre, teljes kérdésként megadva' ,
return_direct = Igaz ,
) ,
Eszköz (
név = 'Ruff minőségbiztosítási rendszer' ,
func = nyakfodor. fuss ,
leírás = 'Válaszokat ad a ruffdal (python linterrel) kapcsolatos kérdésekre, teljes kérdésként megadva' ,
return_direct = Igaz ,
) ,
]
2. lépés: Inicializálja és tesztelje az ügynököt
Az eszközök beállítása után egyszerűen állítsa be az ügynököt, amely kizárólag útválasztóként használható az inicializálás_agent() metódussal:
ügynök = inicializálás_ügynök (eszközöket , llm , ügynök = AgentType. ZERO_SHOT_REACT_DESCRIPTION , bőbeszédű = Igaz
)
Tesztelje az ügynököt az agent.run() metódus bemeneti kérdésének megadásával a következő parancs végrehajtásával:
ügynök. fuss ('Mit mondott Joe Biden elnök a kanji brownról a beszédben?'
)
Kimenet
A kimeneti képernyőképen látható, hogy az ügynök egyszerűen visszaadta a választ a kérdésre a RetrievalQA rendszer által kinyert adatkészletből:
3. módszer: Ügynök használata Multi-Hop Vector Store-ban
A harmadik módszer, amellyel a fejlesztők kombinálhatják az ügynök- és a vektortárakat, a többugrásos vektortároló lekérdezések. A következő szakasz a teljes folyamatot ismerteti:
1. lépés: Konfigurálja az eszközöket
Az első lépés, mint általában, azoknak az eszközöknek a konfigurálása, amelyeket az ügynökök felépítéséhez használnak, hogy adatokat nyerjenek ki az adattárakból:
eszközöket = [Eszköz (
név = 'Az Unió állapotának minőségbiztosítási rendszere' ,
func = szakszervezeti_állapot. fuss ,
leírás = 'Válaszokat ad a betöltött adatkészlettel kapcsolatos kérdésekre teljesen formált kérdésként, nem hivatkozik az előző beszélgetés névmásaira' ,
) ,
Eszköz (
név = 'Ruff minőségbiztosítási rendszer' ,
func = nyakfodor. fuss ,
leírás = 'Válaszokat ad a betöltött adatkészlettel kapcsolatos kérdésekre teljesen formált kérdésként, nem hivatkozik az előző beszélgetés névmásaira' ,
) ,
]
2. lépés: Inicializálja és tesztelje az ügynököt
Ezután építse fel az ügynökváltozót az inicializálás_agent() metódussal az ügynök nevével:
ügynök = inicializálás_ügynök (eszközöket , llm , ügynök = AgentType. ZERO_SHOT_REACT_DESCRIPTION , bőbeszédű = Igaz
)
Futtassa az ügynököt a több ugrásos kérdéssel, amely egynél több szempontot vagy szolgáltatást tartalmaz, mivel a következő kódblokk ilyen kérdést tartalmaz:
ügynök. fuss ('Milyen eszközt használ a ruff, hogy átfusson Python notebookokon, és megemlítette-e valaki az eszközt a címében?'
)
Kimenet
A következő képernyőkép azt sugallja, hogy az ügynöknek végig kell dolgoznia a kérdést, hogy megértse annak összetettségét. Visszaadta a minőségbiztosítási rendszer által a folyamat során korábban feltöltött több adattárból kinyert választ:
Ez minden arról szól, hogyan lehet kombinálni az ügynököket és a vektortárakat a LangChainben.
Következtetés
Az ügynökök és a LangChain vektortárolóinak kombinálásához kezdje a modulok telepítésével a környezet beállításához és az adatkészletek betöltéséhez. Állítsa be a vektortárolókat az adatok betöltésére úgy, hogy először kisebb darabokra bontja, majd az OpenAI() metódussal készítse el a nyelvi modellt. Konfigurálja az ügynököt úgy, hogy integrálja azt a vektortárral, hogy adatokat nyerjen ki a különböző típusú lekérdezésekhez. Ez a cikk az ágensek és vektortárak LangChainben való kombinálásának folyamatát dolgozza fel.