Hurtig disposition
Dette indlæg vil vise:
Sådan tilføjes en brugerdefineret hukommelsestype i LangChain
- Installation af Frameworks
- Import af biblioteker
- Opbygning af brugerdefineret hukommelse
- Konfiguration af promptskabelon
- Test af modellen
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ædeHvis 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 duimportere 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 BaseMemoryfra 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 rummelignlp = 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 PromptTemplateskabelon = '''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.