¿Cómo agregar un tipo de memoria personalizado en LangChain?

Como Agregar Un Tipo De Memoria Personalizado En Langchain



LangChain se utiliza para configurar/diseñar modelos de lenguaje o chatbots que pueden interactuar con humanos como un chat. Estos mensajes de chat están vinculados a través de cadenas como sugiere el nombre LangChain y el usuario también puede almacenarlos en la memoria. LangChain permite a los desarrolladores utilizar bibliotecas de memoria que proporcionan el uso de clases integradas o la personalización de su propia memoria.

Esquema rápido

Esta publicación mostrará:







Cómo agregar un tipo de memoria personalizado en LangChain



Conclusión



¿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 larga

Al 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 “ ' y ' conseguir pase 'Las bibliotecas sirven para ingresar la clave API de la cuenta de OpenAI para configurar su entorno :

importar
importar conseguir pase

. 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 base

de 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 espacioso

PNL = 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 aviso

plantilla = '''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.