Brzi pregled
Ovaj će post pokazati:
Kako dodati prilagođenu vrstu memorije u LangChain
- Instalacija Frameworks
- Uvoz knjižnica
- Izgradnja prilagođene memorije
- Konfiguriranje predloška upita
- Testiranje modela
Kako dodati prilagođenu vrstu memorije u LangChain?
Dodavanje prilagođene vrste memorije u LangChain omogućuje korisniku da dobije najviše performansi kao memorije. Korisnik može konfigurirati vrstu memorije prema svojim zahtjevima. Da biste dodali prilagođenu vrstu memorije u LangChain, jednostavno prođite kroz sljedeće korake:
Korak 1: Instalacija Frameworks
Najprije instalirajte okvir LangChain da biste započeli s postupkom dodavanja prilagođene vrste memorije:
pip instalirati langchainPokretanje gornje naredbe u Python bilježnici instalirat će ovisnosti za LangChain kao što je prikazano u sljedećem isječku:
Instalirajte OpenAI modul kako biste dobili njegove biblioteke koje se mogu koristiti za konfiguriranje LLM-ova:
pip instaliraj openai
Ovaj će vodič koristiti okvir spaCy za dizajniranje prilagođene vrste memorije u LangChainu, a sljedeći se kod koristi za instalaciju modula:
pip instalirati prostorno
SpaCy model koristi hash tablicu za pohranu informacija kao zapažanja poput prethodnih poruka chata. Sljedeći kod koristi se za preuzimanje Large Language Model ili LLM iz spaCy knjižnice za izgradnju naprednog NLP modela:
! python -m spacy preuzimanje en_core_web_lg
Uvoz ' vas ' i ' getpass ” biblioteke služe za unos API ključa s OpenAI-jevog računa postaviti svoje okruženje :
uvoz vasuvoz getpass
vas . približno [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API ključ:' )
Korak 2: Uvoz biblioteka
Sljedeći korak je uvoz potrebnih biblioteka za prilagodbu vrste memorije prema modelu chata:
iz langchain. shema uvoz Osnovna memorijaiz langchain. lanci uvoz Lanac razgovora
iz pidantičan uvoz Osnovni model
iz langchain. llms uvoz OpenAI
iz tipkanje uvoz Popis , Dict , Bilo koje
Uvoz ' spaCy ' biblioteka za učitavanje ' en_core_web_lg ' i dodijelite ga ' nlp ” jer je to model obrade prirodnog jezika:
uvoz prostranonlp = prostrano. opterećenje ( 'en_core_web_lg' )
Korak 3: Izgradnja prilagođene memorije
Nakon toga jednostavno izgradite prilagođenu memoriju koristeći argumente BaseMemory i BaseModel u klasi Memory. Zatim konfigurirajte entitete (prikupljene/pohranjene iz podataka) koji se mogu pohraniti u memoriju kao cjelovita informacija ili kao jedna cjelina. Memorija je konfigurirana da sadrži sve entitete iz dokumenta kako bi se optimizirala izvedba memorije i modela:
razreda SpacyEntityMemory ( Osnovna memorija , Osnovni model ) :''' Klasa memorije za pohranu informacija o entitetima'''
entiteti: izreka = { }
memorijski_ključ: str = 'entiteti'
def čisto ( sebe ) :
sebe . entiteta = { }
@ vlasništvo
def memorijske_varijable ( sebe ) - > Popis [ str ] :
''' Inicijaliziraj varijable dane upitu'''
povratak [ sebe . memorijski_ključ ]
#definirajte memorijske varijable pomoću argumenata
def load_memory_variables ( sebe , ulazi: Dikt [ str , Bilo koje ] ) - > Dict [ str , str ] :
''' Pozovite varijable za memoriju tj. ključ entiteta'''
doc = nlp ( ulazi [ popis ( ulazi. ključevi ( ) ) [ 0 ] ] )
#konfigurirajte entitete koji će se pohraniti u memoriju za pojedinu jedinicu
entiteta = [
sebe . entiteta [ str ( ent ) ] za ent u doc. ents ako str ( ent ) u sebe . entiteta
]
povratak { sebe . memorijski_ključ : ' \n ' . pridružiti ( entiteta ) }
#definirajte save_context() za korištenje memorije
def spremi_kontekst ( sebe , ulazi: Dikt [ str , Bilo koje ] , izlazi: Dikt [ str , str ] ) - > Nijedan :
'''Pohrani promatranje iz ovog chata u memoriju'''
tekst = ulazi [ popis ( ulazi. ključevi ( ) ) [ 0 ] ]
doc = nlp ( tekst )
za ent u doc. ents :
ent_str = str ( ent )
ako ent_str u sebe . entiteta :
sebe . entiteta [ ent_str ] + = f ' \n {tekst}'
drugo :
sebe . entiteta [ ent_str ] = tekst
Korak 4: Konfiguriranje predloška upita
Nakon toga, jednostavno konfigurirajte predložak upita koji objašnjava strukturu unosa koji daje korisnik/čovjek:
iz langchain. upita . potaknuti uvoz PromptTemplatešablona = '''Sljedeće je interakcija između stroja i čovjeka Kaže da ne zna Ako stroj ne zna odgovor Stroj (AI) daje detalje iz svog konteksta i ako ne razumije odgovor na bilo koje pitanje jednostavno kaže oprosti
Podaci o entitetu:
{entities}
Komunikacija:
Čovjek: {input}
AI:'''
potaknuti = PromptTemplate ( ulazne_varijable = [ 'entiteti' , 'ulazni' ] , šablona = šablona )
Korak 5: Testiranje modela
Prije testiranja modela jednostavno konfigurirajte LLM pomoću metode OpenAI() i postavite funkciju ConversationChain() s argumentima:
llm = OpenAI ( temperatura = 0 )razgovor = Lanac razgovora (
llm = llm , potaknuti = potaknuti , opširno = Pravi , memorija = SpacyEntityMemory ( )
)
Dajte informacije modelu koristeći ulazni argument dok pozivate metodu predict() s varijablom razgovora:
razgovor. predvidjeti ( ulazni = 'Harrison voli strojno učenje' )Izlaz
Model je apsorbirao informacije i pohranio ih u memoriju te je također postavio pitanje vezano uz informacije za nastavak razgovora:
Korisnik može odgovoriti na pitanje iz modela kako bi dodao više informacija u memoriju ili testirao memoriju postavljanjem pitanja o informacijama:
razgovor. predvidjeti (ulazni = 'Koji je Harrisonov omiljeni predmet'
)
Model daje izlaz na temelju prethodnih informacija i prikazuje ga na zaslonu kao što prikazuje sljedeći isječak:
To je sve o dodavanju prilagođene vrste memorije u LangChain.
Zaključak
Da biste dodali prilagođenu vrstu memorije u LangChain, jednostavno instalirajte potrebne module za uvoz biblioteka za izgradnju prilagođene memorije. SpaCy je važna biblioteka koja se koristi u ovom vodiču za dodavanje prilagođene memorije pomoću svog NLP modela. Nakon toga konfigurirajte prilagođenu memoriju i predložak upita kako biste dali strukturu sučelja za chat. Nakon što je konfiguracija gotova, jednostavno testirajte memoriju modela tražeći informacije vezane uz pohranjene podatke.