Ez az útmutató bemutatja a memória hozzáadásának folyamatát egy több bemenettel rendelkező lánchoz a LangChainben.
Hogyan lehet memóriát hozzáadni egy lánchoz több bemenettel a LangChainben?
A memória hozzáadható az LLM-ekhez vagy chatbotokhoz a legfrissebb üzenetek vagy adatok tárolására, így a modell megértheti a parancs kontextusát. Ha meg szeretné tanulni a memória hozzáadásának folyamatát a LangChain több bemenettel rendelkező láncához, egyszerűen kövesse az alábbi lépéseket:
1. lépés: Modulok telepítése
Először telepítse a LangChain keretrendszert, mivel számos függőséggel rendelkezik a nyelvi modellek létrehozásához:
pip install langchain
Telepítse a chromadb-t, hogy a memória által használt adatokat tárolja a Chroma vektortárolóban:
pip install chromadb
A Tiktoken a nagy dokumentumok kis darabjainak létrehozására szolgáló tokenizátor, így azok könnyen kezelhetők:
pip install tiktoken
Az OpenAI az a modul, amely láncok és LLM-ek építésére használható az OpenAI() metódus használatával:
pip install openai
2. lépés: A környezet beállítása és az adatok feltöltése
A következő lépés az ehhez a folyamathoz szükséges összes modul telepítése után a környezet kialakítása az OpenAI-fiók API-kulcsának használatával:
import teimport getpass
te . hozzávetőlegesen, körülbelül [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API kulcs:' )
Töltse fel a dokumentumokat a fájlkönyvtár segítségével a láncok felépítéséhez a LangChain keretrendszerben:
tól től Google. ET AL import fájlokatfeltöltve = fájlokat. feltölteni ( )
3. lépés: Importáljon könyvtárakat
A dokumentum sikeres feltöltése után egyszerűen importálja a szükséges könyvtárakat a Langchain modulból:
tól től langchain. beágyazások . openai import OpenAIEembeddingstól től langchain. beágyazások . összefügg import CohereEmbeddings
tól től langchain. text_splitter import CharacterTextSplitter
tól től langchain. vektortárak . rugalmas_vector_search import ElasticVectorSearch
tól től langchain. vektortárak import Chroma
tól től langchain. orvosi boltban . dokumentum import Dokumentum
4. lépés: Memóriaépítés Chroma Database használatával
Most kezdje el felépíteni a vektorteret a korábban feltöltött dokumentum beágyazásainak és tokenjeinek tárolására:
val vel nyisd ki ( 'a_szakszervezet_állapota.txt' ) mint f:a_szakszervezet_állapota = f. olvas ( )
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
szövegek = text_splitter. split_text ( a_szakszervezet_állapota )
beágyazások = OpenAIEembeddings ( )
Állítsa be a Chroma adatbázist a szöveg és a beágyazások tárolására a dokumentumból:
docsearch = Chroma. from_texts (szövegek , beágyazások , metaadatokat = [ { 'forrás' : i } számára én ban ben hatótávolság ( csak ( szövegek ) ) ]
)
Tesztelje a memóriát a parancs kikérésével a lekérdezési változóban, majd hajtsa végre a hasonlóság_search() metódust:
lekérdezés = 'Mikor alakult a NATO'dok = docsearch. Hasonlóság_keresés ( lekérdezés )
5. lépés: A prompt sablon konfigurálása
Ez a lépés elmagyarázza a sablon konfigurálását a promptokhoz a következő könyvtárak importálásával:
tól től langchain. láncok . kérdés_válaszolás import load_qa_chaintól től langchain. llms import OpenAI
tól től langchain. felszólítja import PromptTemplate
tól től langchain. memória import ConversationBufferMemory
Ezután egyszerűen konfigurálja a lekérdezés sablonját vagy szerkezetét, és futtassa a láncot, miután a memóriát hozzáadta a modellhez:
sablon = '''Te modell vagy, aki egy emberrel beszélgetA hosszú dokumentumból és egy kérdésből kivont darabok alapján hozzon létre egy végső választ
{kontextus}
{hist}
Ember: {input}
Chatbot: '''
gyors = PromptTemplate (
bemeneti_változók = [ 'história' , 'bemenet' , 'kontextus' ] , sablon = sablon
)
memória = ConversationBufferMemory ( memória_kulcs = 'história' , bemeneti_kulcs = 'bemenet' )
lánc = load_qa_chain (
OpenAI ( hőfok = 0 ) , lánc_típus = 'dolog' , memória = memória , gyors = gyors
)
6. lépés: A memória tesztelése
Itt az ideje, hogy tesztelje a modellt úgy, hogy felteszi a kérdést a lekérdezési változó segítségével, majd végrehajtja a chain() metódust a paramétereivel:
lekérdezés = 'Mikor alakult a NATO'lánc ( { 'input_documents' : dok , 'bemenet' : lekérdezés } , return_only_outputs = Igaz )
Nyomtassa ki a puffermemóriában tárolt adatokat, mivel a modell által adott válasz a közelmúltban a memóriában tárolódik:
nyomtatás ( lánc. memória . puffer )
Ez annyit jelent, hogy memória hozzáadása a LangChain több bemenettel rendelkező láncához.
Következtetés
Ha memóriát szeretne hozzáadni egy több bemenettel rendelkező lánchoz a LangChainben, egyszerűen telepítse a modulokat és a vektortárat a szöveg és a beágyazások tárolására. Ezt követően töltse fel az adatokat/dokumentumot a helyi rendszerről, majd importálja az adatok tárolásához szükséges könyvtárakat az LLM memória felépítéséhez. Állítsa be a prompt sablont úgy, hogy a legfrissebb üzeneteket a puffermemóriában tárolja, majd szöveges üzenetet küldjön a láncnak. Ez az útmutató részletesen bemutatja a memória hozzáadásának folyamatát egy több bemenettel rendelkező lánchoz a LangChainben.