Jak přidat paměť do řetězce s více vstupy v LangChain?

Jak Pridat Pamet Do Retezce S Vice Vstupy V Langchain



Chatboty a velké jazykové modely používají miliony po celém světě a tyto modely dokážou generovat text na příkaz. LangChain je jedním z nejúčinnějších a nejefektivnějších frameworků, které umožňují vývojářům vytvářet takové modely a roboty. Uživatel zadává výzvy nebo dotazy jako vstup a model příkazu rozumí, než vygeneruje text, který se zdá příkazu nejvíce podobný.

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 vy
import 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 soubory

nahrá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 OpenAIEmbeddings

z 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_chain

z 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ěkem
Vzhledem 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.