Hvordan legge til en tilpasset minnetype i LangChain?

Hvordan Legge Til En Tilpasset Minnetype I Langchain



LangChain brukes til å konfigurere/designe språkmodeller eller chatbots som kan samhandle med mennesker som en chat. Disse chat-meldingene er koblet gjennom kjeder som navnet LangChain antyder, og brukeren kan også lagre dem i minnet. Langkjeden lar utviklerne bruke minnebiblioteker som gir bruk av innebygde klasser eller tilpasning av eget minne.

Rask oversikt

Dette innlegget vil vise:







Hvordan legge til en tilpasset minnetype i LangChain



Konklusjon



Hvordan legge til en tilpasset minnetype i LangChain?

Ved å legge til en tilpasset minnetype i LangChain kan brukeren få mest mulig ytelse som minne. Brukeren kan konfigurere minnetypen i henhold til sine krav. For å legge til en tilpasset minnetype i LangChain, gå ganske enkelt gjennom følgende trinn:





Trinn 1: Installere Frameworks

Installer først LangChain-rammeverket for å komme i gang med prosessen med å legge til en tilpasset minnetype:

pip installer langkjede

Å kjøre kommandoen ovenfor i Python Notebook vil installere avhengighetene for LangChain som vist i følgende utdrag:



Installer OpenAI-modulen for å få bibliotekene som kan brukes til å konfigurere LLM-ene:

pip installer openai

Denne veiledningen vil bruke spaCy-rammeverket til å designe den tilpassede minnetypen i LangChain, og følgende kode brukes til å installere modulen:

pip installer romslig

SpaCy-modellen bruker hash-tabellen til å lagre informasjonen som observasjon som tidligere chat-meldinger. Følgende kode brukes til å laste ned Large Language Model eller LLM fra spaCy-biblioteket for å bygge en avansert NLP-modell:

! python -m spacy nedlasting en_core_web_lg

Importerer ' du ' og ' få pass ”-biblioteker er for å legge inn API-nøkkelen fra OpenAI-kontoen til sette opp sitt miljø :

import du
import få pass

du . omtrent [ 'OPENAI_API_KEY' ] = få pass . få pass ( 'OpenAI API Key:' )

Trinn 2: Importere biblioteker

Det neste trinnet er å importere de nødvendige bibliotekene for å tilpasse minnetypen i henhold til chat-modellen:

fra langkjede. skjema import BaseMemory

fra langkjede. kjeder import Samtalekjede

fra pydantisk import BaseModel

fra langkjede. llms import OpenAI

fra skrive import Liste , Dict , Noen

Importerer ' spaCy ' biblioteket for å laste ' no_core_web_lg '-modellen og tilordne den til ' nlp '-variabel ettersom det er Natural Language Processing-modellen:

import romslig

nlp = romslig. laste ( 'en_core_web_lg' )

Trinn 3: Bygg tilpasset minne

Etter det bygger du ganske enkelt det tilpassede minnet ved å bruke BaseMemory- og BaseModel-argumentene i Memory-klassen. Konfigurer deretter enheter (samlet/lagret fra dataene) som kan lagres i minnet som fullstendig informasjon eller som en enkelt enhet. Minnet er konfigurert til å inneholde alle enhetene fra dokumentet for å optimere ytelsen til minnet og modellen:

klasse SpacyEntityMemory ( BaseMemory , BaseModel ) :
''' Minneklasse for lagring av informasjon om enheter'''
enheter: dikt = { }
minnenøkkel: str = 'enheter'
def klar ( selv- ) :
selv- . enheter = { }
@ eiendom
def minne_variabler ( selv- ) - > Liste [ str ] :
''' Initialiser variablene som er gitt til spørringen'''
komme tilbake [ selv- . minnenøkkel ]
#definer minnevariablene ved å bruke argumentene
def load_memory_variables ( selv- , innganger: Dict [ str , Noen ] ) - > Dict [ str , str ] :
''' Ring variablene for minne, dvs. enhetsnøkkel'''
dok = nlp ( innganger [ liste ( innganger. nøkler ( ) ) [ 0 ] ] )
#configure enheter som skal lagres i minnet for en individuell enhet
enheter = [
selv- . enheter [ str ( ent ) ] til ent i dok. ents hvis str ( ent ) i selv- . enheter
]
komme tilbake { selv- . minnenøkkel : ' \n ' . bli med ( enheter ) }
#define save_context() for å bruke minnet
def lagre_kontekst ( selv- , innganger: Dict [ str , Noen ] , utganger: Dict [ str , str ] ) - > Ingen :
'''Lagre observasjon fra denne chatten til minnet'''
tekst = innganger [ liste ( innganger. nøkler ( ) ) [ 0 ] ]
dok = nlp ( tekst )
til ent i dok. ents :
ent_str = str ( ent )
hvis ent_str i selv- . enheter :
selv- . enheter [ ent_str ] + = f ' \n {tekst}'
ellers :
selv- . enheter [ ent_str ] = tekst

Trinn 4: Konfigurere ledetekstmal

Deretter konfigurerer du bare ledetekstmalen som forklarer strukturen til inndataene fra brukeren/mennesket:

fra langkjede. spør . ledetekst import PromptTemplate

mal = '''Det følgende er en interaksjon mellom en maskin og et menneske Den sier at den ikke vet Hvis maskinen ikke vet svaret Maskinen (AI) gir detaljer fra sin kontekst og hvis den ikke forstår svaret på noe spørsmål sier bare unnskyld

Enhetsinformasjon:

{entities}

Kommunikasjon:

Menneske: {input}

AI:'''


ledetekst = PromptTemplate ( input_variables = [ 'enheter' , 'inngang' ] , mal = mal )

Trinn 5: Testing av modellen

Før du tester modellen, konfigurerer du bare LLM ved å bruke OpenAI()-metoden og setter opp ConversationChain()-funksjonen med argumenter:

llm = OpenAI ( temperatur = 0 )

samtale = Samtalekjede (

llm = llm , ledetekst = ledetekst , ordrik = ekte , hukommelse = SpacyEntityMemory ( )

)

Gi informasjon til modellen ved å bruke input-argumentet mens du kaller predict()-metoden med samtalevariabelen:

samtale. forutsi ( input = 'Harrison liker maskinlæring' )

Produksjon

Modellen har absorbert informasjonen og lagret den i minnet og stilt også spørsmålet knyttet til informasjonen for å komme videre med samtalen:

Brukeren kan svare på spørsmålet fra modellen for å legge til mer informasjon til minnet eller teste minnet ved å stille spørsmålet om informasjonen:

samtale. forutsi (

input = 'Hva er Harrisons favorittfag'

)

Modellen gir utdata basert på den forrige informasjonen og viser den på skjermen som følgende utdrag viser:

Det handler om å legge til en tilpasset minnetype i LangChain.

Konklusjon

For å legge til en tilpasset minnetype i LangChain, installer ganske enkelt de nødvendige modulene for å importere biblioteker for å bygge det tilpassede minnet. SpaCy er det viktige biblioteket som brukes i denne veiledningen for å legge til et tilpasset minne ved å bruke NLP-modellen. Deretter konfigurerer du det tilpassede minnet og ledetekstmalen for å gi strukturen til chat-grensesnittet. Når konfigurasjonen er ferdig, tester du bare minnet til modellen ved å be om informasjon relatert til lagrede data.