Kako dodati vrsto pomnilnika po meri v LangChain?

Kako Dodati Vrsto Pomnilnika Po Meri V Langchain



LangChain se uporablja za konfiguracijo/oblikovanje jezikovnih modelov ali klepetalnih robotov, ki lahko komunicirajo z ljudmi kot klepet. Ta sporočila klepeta so povezana z verigami, kot pove ime LangChain, uporabnik pa jih lahko tudi shrani v pomnilnik. LangChain razvijalcem omogoča uporabo pomnilniških knjižnic, ki omogočajo uporabo vgrajenih razredov ali prilagajanje lastnega pomnilnika.

Hitri oris

Ta objava bo prikazala:







Kako dodati vrsto pomnilnika po meri v LangChain



Zaključek



Kako dodati vrsto pomnilnika po meri v LangChain?

Dodajanje prilagojene vrste pomnilnika v LangChain omogoča uporabniku, da dobi največjo zmogljivost kot pomnilnik. Uporabnik lahko konfigurira vrsto pomnilnika glede na svoje zahteve. Če želite v LangChain dodati vrsto pomnilnika po meri, preprosto pojdite skozi naslednje korake:





1. korak: Namestitev ogrodij

Najprej namestite ogrodje LangChain, da začnete s postopkom dodajanja vrste pomnilnika po meri:

pip namestite langchain

Zagon zgornjega ukaza v zvezku Python bo namestil odvisnosti za LangChain, kot je prikazano v naslednjem delčku:



Namestite modul OpenAI, da dobite njegove knjižnice, ki jih je mogoče uporabiti za konfiguracijo LLM-jev:

pip namestite openai

Ta priročnik bo uporabil ogrodje spaCy za oblikovanje vrste pomnilnika po meri v LangChain, naslednja koda pa bo uporabljena za namestitev modula:

pip namestite prostor

Model spaCy uporablja zgoščeno tabelo za shranjevanje informacij kot opazovanje, kot so prejšnja sporočila klepeta. Naslednja koda se uporablja za prenos Large Language Model ali LLM iz knjižnice spaCy za izdelavo naprednega modela NLP:

! python -m prostorni prenos en_core_web_lg

Uvažanje ' ti « in » getpass ” so knjižnice za vnos ključa API iz računa OpenAI vzpostavi svoje okolje :

uvoz ti
uvoz getpass

ti . približno [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Ključ API OpenAI:' )

2. korak: Uvažanje knjižnic

Naslednji korak je uvoz potrebnih knjižnic za prilagajanje vrste pomnilnika glede na model klepeta:

od Langchain. shema uvoz Osnovni pomnilnik

od Langchain. verige uvoz ConversationChain

od pidantičen uvoz BaseModel

od Langchain. llms uvoz OpenAI

od tipkanje uvoz Seznam , Dict , Kaj

Uvažanje ' spaCy ' knjižnica za nalaganje ' en_core_web_lg ' in ga dodelite ' nlp ”, saj gre za model obdelave naravnega jezika:

uvoz prostoren

nlp = prostoren. obremenitev ( 'en_core_web_lg' )

3. korak: Izdelava pomnilnika po meri

Po tem preprosto zgradite pomnilnik po meri z uporabo argumentov BaseMemory in BaseModel v razredu Memory. Nato konfigurirajte entitete (zbrane/shranjene iz podatkov), ki jih je mogoče shraniti v pomnilnik kot popolne informacije ali kot eno samo enoto. Pomnilnik je konfiguriran tako, da vsebuje vse entitete iz dokumenta za optimizacijo delovanja pomnilnika in modela:

razred SpacyEntityMemory ( Osnovni pomnilnik , BaseModel ) :
''' Pomnilniški razred za shranjevanje informacij o entitetah'''
entitete: dikt = { }
memory_key: str = 'entitete'
def jasno ( sebe ) :
sebe . entitete = { }
@ premoženje
def spominske_spremenljivke ( sebe ) - > Seznam [ str ] :
''' Inicializiraj spremenljivke, podane v poizvedbo'''
vrnitev [ sebe . pomnilniški_ključ ]
#definirajte pomnilniške spremenljivke z uporabo argumentov
def load_memory_variables ( sebe , vložki: Dikt [ str , Kaj ] ) - > Dict [ str , str ] :
''' Pokliči spremenljivke za pomnilnik, tj. ključ entitete'''
doc = nlp ( vložki [ seznam ( vložki. ključi ( ) ) [ 0 ] ] )
#konfiguriraj entitete za shranjevanje v pomnilnik za posamezno enoto
entitete = [
sebe . entitete [ str ( ent ) ] za ent v doc. ents če str ( ent ) v sebe . entitete
]
vrnitev { sebe . pomnilniški_ključ : ' \n ' . pridruži se ( entitete ) }
#definirajte save_context() za uporabo pomnilnika
def shrani_kontekst ( sebe , vložki: Dikt [ str , Kaj ] , izhodi: Dict [ str , str ] ) - > Noben :
'''Shrani opazovanje iz tega klepeta v spomin'''
besedilo = vložki [ seznam ( vložki. ključi ( ) ) [ 0 ] ]
doc = nlp ( besedilo )
za ent v doc. ents :
ent_str = str ( ent )
če ent_str v sebe . entitete :
sebe . entitete [ ent_str ] + = f ' \n {besedilo}'
drugače :
sebe . entitete [ ent_str ] = besedilo

4. korak: Konfiguriranje predloge poziva

Po tem preprosto konfigurirajte predlogo poziva, ki pojasnjuje strukturo vnosa, ki ga zagotovi uporabnik/človek:

od Langchain. pozive . poziv uvoz PromptTemplate

predlogo = '''Sledeče je interakcija med strojem in človekom Pravi, da ne ve Če stroj ne pozna odgovora Stroj (AI) zagotavlja podrobnosti iz svojega konteksta in če ne razume odgovora na katero koli vprašanje preprosto reče oprosti

Podatki o entiteti:

{entities}

Komunikacija:

Človek: {input}

AI:'''


poziv = PromptTemplate ( vhodne_spremenljivke = [ 'entitete' , 'vnos' ] , predlogo = predlogo )

5. korak: Testiranje modela

Preden preizkusite model, preprosto konfigurirajte LLM z uporabo metode OpenAI() in nastavite funkcijo ConversationChain() z argumenti:

llm = OpenAI ( temperaturo = 0 )

pogovor = ConversationChain (

llm = llm , poziv = poziv , verbose = Prav , spomin = SpacyEntityMemory ( )

)

Podajte informacije modelu z uporabo vhodnega argumenta, medtem ko kličete metodo predict() s spremenljivko pogovora:

pogovor. napovedati ( vnos = 'Harrison ima rad strojno učenje' )

Izhod

Model je absorbiral informacije in jih shranil v spomin ter postavil vprašanje v zvezi z informacijami za nadaljevanje pogovora:

Uporabnik lahko odgovori na vprašanje modela, da doda več informacij v pomnilnik ali preizkusi pomnilnik tako, da postavi vprašanje o informacijah:

pogovor. napovedati (

vnos = 'Kateri je Harrisonov najljubši predmet'

)

Model daje rezultat na podlagi prejšnjih informacij in ga prikaže na zaslonu, kot prikazuje naslednji delček:

To je vse o dodajanju vrste pomnilnika po meri v LangChain.

Zaključek

Če želite dodati vrsto pomnilnika po meri v LangChain, preprosto namestite zahtevane module za uvoz knjižnic za izdelavo pomnilnika po meri. SpaCy je pomembna knjižnica, ki se v tem priročniku uporablja za dodajanje pomnilnika po meri s svojim modelom NLP. Nato konfigurirajte pomnilnik po meri in predlogo poziva, da podate strukturo vmesnika za klepet. Ko je konfiguracija končana, preprosto preizkusite pomnilnik modela tako, da zahtevate informacije v zvezi s shranjenimi podatki.