¿Cómo agregar memoria a una cadena con múltiples entradas en LangChain?

Como Agregar Memoria A Una Cadena Con Multiples Entradas En Langchain



Millones de personas en todo el mundo utilizan chatbots y modelos de lenguaje grandes y estos modelos pueden generar texto cuando se les ordena. LangChain es uno de los marcos más eficaces y eficientes que permite a los desarrolladores crear este tipo de modelos y bots. El usuario proporciona indicaciones o consultas como entrada y el modelo comprende el comando antes de generar el texto que parece más relacionado o similar al comando.

Esta guía ilustrará el proceso de agregar memoria a una cadena con múltiples entradas en LangChain.

¿Cómo agregar memoria a una cadena con múltiples entradas en LangChain?

La memoria se puede agregar a los LLM o chatbots para almacenar los mensajes o datos más recientes para que el modelo pueda comprender el contexto del comando. Para conocer el proceso de agregar memoria a una cadena con múltiples entradas en LangChain, simplemente siga los siguientes pasos:







Paso 1: instalar módulos

Primero, instale el marco LangChain, ya que tiene una variedad de dependencias para crear modelos de lenguaje:



pip instalar cadena larga



Instale chromadb para almacenar los datos utilizados por la memoria en el almacén de vectores Chroma:





pip instala cromadb

Tiktoken es el tokenizador que se utiliza para crear pequeños fragmentos de documentos grandes para que puedan administrarse fácilmente:



instalar pip tiktoken

OpenAI es el módulo que se puede utilizar para crear cadenas y LLM utilizando el método OpenAI():

instalación de pip en openai

Paso 2: configurar el entorno y cargar datos

El siguiente paso después de instalar todos los módulos necesarios para este proceso es configurando el ambiente usando la clave API de la cuenta OpenAI:

importar
importar conseguir pase

. alrededor de [ 'OPENAI_API_KEY' ] = conseguir pase . conseguir pase ( 'Clave API de OpenAI:' )

Cargue los documentos usando la biblioteca de archivos para construir las cadenas en el marco LangChain:

de Google. Y AL importar archivos

subido = archivos. subir ( )

Paso 3: importar bibliotecas

Una vez que el documento se haya cargado correctamente, simplemente importe las bibliotecas requeridas desde el módulo Langchain:

de cadena larga. incrustaciones . abierto importar Incrustaciones de OpenAI

de cadena larga. incrustaciones . adherirse importar CohereIncrustaciones

de cadena larga. divisor de texto importar Divisor De Texto De Carácter

de cadena larga. vectorestiendas . búsqueda_vectorial_elástica importar Búsqueda de vectores elásticos

de cadena larga. vectorestiendas importar croma

de cadena larga. tienda de documentos . documento importar Documento

Paso 4: crear memoria utilizando la base de datos Chroma

Ahora, comience a construir el espacio vectorial para almacenar las incrustaciones y tokens del documento subido anteriormente:

con abierto ( 'estado_de_la_unión.txt' ) como F:
Estado de la unión = F. leer ( )
divisor de texto = Divisor De Texto De Carácter ( tamaño de porción = 1000 , trozo_superposición = 0 )
textos = divisor de texto. texto_dividido ( Estado de la unión )

incrustaciones = Incrustaciones de OpenAI ( )

Configure la base de datos Chroma para almacenar el texto y las incrustaciones del documento:

búsqueda de documentos = Croma. de_textos (

textos , incrustaciones , metadatos = [ { 'fuente' : i } para i en rango ( solo ( textos ) ) ]

)

Pruebe la memoria solicitando el comando en la variable de consulta y luego ejecute el método similarity_search():

consulta = '¿Cuándo se formó la OTAN?'

documentos = búsqueda de documentos. búsqueda_similitud ( consulta )

Paso 5: Configurar la plantilla de aviso

Este paso explica el proceso de configuración de la plantilla para las indicaciones importando las siguientes bibliotecas:

de cadena larga. cadenas . pregunta_respuesta importar cadena_qa_carga

de cadena larga. llms importar AbiertoAI

de cadena larga. indicaciones importar Plantilla de aviso

de cadena larga. memoria importar ConversaciónBufferMemoria

Después de eso, simplemente configure la plantilla o estructura para la consulta y ejecute la cadena una vez que se agregue la memoria al modelo:

plantilla = '''Eres una modelo conversando con un humano.
Teniendo en cuenta los fragmentos extraídos de un documento extenso y una pregunta, cree una respuesta final.

{contexto}

{historia}
Humano: {entrada}
Chatbot:'''


inmediato = Plantilla de aviso (
variables_entrada = [ 'historia' , 'aporte' , 'contexto' ] , plantilla = plantilla
)
memoria = ConversaciónBufferMemoria ( clave_memoria = 'historia' , clave_entrada = 'aporte' )
cadena = cadena_qa_carga (
AbiertoAI ( temperatura = 0 ) , tipo_cadena = 'cosa' , memoria = memoria , inmediato = inmediato
)

Paso 6: probar la memoria

Este es el momento de probar el modelo haciendo la pregunta usando la variable de consulta y luego ejecutando el método chain() con sus parámetros:

consulta = '¿Cuándo se formó la OTAN?'

cadena ( { 'documentos_de entrada' : documentos , 'aporte' : consulta } , retorno_solo_salidas = Verdadero )

Imprima los datos almacenados en la memoria intermedia ya que la respuesta dada por el modelo se almacena recientemente en la memoria:

imprimir ( cadena. memoria . buffer )

Se trata de agregar memoria a una cadena con múltiples entradas en LangChain.

Conclusión

Para agregar memoria a una cadena con múltiples entradas en LangChain, simplemente instale los módulos y el almacén de vectores para almacenar el texto y las incrustaciones. Después de eso, cargue los datos/documento desde el sistema local y luego importe las bibliotecas necesarias para almacenar los datos para crear la memoria para el LLM. Configure la plantilla de aviso para almacenar los mensajes más recientes en la memoria intermedia y luego envíe un mensaje de texto a la cadena. Esta guía ha detallado el proceso de agregar memoria a una cadena con múltiples entradas en LangChain.