Hoe voeg ik een aangepast geheugentype toe in LangChain?

Hoe Voeg Ik Een Aangepast Geheugentype Toe In Langchain



LangChain wordt gebruikt om taalmodellen of chatbots te configureren/ontwerpen die als een chat met mensen kunnen communiceren. Deze chatberichten zijn, zoals de naam LangChain doet vermoeden, via ketens met elkaar verbonden en de gebruiker kan ze ook in het geheugen opslaan. Met de LangChain kunnen ontwikkelaars geheugenbibliotheken gebruiken die het gebruik van ingebouwde klassen of de aanpassing van hun eigen geheugen mogelijk maken.

Snel overzicht

Dit bericht zal laten zien:







Hoe u een aangepast geheugentype toevoegt in LangChain



Conclusie



Hoe voeg ik een aangepast geheugentype toe in LangChain?

Door een aangepast geheugentype in LangChain toe te voegen, kan de gebruiker de meeste prestaties als geheugen verkrijgen. De gebruiker kan het geheugentype configureren volgens zijn vereisten. Om een ​​aangepast geheugentype in LangChain toe te voegen, doorloopt u eenvoudigweg de volgende stappen:





Stap 1: Frameworks installeren

Installeer eerst het LangChain-framework om aan de slag te gaan met het toevoegen van een aangepast geheugentype:

pip installeer langchain

Als u de bovenstaande opdracht in Python Notebook uitvoert, worden de afhankelijkheden voor de LangChain geïnstalleerd, zoals weergegeven in het volgende fragment:



Installeer de OpenAI-module om de bibliotheken te verkrijgen die kunnen worden gebruikt om de LLM's te configureren:

pip installeer openai

Deze handleiding gebruikt het spaCy-framework om het aangepaste geheugentype in de LangChain te ontwerpen en de volgende code wordt gebruikt om de module te installeren:

pip installeer ruim

Het spaCy-model gebruikt de hashtabel om de informatie op te slaan als observatie, net als eerdere chatberichten. De volgende code wordt gebruikt om het Large Language Model of LLM uit de spaCy-bibliotheek te downloaden om een ​​geavanceerd NLP-model te bouwen:

! python -m spacy download en_core_web_lg

Importeren “ Jij ' En ' Krijg een pas ”bibliotheken zijn bedoeld voor het invoeren van de API-sleutel van het OpenAI-account zijn omgeving inrichten :

importeren Jij
importeren Krijg een pas

Jij . ongeveer [ 'OPENAI_API_KEY' ] = Krijg een pas . Krijg een pas ( 'OpenAI API-sleutel:' )

Stap 2: Bibliotheken importeren

De volgende stap is het importeren van de vereiste bibliotheken voor het aanpassen van het geheugentype volgens het chatmodel:

van langketen. schema importeren Basisgeheugen

van langketen. kettingen importeren ConversatieKeten

van pydantisch importeren Basismodel

van langketen. llms importeren Open AI

van typen importeren Lijst , Dict , Elk

Importeren van de “ spaCy ” bibliotheek om de “ nl_core_web_lg ”-model en wijs het toe aan het “ nlp ' variabele omdat het het Natural Language Processing-model is:

importeren ruim

nlp = ruim. laden ( 'nl_core_web_lg' )

Stap 3: Aangepast geheugen bouwen

Bouw daarna eenvoudigweg het aangepaste geheugen met behulp van de argumenten BaseMemory en BaseModel in de klasse Memory. Configureer vervolgens entiteiten (verzameld/opgeslagen uit de gegevens) die in het geheugen kunnen worden opgeslagen als volledige informatie of als een enkele eenheid. Het geheugen is geconfigureerd om alle entiteiten uit het document te bevatten om de prestaties van het geheugen en het model te optimaliseren:

klas SpacyEntityMemory ( Basisgeheugen , Basismodel ) :
''' Geheugenklasse voor het opslaan van informatie over entiteiten'''
entiteiten: dictaat = { }
geheugensleutel: str = 'entiteiten'
zeker duidelijk ( zelf ) :
zelf . entiteiten = { }
@ eigendom
zeker geheugenvariabelen ( zelf ) - > Lijst [ str ] :
''' Initialiseer de variabelen die aan de query zijn verstrekt'''
opbrengst [ zelf . geheugen_sleutel ]
#define de geheugenvariabelen met behulp van de argumenten
zeker laad_geheugen_variabelen ( zelf , ingangen: dict [ str , Elk ] ) - > Dict [ str , str ] :
''' Roep de variabelen op voor het geheugen, d.w.z. de entiteitssleutel'''
doc = nlp ( ingangen [ lijst ( ingangen. sleutels ( ) ) [ 0 ] ] )
#configureer entiteiten die in het geheugen van een individuele eenheid moeten worden opgeslagen
entiteiten = [
zelf . entiteiten [ str ( ent ) ] voor ent in doc. enten als str ( ent ) in zelf . entiteiten
]
opbrengst { zelf . geheugen_sleutel : ' \N ' . meedoen ( entiteiten ) }
#define de save_context() om het geheugen te gebruiken
zeker bewaar_context ( zelf , ingangen: dict [ str , Elk ] , uitgangen: dict [ str , str ] ) - > Geen :
'''Waarneming uit deze chat opslaan in het geheugen'''
tekst = ingangen [ lijst ( ingangen. sleutels ( ) ) [ 0 ] ]
doc = nlp ( tekst )
voor ent in doc. enten :
ent_str = str ( ent )
als ent_str in zelf . entiteiten :
zelf . entiteiten [ ent_str ] + = F ' \N {tekst}'
anders :
zelf . entiteiten [ ent_str ] = tekst

Stap 4: Promptsjabloon configureren

Configureer daarna eenvoudigweg de promptsjabloon die de structuur van de invoer van de gebruiker/mens uitlegt:

van langketen. aanwijzingen . snel importeren Promptsjabloon

sjabloon = '''Het volgende is een interactie tussen een machine en een mens. Het zegt dat het het niet weet. Als de machine het antwoord niet weet. De machine (AI) levert details uit zijn context en als hij het antwoord op een vraag niet begrijpt, zal hij zegt gewoon sorry

Entiteitsinformatie:

{entiteiten}

Communicatie:

Mens: {invoer}

AI:'''


snel = Promptsjabloon ( invoervariabelen = [ 'entiteiten' , 'invoer' ] , sjabloon = sjabloon )

Stap 5: Het model testen

Voordat u het model test, configureert u eenvoudigweg de LLM met behulp van de OpenAI()-methode en stelt u de ConversationChain()-functie in met argumenten:

llm = Open AI ( temperatuur = 0 )

gesprek = ConversatieKeten (

llm = llm , snel = snel , uitgebreid = WAAR , geheugen = SpacyEntityMemory ( )

)

Geef informatie aan het model met behulp van het invoerargument terwijl u de methode voorspellen() aanroept met de gespreksvariabele:

gesprek. voorspellen ( invoer = 'Harrison houdt van machinaal leren' )

Uitvoer

Het model heeft de informatie geabsorbeerd en in het geheugen opgeslagen en heeft ook de vraag gesteld met betrekking tot de informatie om verder te gaan met het gesprek:

De gebruiker kan reageren op de vraag uit het model om meer informatie aan het geheugen toe te voegen of het geheugen te testen door de vraag over de informatie te stellen:

gesprek. voorspellen (

invoer = 'Wat is het favoriete onderwerp van Harrison'

)

Het model geeft de uitvoer op basis van de eerdere informatie en geeft deze op het scherm weer zoals het volgende fragment laat zien:

Dat gaat allemaal over het toevoegen van een aangepast geheugentype in LangChain.

Conclusie

Om een ​​aangepast geheugentype in LangChain toe te voegen, installeert u eenvoudigweg de vereiste modules voor het importeren van bibliotheken om het aangepaste geheugen op te bouwen. De spaCy is de belangrijke bibliotheek die in deze handleiding wordt gebruikt om een ​​aangepast geheugen toe te voegen met behulp van het NLP-model. Configureer daarna het aangepaste geheugen en de promptsjabloon om de structuur van de chatinterface weer te geven. Zodra de configuratie is voltooid, test u eenvoudigweg het geheugen van het model door om informatie te vragen met betrekking tot opgeslagen gegevens.