Schiță rapidă
Această postare va arăta:
Cum să adăugați un tip de memorie personalizat în LangChain
- Instalarea cadrelor
- Import de biblioteci
- Construirea memoriei personalizate
- Configurarea șablonului prompt
- Testarea modelului
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 langchainRularea 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 tuimport 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țiosnlp = 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.