Esquema rápido
Esta publicación mostrará:
Cómo agregar un tipo de memoria personalizado en LangChain
- Instalación de marcos
- Importación de bibliotecas
- Construyendo memoria personalizada
- Configuración de plantilla de aviso
- Probando el modelo
¿Cómo agregar un tipo de memoria personalizado en LangChain?
Agregar un tipo de memoria personalizado en LangChain permite al usuario obtener el máximo rendimiento de la memoria. El usuario puede configurar el tipo de memoria según sus necesidades. Para agregar un tipo de memoria personalizado en LangChain, simplemente siga los siguientes pasos:
Paso 1: instalar marcos
Primero, instale el marco LangChain para comenzar con el proceso de agregar un tipo de memoria personalizado:
pip instalar cadena largaAl ejecutar el comando anterior en Python Notebook se instalarán las dependencias de LangChain como se muestra en el siguiente fragmento:
Instale el módulo OpenAI para obtener sus bibliotecas que se pueden usar para configurar los LLM:
instalación de pip en openai
Esta guía utilizará el marco spaCy para diseñar el tipo de memoria personalizado en LangChain y el siguiente código se utiliza para instalar el módulo:
instalación de pip espacial
El modelo spaCy utiliza la tabla hash para almacenar la información como observación, como mensajes de chat anteriores. El siguiente código se utiliza para descargar el modelo de lenguaje grande o LLM de la biblioteca spaCy para crear un modelo de PNL avanzado:
! python -m descarga espacial en_core_web_lg
Importando “ tú ' y ' conseguir pase 'Las bibliotecas sirven para ingresar la clave API de la cuenta de OpenAI para configurar su entorno :
importar túimportar conseguir pase
tú . alrededor de [ 'OPENAI_API_KEY' ] = conseguir pase . conseguir pase ( 'Clave API de OpenAI:' )
Paso 2: Importar bibliotecas
El siguiente paso es importar las bibliotecas necesarias para personalizar el tipo de memoria según el modelo de chat:
de cadena larga. esquema importar Memoria basede cadena larga. cadenas importar Cadena de conversación
de pidántico importar Modelo base
de cadena larga. llms importar Abierto AI
de mecanografía importar Lista , dictar , Cualquier
Importando el “ espacio 'biblioteca para cargar el' en_core_web_lg 'modelo y asígnalo al' PNL ”variable como es el modelo de Procesamiento del Lenguaje Natural:
importar espaciosoPNL = espacioso. carga ( 'en_core_web_lg' )
Paso 3: crear una memoria personalizada
Después de eso, simplemente cree la memoria personalizada utilizando los argumentos BaseMemory y BaseModel en la clase Memoria. Luego, configure entidades (recopiladas/almacenadas a partir de los datos) que puedan almacenarse en la memoria como información completa o como una sola unidad. La memoria está configurada para contener todas las entidades del documento para optimizar el rendimiento de la memoria y el modelo:
clase Memoria de entidad espacial ( Memoria base , Modelo base ) :''' Clase de memoria para almacenar información sobre entidades'''
entidades: dictar = { }
clave_memoria: cadena = 'entidades'
definición claro ( ser ) :
ser . entidades = { }
@ propiedad
definición variables_memoria ( ser ) - > Lista [ cadena ] :
''' Inicializa las variables proporcionadas a la consulta'''
devolver [ ser . clave_memoria ]
#definir las variables de memoria usando los argumentos
definición variables_memoria_carga ( ser , entradas: dict [ cadena , Cualquier ] ) - > dictar [ cadena , cadena ] :
''' Llame a las variables para la memoria, es decir, clave de entidad'''
doc = PNL ( entradas [ lista ( entradas. llaves ( ) ) [ 0 ] ] )
#configurar entidades que se almacenarán en la memoria de una unidad individual
entidades = [
ser . entidades [ cadena ( ent ) ] para ent en doc. entes si cadena ( ent ) en ser . entidades
]
devolver { ser . clave_memoria : ' \norte ' . unirse ( entidades ) }
#definir save_context() para usar la memoria
definición guardar_contexto ( ser , entradas: dict [ cadena , Cualquier ] , salidas: dict [ cadena , cadena ] ) - > Ninguno :
'''Guardar observaciones de este chat en la memoria'''
texto = entradas [ lista ( entradas. llaves ( ) ) [ 0 ] ]
doc = PNL ( texto )
para ent en doc. entes :
cadena_ent = cadena ( ent )
si cadena_ent en ser . entidades :
ser . entidades [ cadena_ent ] + = F ' \norte {texto}'
demás :
ser . entidades [ cadena_ent ] = texto
Paso 4: Configurar la plantilla de aviso
Después de eso, simplemente configure la plantilla de aviso que explica la estructura de la entrada proporcionada por el usuario/humano:
de cadena larga. indicaciones . inmediato importar Plantilla de avisoplantilla = '''La siguiente es una interacción entre una máquina y un humano Dice que no sabe Si la máquina no sabe la respuesta La máquina (IA) proporciona detalles de su contexto y si no entiende la respuesta a alguna pregunta simplemente dice lo siento
Información de la entidad:
{entidades}
Comunicación:
Humano: {entrada}
AI:'''
inmediato = Plantilla de aviso ( variables_entrada = [ 'entidades' , 'aporte' ] , plantilla = plantilla )
Paso 5: probar el modelo
Antes de probar el modelo, simplemente configure el LLM usando el método OpenAI() y configure la función ConversationChain() con argumentos:
llm = Abierto AI ( temperatura = 0 )conversación = Cadena de conversación (
llm = llm , inmediato = inmediato , verboso = Verdadero , memoria = Memoria de entidad espacial ( )
)
Proporcione información al modelo usando el argumento de entrada mientras llama al método predict() con la variable de conversación:
conversación. predecir ( aporte = 'A Harrison le gusta el aprendizaje automático' )Producción
El modelo absorbió la información y la almacenó en la memoria y también planteó la pregunta relacionada con la información para continuar con la conversación:
El usuario puede responder a la pregunta del modelo para agregar más información a la memoria o probar la memoria haciendo la pregunta sobre la información:
conversación. predecir (aporte = '¿Cuál es la materia favorita de Harrison?'
)
El modelo proporciona el resultado basado en la información anterior y lo muestra en la pantalla como muestra el siguiente fragmento:
Se trata de agregar un tipo de memoria personalizado en LangChain.
Conclusión
Para agregar un tipo de memoria personalizada en LangChain, simplemente instale los módulos necesarios para importar bibliotecas para crear la memoria personalizada. spaCy es la biblioteca importante que se utiliza en esta guía para agregar una memoria personalizada utilizando su modelo NLP. Después de eso, configure la memoria personalizada y la plantilla de aviso para darle la estructura a la interfaz de chat. Una vez realizada la configuración, simplemente pruebe la memoria del modelo solicitando información relacionada con los datos almacenados.