Com afegir un tipus de memòria personalitzat a LangChain?

Com Afegir Un Tipus De Memoria Personalitzat A Langchain



LangChain s'utilitza per configurar/dissenyar models de llenguatge o chatbots que poden interactuar amb humans com un xat. Aquests missatges de xat estan enllaçats a través de cadenes, com suggereix el nom LangChain i l'usuari també els pot emmagatzemar a la memòria. LangChain permet als desenvolupadors utilitzar biblioteques de memòria que proporcionen l'ús de classes integrades o la personalització de la seva pròpia memòria.

Esquema ràpid

Aquesta publicació mostrarà:







Com afegir un tipus de memòria personalitzat a LangChain



Conclusió



Com afegir un tipus de memòria personalitzat a LangChain?

Afegir un tipus de memòria personalitzat a LangChain permet a l'usuari obtenir el màxim rendiment com a memòria. L'usuari pot configurar el tipus de memòria segons les seves necessitats. Per afegir un tipus de memòria personalitzat a LangChain, simplement seguiu els passos següents:





Pas 1: instal·lació de marcs

Primer, instal·leu el marc de LangChain per començar amb el procés d'afegir un tipus de memòria personalitzat:

pip install langchain

L'execució de l'ordre anterior al Python Notebook instal·larà les dependències per a LangChain tal com es mostra al fragment següent:



Instal·leu el mòdul OpenAI per obtenir les seves biblioteques que es poden utilitzar per configurar els LLM:

pip install openai

Aquesta guia utilitzarà el marc spaCy per dissenyar el tipus de memòria personalitzada al LangChain i s'utilitza el codi següent per instal·lar el mòdul:

pip instal·lar spacy

El model spaCy utilitza la taula hash per emmagatzemar la informació com a observació com els missatges de xat anteriors. El codi següent s'utilitza per descarregar el model de llenguatge gran o LLM de la biblioteca spaCy per crear un model de PNL avançat:

! python -m descàrrega espacial en_core_web_lg

S'està important ' vostè ' i ' getpass ” Les biblioteques són per introduir la clau API des del compte de l'OpenAI configurar el seu entorn :

importar vostè
importar getpass

vostè . aproximadament [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Clau de l'API OpenAI:' )

Pas 2: importació de biblioteques

El següent pas és importar les biblioteques necessàries per personalitzar el tipus de memòria segons el model de xat:

des de langchain. esquema importar Memòria base

des de langchain. cadenes importar Cadena de conversa

des de pidant importar Model base

des de langchain. llms importar OpenAI

des de escrivint importar Llista , Dict , Cap

Importació del ' espaiós ” biblioteca per carregar el “ a_core_web_lg ” model i assigneu-lo al “ nlp ” variable ja que és el model de processament del llenguatge natural:

importar espaiós

nlp = espaiós. càrrega ( 'en_core_web_lg' )

Pas 3: creació de memòria personalitzada

Després d'això, simplement creeu la memòria personalitzada utilitzant els arguments BaseMemory i BaseModel a la classe Memory. A continuació, configureu les entitats (recollides/emmagatzemades a partir de les dades) que es poden emmagatzemar a la memòria com a informació completa o com a unitat única. La memòria està configurada per contenir totes les entitats del document per optimitzar el rendiment de la memòria i del model:

classe SpacyEntityMemory ( Memòria base , Model base ) :
''' Classe de memòria per emmagatzemar informació sobre entitats'''
entitats: dictat = { }
clau_memoria: str = 'entitats'
def clar ( jo mateix ) :
jo mateix . entitats = { }
@ propietat
def variables_de_memoria ( jo mateix ) - > Llista [ str ] :
''' Inicialitzar les variables proporcionades a la consulta'''
tornar [ jo mateix . clau_memoria ]
#definir les variables de memòria utilitzant els arguments
def load_memory_variables ( jo mateix , entrades: Dict [ str , Cap ] ) - > Dict [ str , str ] :
''' Truqueu a les variables per a la memòria, és a dir, la clau d'entitat'''
doc = nlp ( entrades [ llista ( entrades. claus ( ) ) [ 0 ] ] )
#configure les entitats que s'emmagatzemen a la memòria per a una unitat individual
entitats = [
jo mateix . entitats [ str ( ent ) ] per ent en doc. ents si str ( ent ) en jo mateix . entitats
]
tornar { jo mateix . clau_memoria : ' \n ' . uneix-te ( entitats ) }
#definiu el save_context() per utilitzar la memòria
def desa_context ( jo mateix , entrades: Dict [ str , Cap ] , sortides: Dict [ str , str ] ) - > Cap :
'''Guarda l'observació d'aquest xat a la memòria'''
text = entrades [ llista ( entrades. claus ( ) ) [ 0 ] ]
doc = nlp ( text )
per ent en doc. ents :
ent_str = str ( ent )
si ent_str en jo mateix . entitats :
jo mateix . entitats [ ent_str ] + = f ' \n {text}'
altra cosa :
jo mateix . entitats [ ent_str ] = text

Pas 4: Configuració de la plantilla de sol·licitud

Després d'això, simplement configureu la plantilla de sol·licitud que explica l'estructura de l'entrada proporcionada per l'usuari/humà:

des de langchain. indicacions . prompte importar PromptTemplate

plantilla = '''La següent és una interacció entre una màquina i un humà Diu que no sap Si la màquina no sap la resposta La màquina (AI) proporciona detalls del seu context i si no entén la resposta a qualsevol pregunta, simplement diu perdó

Informació de l'entitat:

{entitats}

Comunicació:

Humà: {entrada}

AI:'''


prompte = PromptTemplate ( variables_entrada = [ 'entitats' , 'entrada' ] , plantilla = plantilla )

Pas 5: prova del model

Abans de provar el model, simplement configureu el LLM mitjançant el mètode OpenAI() i configureu la funció ConversationChain() amb arguments:

llm = OpenAI ( temperatura = 0 )

conversa = Cadena de conversa (

llm = llm , prompte = prompte , verbosa = És cert , memòria = SpacyEntityMemory ( )

)

Doneu informació al model utilitzant l'argument d'entrada mentre crida al mètode predict() amb la variable de conversa:

conversa. predir ( entrada = 'A Harrison li agrada l'aprenentatge automàtic' )

Sortida

El model ha absorbit la informació i l'ha emmagatzemat a la memòria i també ha plantejat la pregunta relacionada amb la informació per continuar la conversa:

L'usuari pot respondre a la pregunta del model per afegir més informació a la memòria o provar la memòria fent la pregunta sobre la informació:

conversa. predir (

entrada = 'Quin és el tema preferit de Harrison'

)

El model proporciona la sortida basada en la informació anterior i la mostra a la pantalla tal com mostra el fragment següent:

Es tracta d'afegir un tipus de memòria personalitzat a LangChain.

Conclusió

Per afegir un tipus de memòria personalitzada a LangChain, només cal que instal·leu els mòduls necessaris per importar biblioteques per crear la memòria personalitzada. L'spaCy és la biblioteca important que s'utilitza en aquesta guia per afegir una memòria personalitzada mitjançant el seu model NLP. Després d'això, configureu la memòria personalitzada i la plantilla de sol·licitud per donar l'estructura de la interfície de xat. Un cop feta la configuració, només cal provar la memòria del model demanant informació relacionada amb les dades emmagatzemades.