Cum să adăugați un tip de memorie personalizat în LangChain?

Cum Sa Adaugati Un Tip De Memorie Personalizat In Langchain



LangChain este folosit pentru a configura/proiecta modele de limbaj sau chatbot-uri care pot interacționa cu oamenii ca un chat. Aceste mesaje de chat sunt legate prin lanțuri, așa cum sugerează numele LangChain, iar utilizatorul le poate stoca și în memorie. LangChain permite dezvoltatorilor să folosească biblioteci de memorie care oferă utilizarea claselor încorporate sau personalizarea propriei memorie.

Schiță rapidă

Această postare va arăta:







Cum să adăugați un tip de memorie personalizat în LangChain



Concluzie



Cum să adăugați un tip de memorie personalizat în LangChain?

Adăugarea unui tip de memorie personalizat în LangChain permite utilizatorului să obțină cea mai mare performanță ca memorie. Utilizatorul poate configura tipul de memorie în funcție de cerințele sale. Pentru a adăuga un tip de memorie personalizat în LangChain, parcurgeți următorii pași:





Pasul 1: Instalarea cadrelor

Mai întâi, instalați cadrul LangChain pentru a începe procesul de adăugare a unui tip de memorie personalizat:

pip install langchain

Rularea comenzii de mai sus în Python Notebook va instala dependențele pentru LangChain, așa cum este afișat în următorul fragment:



Instalați modulul OpenAI pentru a obține bibliotecile sale care pot fi utilizate pentru a configura LLM-urile:

pip install openai

Acest ghid va folosi cadrul spaCy pentru a proiecta tipul de memorie personalizat în LangChain și următorul cod este folosit pentru a instala modulul:

pip install spacy

Modelul spaCy folosește tabelul hash pentru a stoca informațiile sub formă de observație, precum mesajele de chat anterioare. Următorul cod este folosit pentru a descărca modelul de limbă mare sau LLM din biblioteca spaCy pentru a construi un model avansat de NLP:

! python -m spacy download en_core_web_lg

Se importă „ tu ' și ' getpass ” bibliotecile sunt pentru introducerea cheii API din contul OpenAI la configura mediul său :

import tu
import getpass

tu . aproximativ [ „OPENAI_API_KEY” ] = getpass . getpass ( „Cheie API OpenAI:” )

Pasul 2: Importul bibliotecilor

Următorul pas este să importați bibliotecile necesare pentru personalizarea tipului de memorie conform modelului de chat:

din langchain. schemă import Memoria de bază

din langchain. lanţuri import ConversationChain

din pidantic import Model de bază

din langchain. llms import OpenAI

din tastare import Listă , Dict , Orice

Importul „ spațios ” pentru a încărca “ en_core_web_lg ” model și atribuiți-l la „ nlp ” variabilă deoarece este modelul de procesare a limbajului natural:

import spațios

nlp = spațios. sarcină ( „en_core_web_lg” )

Pasul 3: Construirea memoriei personalizate

După aceea, pur și simplu construiți memoria personalizată folosind argumentele BaseMemory și BaseModel din clasa Memory. Apoi, configurați entitățile (colectate/stocate din date) care pot fi stocate în memorie ca informații complete sau ca o singură unitate. Memoria este configurată să conțină toate entitățile din document pentru a optimiza performanța memoriei și a modelului:

clasă SpacyEntityMemory ( Memoria de bază , Model de bază ) :
''' Clasa de memorie pentru stocarea informațiilor despre entități'''
entitati: dict = { }
cheie_memorie: str = 'entitati'
def clar ( de sine ) :
de sine . entitati = { }
@ proprietate
def memorie_variabile ( de sine ) - > Listă [ str ] :
''' Inițializați variabilele furnizate interogării'''
întoarcere [ de sine . cheie_memorie ]
#definiți variabilele de memorie folosind argumentele
def load_memory_variables ( de sine , intrări: Dict [ str , Orice ] ) - > Dict [ str , str ] :
''' Apelați variabilele pentru memorie, adică cheia de entitate'''
doc = nlp ( intrări [ listă ( intrări. chei ( ) ) [ 0 ] ] )
#configure entitățile care urmează să fie stocate în memorie pentru o unitate individuală
entitati = [
de sine . entitati [ str ( ent ) ] pentru ent în doc. enti dacă str ( ent ) în de sine . entitati
]
întoarcere { de sine . cheie_memorie : ' \n ' . a te alatura ( entitati ) }
#definiți save_context() pentru a utiliza memoria
def salvare_context ( de sine , intrări: Dict [ str , Orice ] , iesiri: Dict [ str , str ] ) - > Nici unul :
'''Păstrează observația din acest chat în memorie'''
text = intrări [ listă ( intrări. chei ( ) ) [ 0 ] ]
doc = nlp ( text )
pentru ent în doc. enti :
ent_str = str ( ent )
dacă ent_str în de sine . entitati :
de sine . entitati [ ent_str ] + = f ' \n {text}'
altfel :
de sine . entitati [ ent_str ] = text

Pasul 4: Configurarea șablonului prompt

După aceea, configurați pur și simplu șablonul prompt care explică structura intrării furnizate de utilizator/om:

din langchain. solicitări . prompt import PromptTemplate

șablon = ''' Următoarea este o interacțiune între o mașină și un om. Spune că nu știe Dacă mașina nu știe răspunsul Mașina (AI) oferă detalii din contextul său și dacă nu înțelege răspunsul la vreo întrebare, spune pur și simplu scuze

Informații despre entitate:

{entities}

Comunicare:

Om: {input}

AI:'''


prompt = PromptTemplate ( variabile_de intrare = [ 'entitati' , 'intrare' ] , șablon = șablon )

Pasul 5: Testarea modelului

Înainte de a testa modelul, pur și simplu configurați LLM folosind metoda OpenAI() și configurați funcția ConversationChain() cu argumente:

llm = OpenAI ( temperatura = 0 )

conversaţie = ConversationChain (

llm = llm , prompt = prompt , verboroasă = Adevărat , memorie = SpacyEntityMemory ( )

)

Oferiți informații modelului folosind argumentul de intrare în timp ce apelați metoda predict() cu variabila conversație:

conversaţie. prezice ( intrare = „Harrison îi place învățarea automată” )

Ieșire

Modelul a absorbit informația și a stocat-o în memorie și a pus, de asemenea, întrebarea legată de informațiile pentru a continua conversația:

Utilizatorul poate răspunde la întrebarea din model pentru a adăuga mai multe informații în memorie sau poate testa memoria punând întrebarea despre informații:

conversaţie. prezice (

intrare = „Care este subiectul preferat al lui Harrison”

)

Modelul oferă rezultatul pe baza informațiilor anterioare și o afișează pe ecran așa cum arată următorul fragment:

Acesta este totul despre adăugarea unui tip de memorie personalizat în LangChain.

Concluzie

Pentru a adăuga un tip de memorie personalizat în LangChain, instalați pur și simplu modulele necesare pentru importul bibliotecilor pentru a construi memoria personalizată. SpaCy este biblioteca importantă care este folosită în acest ghid pentru a adăuga o memorie personalizată folosind modelul său NLP. După aceea, configurați memoria personalizată și șablonul de prompt pentru a oferi structura interfeței de chat. Odată finalizată configurarea, pur și simplu testați memoria modelului solicitând informații legate de datele stocate.