Hvordan tilføjes en brugerdefineret hukommelsestype i LangChain?

Hvordan Tilfojes En Brugerdefineret Hukommelsestype I Langchain



LangChain bruges til at konfigurere/designe sprogmodeller eller chatbots, der kan interagere med mennesker som en chat. Disse chatbeskeder er forbundet gennem kæder, som navnet LangChain antyder, og brugeren kan også gemme dem i hukommelsen. LangChain giver udviklerne mulighed for at bruge hukommelsesbiblioteker, der giver brug af indbyggede klasser eller tilpasning af deres egen hukommelse.

Hurtig disposition

Dette indlæg vil vise:







Sådan tilføjes en brugerdefineret hukommelsestype i LangChain



Konklusion



Hvordan tilføjes en brugerdefineret hukommelsestype i LangChain?

Tilføjelse af en tilpasset hukommelsestype i LangChain gør det muligt for brugeren at få den bedste ydeevne som hukommelsen. Brugeren kan konfigurere hukommelsestypen i henhold til hans krav. For at tilføje en brugerdefineret hukommelsestype i LangChain skal du blot gennemgå følgende trin:





Trin 1: Installation af Frameworks

Først skal du installere LangChain-rammen for at komme i gang med processen med at tilføje en brugerdefineret hukommelsestype:

pip installer langkæde

Hvis du kører ovenstående kommando i Python Notebook, installeres afhængighederne for LangChain som vist i følgende uddrag:



Installer OpenAI-modulet for at få dets biblioteker, der kan bruges til at konfigurere LLM'erne:

pip installer openai

Denne vejledning vil bruge spaCy-rammen til at designe den brugerdefinerede hukommelsestype i LangChain, og følgende kode bruges til at installere modulet:

pip installation spacy

SpaCy-modellen bruger hash-tabellen til at gemme informationen som observation ligesom tidligere chatbeskeder. Følgende kode bruges til at downloade Large Language Model eller LLM fra spaCy-biblioteket for at bygge en avanceret NLP-model:

! python -m spacy download en_core_web_lg

Importerer ' du ' og ' getpass ”-biblioteker er til at indtaste API-nøglen fra OpenAI's konto til sætte sit miljø op :

importere du
importere getpass

du . rundt regnet [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API-nøgle:' )

Trin 2: Import af biblioteker

Det næste trin er at importere de nødvendige biblioteker for at tilpasse hukommelsestypen i henhold til chatmodellen:

fra langkæde. skema importere BaseMemory

fra langkæde. kæder importere Samtalekæde

fra pydantisk importere Basismodel

fra langkæde. llms importere OpenAI

fra skrive importere Liste , Dict , Nogen

Import af ' spaCy ' bibliotek for at indlæse ' en_core_web_lg '-modellen og tildel den til ' nlp variabel, da det er Natural Language Processing-modellen:

importere rummelig

nlp = rummelig. belastning ( 'en_core_web_lg' )

Trin 3: Opbygning af brugerdefineret hukommelse

Derefter skal du blot bygge den brugerdefinerede hukommelse ved at bruge BaseMemory og BaseModel argumenter i klassen Memory. Konfigurer derefter enheder (opsamlet/gemt fra dataene), der kan gemmes i hukommelsen som komplet information eller som en enkelt enhed. Hukommelsen er konfigureret til at indeholde alle enheder fra dokumentet for at optimere ydeevnen af ​​hukommelsen og modellen:

klasse SpacyEntityMemory ( BaseMemory , Basismodel ) :
''' Hukommelsesklasse til lagring af information om enheder'''
enheder: dikt = { }
memory_key: str = 'enheder'
def klar ( selv ) :
selv . enheder = { }
@ ejendom
def memory_variables ( selv ) - > Liste [ str ] :
''' Initialiser variablerne til forespørgslen'''
Vend tilbage [ selv . memory_key ]
#definer hukommelsesvariablerne ved hjælp af argumenterne
def load_memory_variables ( selv , indgange: Dikt [ str , Nogen ] ) - > Dict [ str , str ] :
''' Kald variablerne for hukommelse, dvs. enhedsnøgle'''
dok = nlp ( input [ liste ( input. nøgler ( ) ) [ 0 ] ] )
#configure entiteter, der skal gemmes i hukommelsen for en individuel enhed
enheder = [
selv . enheder [ str ( ent ) ] til ent i dok. ents hvis str ( ent ) i selv . enheder
]
Vend tilbage { selv . memory_key : ' \n ' . tilslutte ( enheder ) }
#define save_context() for at bruge hukommelsen
def gem_kontekst ( selv , indgange: Dikt [ str , Nogen ] , udgange: Dikt [ str , str ] ) - > Ingen :
'''Gem observation fra denne chat til hukommelsen'''
tekst = input [ liste ( input. nøgler ( ) ) [ 0 ] ]
dok = nlp ( tekst )
til ent i dok. ents :
ent_str = str ( ent )
hvis ent_str i selv . enheder :
selv . enheder [ ent_str ] + = f ' \n {tekst}'
andet :
selv . enheder [ ent_str ] = tekst

Trin 4: Konfiguration af promptskabelon

Derefter skal du blot konfigurere promptskabelonen, der forklarer strukturen af ​​input fra brugeren/mennesket:

fra langkæde. prompter . hurtig importere PromptTemplate

skabelon = '''Det følgende er en interaktion mellem en maskine og et menneske. Den siger, at den ikke ved, hvis maskinen ikke kender svaret. Maskinen (AI) giver detaljer fra sin kontekst, og hvis den ikke forstår svaret på et spørgsmål, siger bare undskyld

Enhedsoplysninger:

{entities}

Meddelelse:

Menneske: {input}

AI:'''


hurtig = PromptTemplate ( input_variables = [ 'enheder' , 'input' ] , skabelon = skabelon )

Trin 5: Test af modellen

Før du tester modellen, skal du blot konfigurere LLM ved hjælp af OpenAI()-metoden og opsætte ConversationChain()-funktionen med argumenter:

llm = OpenAI ( temperatur = 0 )

samtale = Samtalekæde (

llm = llm , hurtig = hurtig , ordrig = Rigtigt , hukommelse = SpacyEntityMemory ( )

)

Giv information til modellen ved hjælp af input-argumentet, mens du kalder predict()-metoden med konversationsvariablen:

samtale. forudsige ( input = 'Harrison kan lide maskinlæring' )

Produktion

Modellen har absorberet informationen og gemt den i hukommelsen og stillet også spørgsmålet relateret til informationen for at komme videre med samtalen:

Brugeren kan svare på spørgsmålet fra modellen for at tilføje mere information til hukommelsen eller teste hukommelsen ved at stille spørgsmålet om informationen:

samtale. forudsige (

input = 'Hvad er Harrisons yndlingsemne'

)

Modellen giver output baseret på den tidligere information og viser den på skærmen, som følgende uddrag viser:

Det handler om at tilføje en brugerdefineret hukommelsestype i LangChain.

Konklusion

For at tilføje en brugerdefineret hukommelsestype i LangChain skal du blot installere de nødvendige moduler til import af biblioteker for at bygge den brugerdefinerede hukommelse. SpaCy er det vigtige bibliotek, der bliver brugt i denne vejledning til at tilføje en brugerdefineret hukommelse ved hjælp af dens NLP-model. Konfigurer derefter den tilpassede hukommelse og promptskabelonen for at give strukturen på chatgrænsefladen. Når konfigurationen er færdig, skal du blot teste modellens hukommelse ved at bede om information relateret til lagrede data.