Módulo principal de langchain (4): Memoria

cadena larga

1. Concepto

¿Qué es LangChain?

Origen: LangChain surgió cuando Harrison estaba hablando con algunas personas en el campo que estaban creando aplicaciones complejas de LLM y él estaba desarrollando métodos.

Vi algunas partes que se pueden abstraer. Es posible que una aplicación necesite solicitar LLM varias veces y analizar su salida, lo que requiere mucho copiar y pegar.

LangChain facilita este proceso de desarrollo. Una vez lanzado, fue ampliamente adoptado en la comunidad, con la participación no solo de muchos usuarios sino también de muchos contribuyentes.

Trabajar con código abierto.

También está el problema del modelo grande en sí, que no puede percibir datos en tiempo real y no puede interactuar con el mundo actual.

LangChain es un marco para desarrollar modelos de lenguaje grandes.

Principales características:

\ 1. Conocimiento de datos: capacidad de conectar modelos de lenguaje con otras fuentes de datos.

\2.Agencia: permite que el modelo de lenguaje interactúe con su entorno. Puede hacer varias cosas escribiendo herramientas y escribiendo y actualizando datos.

Valores principales:

1. Componentes de las funciones necesarias para desarrollar LLM y proporciona muchas herramientas para un uso sencillo.

2. Hay algunas cadenas ya preparadas que pueden completar funciones específicas, lo que también puede entenderse como una mejora de la facilidad de uso de la herramienta.

2. Módulos principales

Insertar descripción de la imagen aquí

LangChain proporciona interfaces estándar y extensibles e integraciones externas para los siguientes módulos, enumerados del menos al más complejo:

Modelo de E/S

Interfaz con modelos de lenguaje.

Conección de datos

Interfaz con datos específicos de la aplicación

Conjunto de cadena (Cadenas)

Construir secuencia de llamadas

Agentes

Deje que el ensamblaje de la cadena elija qué herramientas usar según instrucciones de alto nivel

Memoria

Persistir el estado de la aplicación en múltiples ejecuciones de ensamblaje encadenado

Devoluciones de llamada

Registre y transmita los pasos intermedios de cualquier conjunto de cadena.

3.Memoria

De forma predeterminada, tanto el modelo encadenado como el modelo proxy no tienen estado, lo que significa que manejan cada consulta entrante de forma independiente (al igual que los LLM subyacentes y el modelo de chat en sí). En algunas aplicaciones, como los chatbots, recordar interacciones previas es crucial. Ya sea a corto o largo plazo, recuerda interacciones anteriores. La clase Memoria hace exactamente esto. LangChain proporciona dos formas de componentes de memoria. Primero, LangChain proporciona herramientas auxiliares para gestionar y manipular mensajes de chat anteriores. Estas herramientas están diseñadas para ser modulares y útiles sin importar cómo las utilices. En segundo lugar, LangChain proporciona formas de integrar fácilmente estas herramientas en modelos encadenados.

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

conversation = ConversationChain(
    llm=model,
    verbose=True,
    memory=ConversationBufferMemory()
)
conversation.predict(input="你好啊!,我是张三")

Insertar descripción de la imagen aquí

conversation.predict(input="你知道我的姓名吗")

Insertar descripción de la imagen aquí

ConversaciónBufferMemoria

memory = ConversationBufferMemory()
memory.save_context({"input": "你好啊!,我是张三"},
                    {"output": "你好,张三!很高兴认识你!你有什么问题想要问我吗?"})
memory.save_context({"input": "你知道我的姓名吗"},
                    {"output": "当然知道!您叫做张三。请问有什么我可以帮助您的?"})
memory.load_memory_variables({})

{'history': 'Humano: ¡Hola! Soy Zhang San\nAI: ¡Hola, Zhang San! ¡Encantado de conocerlo! ¿Tienes alguna pregunta para mí? \nHumano: ¿Sabes mi nombre?\nAI: ¡Por supuesto! Tu nombre es Zhang San. ¿Hay algo que pueda hacer para ayudarte? '}

ConversaciónBufferVentanaMemoria

Controla el número de memorias por k.

from langchain.memory import ConversationBufferWindowMemory

memory = ConversationBufferWindowMemory(k=1)

memory.save_context({"input": "你好啊!,我是张三"},
                    {"output": "你好,张三!很高兴认识你!你有什么问题想要问我吗?"})
memory.save_context({"input": "你知道我的姓名吗"},
                    {"output": "当然知道!您叫做张三。请问有什么我可以帮助您的?"})
memory.load_memory_variables({})

{'history': 'Humano: ¿Sabes mi nombre?\nAI: ¡Por supuesto! Tu nombre es Zhang San. ¿Hay algo que pueda hacer para ayudarte? '}

ConversaciónTokenBufferMemoria

Número de tokens reservados

from langchain.memory import ConversationTokenBufferMemory

memory = ConversationTokenBufferMemory(llm=llm, max_token_limit=20)
memory.save_context({"input": "AI is what?!"},
                    {"output": "Amazing!"})
memory.save_context({"input": "Backpropagation is what?"},
                    {"output": "Beautiful!"})
memory.save_context({"input": "Chatbots are what?"},
                    {"output": "Charming!"})
memory.load_memory_variables({})

{'history': 'AI: ¡Hermoso!\nHumano: ¿Qué son los chatbots?\nAI: ¡Encantador!'}

ConversaciónResumenMemoria

Resumir lo dicho en la conversación.

from langchain.memory import ConversationSummaryBufferMemory

# create a long string
schedule = "There is a meeting at 8am with your product team. \
You will need your powerpoint presentation prepared. \
9am-12pm have time to work on your LangChain \
project which will go quickly because Langchain is such a powerful tool. \
At Noon, lunch at the italian resturant with a customer who is driving \
from over an hour away to meet you to understand the latest in AI. \
Be sure to bring your laptop to show the latest LLM demo."

memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=100)
memory.save_context({"input": "Hello"}, {"output": "What's up"})
memory.save_context({"input": "Not much, just hanging"},
                    {"output": "Cool"})
memory.save_context({"input": "What is on the schedule today?"},
                    {"output": f"{schedule}"})

memory.load_memory_variables({})

{'history': 'Sistema: El humano le pregunta a la IA qué hay en el programa de hoy. La IA responde que actualmente no está configurada para proporcionar un horario.\nAI: hay una reunión a las 8 a.m. con su equipo de producto. Necesitará preparar su presentación de PowerPoint. De 9 a. m. a 12 p. m. tendrá tiempo para trabajar en su proyecto LangChain, que se desarrollará rápidamente porque Langchain es una herramienta muy poderosa. Al mediodía, almuerzo en el restaurante italiano con un cliente que conduce desde más de una hora para reunirse con usted y comprender lo último en IA. Asegúrese de traer su computadora portátil para ver la demostración más reciente de LLM.'}

Supongo que te gusta

Origin blog.csdn.net/qq128252/article/details/132847259
Recomendado
Clasificación