Snel overzicht
Dit bericht zal laten zien:
Hoe u een aangepast geheugentype toevoegt in LangChain
- Kaders installeren
- Bibliotheken importeren
- Aangepast geheugen bouwen
- Prompt-sjabloon configureren
- Het model testen
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 langchainAls 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 Jijimporteren 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 Basisgeheugenvan 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 ruimnlp = 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 Promptsjabloonsjabloon = '''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.