Tato příručka bude ilustrovat proces přidávání paměti do řetězce s více vstupy v LangChain.
Jak přidat paměť do řetězce s více vstupy v LangChain?
Paměť lze přidat do LLM nebo chatbotů pro uložení nejnovějších zpráv nebo dat, aby model mohl porozumět kontextu příkazu. Chcete-li se naučit proces přidávání paměti do řetězce s více vstupy v LangChain, jednoduše projděte následující kroky:
Krok 1: Nainstalujte moduly
Nejprve nainstalujte rámec LangChain, protože má různé závislosti pro vytváření jazykových modelů:
pip install langchain
Nainstalujte chromadb pro ukládání dat používaných pamětí do úložiště vektorů Chroma:
pip install chromadb
Tiktoken je tokenizér používaný k vytváření malých částí velkých dokumentů, takže je lze snadno spravovat:
pip nainstalovat tiktoken
OpenAI je modul, který lze použít k vytváření řetězců a LLM pomocí metody OpenAI():
pip install openai
Krok 2: Nastavení prostředí a nahrání dat
Dalším krokem po instalaci všech požadovaných modulů pro tento proces je nastavení prostředí pomocí klíče API z účtu OpenAI:
import vyimport getpass
vy . přibližně [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Klíč OpenAI API:' )
Nahrajte dokumenty pomocí knihovny souborů k vytvoření řetězců v rámci LangChain:
z Google. ET AL import souborynahráno = soubory. nahrát ( )
Krok 3: Import knihoven
Jakmile je dokument úspěšně nahrán, jednoduše importujte požadované knihovny z modulu Langchain:
z langchain. vložení . openai import OpenAIEmbeddingsz langchain. vložení . koherovat import CohereEmbeddings
z langchain. text_splitter import CharacterTextSplitter
z langchain. vectorstores . elastic_vector_search import ElasticVectorSearch
z langchain. vectorstores import Chroma
z langchain. lékárna . dokument import Dokument
Krok 4: Vytváření paměti pomocí Chroma databáze
Nyní začněte budovat vektorový prostor pro uložení vložení a tokenů dokumentu nahraného dříve:
s OTEVŘENO ( 'state_of_the_union.txt' ) tak jako F:state_of_the_union = F. číst ( )
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
texty = text_splitter. rozdělený_text ( state_of_the_union )
vložení = OpenAIEmbeddings ( )
Nakonfigurujte databázi Chroma pro ukládání textu a vložení z dokumentu:
docsearch = Chroma. z_textů (texty , vložení , metadata = [ { 'zdroj' : i } pro i v rozsah ( jen ( texty ) ) ]
)
Otestujte paměť zadáním příkazu v proměnné query a poté spusťte metodu podobnosti_hledání():
dotaz = „Kdy vzniklo NATO“dokumenty = docsearch. podobnostní_hledání ( dotaz )
Krok 5: Konfigurace šablony výzvy
Tento krok vysvětluje proces konfigurace šablony pro výzvy importem následujících knihoven:
z langchain. řetězy . otázka_odpovídání import load_qa_chainz langchain. llms import OpenAI
z langchain. vyzve import PromptTemplate
z langchain. Paměť import ConversationBufferMemory
Poté jednoduše nakonfigurujte šablonu nebo strukturu pro dotaz a po přidání paměti do modelu spusťte řetězec:
šablona = '''Jsi modelka, která si povídá s člověkemVzhledem k kouskům extrahovaným z dlouhého dokumentu a otázce vytvořte konečnou odpověď
{kontext}
{hist}
Člověk: {input}
Chatbot:'''
výzva = PromptTemplate (
vstupní_proměnné = [ 'hist' , 'vstup' , 'kontext' ] , šablona = šablona
)
Paměť = ConversationBufferMemory ( paměťový_klíč = 'hist' , vstupní_klíč = 'vstup' )
řetěz = load_qa_chain (
OpenAI ( teplota = 0 ) , typ_řetězce = 'věci' , Paměť = Paměť , výzva = výzva
)
Krok 6: Testování paměti
Zde je čas otestovat model položením otázky pomocí proměnné dotazu a následným provedením metody chain() s jejími parametry:
dotaz = „Kdy vzniklo NATO“řetěz ( { 'vstupní_dokumenty' : dokumenty , 'vstup' : dotaz } , return_only_outputs = Skutečný )
Vytiskněte data uložená ve vyrovnávací paměti, protože odpověď daného modelu byla nedávno uložena v paměti:
tisk ( řetěz. Paměť . vyrovnávací paměť )
To je vše o přidání paměti do řetězce s více vstupy v LangChain.
Závěr
Chcete-li přidat paměť do řetězce s více vstupy v LangChain, jednoduše nainstalujte moduly a vektorové úložiště pro uložení textu a vložení. Poté nahrajte data/dokument z místního systému a poté importujte požadované knihovny pro uložení dat pro vytvoření paměti pro LLM. Nakonfigurujte šablonu výzvy tak, aby ukládala nejnovější zprávy do vyrovnávací paměti, a poté zadejte text řetězce. Tato příručka rozpracovala proces přidávání paměti do řetězce s více vstupy v LangChain.