Introducción a LangChain

1

Desarrollo de aplicaciones con LLM utilizando LangChain

2

Estructura y módulos de LangChain

3

Uso de modelos Open Source de Hugging Face

4

Uso de modelos de OpenAI API

5

Prompt templates de LangChain

6

Cadenas en LangChain

7

Utility chains

8

RetrievalQA chain

9

Foundational chains

Quiz: Introducción a LangChain

Casos de uso de LangChain

10

Casos de uso de LangChain

11

¿Cómo utilizar LangChain en mi equipo?

Quiz: Casos de uso de LangChain

Manejo de documentos con índices

12

¿Cómo manejar documentos con índices en LangChain?

13

La clase Document

14

Document Loaders: PDF

15

Document Loaders: CSV con Pandas DataFrames

16

Document Loaders: JSONL

17

Document Transformers: TextSplitters

18

Proyecto de Chatbot: configuración de entorno para LangChain y obtención de datos

19

Proyecto de Chatbot: creación de documents de Hugging Face

Quiz: Manejo de documentos con índices

Embeddings y bases de datos vectoriales

20

Uso de embeddings y bases de datos vectoriales con LangChain

21

¿Cómo usar embeddings de OpenAI en LangChain?

22

¿Cómo usar embeddings de Hugging Face en LangChaing?

23

Chroma vector store en LangChain

24

Proyecto de Chatbot: ingesta de documents en Chroma

25

RetrievalQA: cadena para preguntar

26

Proyecto de Chatbot: cadena de conversación

27

Proyecto de Chatbot: RetrievalQA chain

Quiz: Embeddings y bases de datos vectoriales

Chats y memoria con LangChain

28

¿Para qué sirve la memoria en cadenas y chats?

29

Uso de modelos de chat con LangChain

30

Chat prompt templates

31

ConversationBufferMemory

32

ConversationBufferWindowMemory

33

ConversationSummaryMemory

34

ConversationSummaryBufferMemory

35

Entity memory

36

Proyecto de Chatbot: chat history con ConversationalRetrievalChain

Quiz: Chats y memoria con LangChain

Evolución del uso de LLM

37

LangChain y LLM en evolución constante

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
1 Hrs
29 Min
31 Seg
Curso de LangChain

Curso de LangChain

Omar Espejel

Omar Espejel

ConversationSummaryMemory

33/37
Recursos

¿Qué es la memoria Conversation Summary Memory?

La memoria Conversation Summary Memory permite la creación de un resumen de todas las interacciones mantenidas en una conversación. A diferencia de guardar cada interacción individualmente, este enfoque guarda un resumen que encapsula el contenido de la conversación. Esta técnica es ideal para conversaciones extensas, permitiendo mantener una visión general sin recopilar cada mensaje por separado.

¿Cómo se configuran las bibliotecas necesarias?

Para implementar este tipo de memoria, es esencial contar con algunas bibliotecas clave:

  1. Memory en Chains: Importa ConversationSummaryMemory para gestionar las interacciones.
  2. OpenAI desde LangChain: Utiliza los modelados de lenguaje de OpenAI para procesar las conversaciones.
  3. Chains, Conversation Chain: Crea cadenas de conversación basadas en modelos AI.
from langchain.memory import ConversationSummaryMemory
from langchain.llms import OpenAI
from langchain.chains import ConversationChain

¿Cómo se instancian modelo y memoria?

Creación del modelo

Primero, instanciamos un modelo de chat de OpenAI. En este caso, el modelo específico es GPT-3.5 Turbo.

chat_model = OpenAI.ChatCompletion(model="gpt-3.5-turbo")

Configuración de la memoria

Creamos la memoria, denominada SummaryMemory, definiendo el modelo que se encargará de gestionar el resumen de las interacciones:

summary_memory = ConversationSummaryMemory(model=chat_model)

¿Cómo se realiza una conversación simulada?

Una vez configurada la instancia del modelo y la memoria, podemos proceder a generar una cadena de conversación.

Instanciación y seguimiento

Creamos un objeto de ConversationChain, utilizando chat_model, con la opción verbose=True para seguir el flujo detallado:

conversation = ConversationChain(
    model=chat_model,
    verbose=True,
    memory_type=summary_memory
)

Ejemplos de interacción

  1. Iniciamos la conversación: Se observa cómo verbose=True brinda contexto sobre las interacciones. Aquí, el papel de la inteligencia artificial y el ser humano se define claramente.

  2. Primer intercambio: Omar, el interlocutor humano, se presenta de manera coloquial, y la inteligencia artificial responde de manera cordial y amistosa.

  3. Más interacción: Se continúan las preguntas y respuestas, donde se puede consultar temas complejos como la historia latinoamericana y la opresión indígena. El resumen se llena con las interacciones, destacando preguntas importantes y el estilo de comunicación coloquial de Omar.

Ventajas de usar Conversation Summary Memory

  • Contexto en conversaciones largas: Ideal para mantener una visión general de interacciones extensas sin perder detalles críticos.
  • Memoria eficiente: Guarda el contexto necesario para construir respuestas informadas sin sobrecargar la memoria.
  • Acceso a resúmenes: Posibilidad de imprimir y revisar el resumen de la conversación, simplificando el seguimiento de temas tratados.

Esta herramienta ofrece una manera efectiva de manejar conversaciones complejas en aplicaciones donde el contexto y la memoria de las interacciones son esenciales.

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En comparación con ConverssationBufferWindowMemory, esta memoria envía resumenes de la conversación haciendo más barata la interacción

📝 Contexto de Memorización por resumen

ℹ️ Summary

Esta guía proporciona un caso de uso sobre “Conversation Summary Memory”, un tipo de memorización basada en la generación de un resumen del historial para proveer de contexto.
.

🗂️ Background

La memoria de resumen de conversación resumirá lo que hemos hablado con el modelo de manera concisa y lo inyectará al prompt, esto puede hacer que se pierdan ligeros pedazos de información pero permitirá que arrastremos muchisimo más contexto en menos tokens.
.
Esta estrategia de memoria permite equilibrar entre mantener un resumen completo de la conversación y reducir el uso de tokens para un funcionamiento más eficiente.
.
Enlaces auxiliares:

.

🚧 Solution

LangChain provee de un par de implementación para este tipo de resumen de la conversación.
.
Por una parte, tendremos el uso mediante algún LLM genérico y un Chat model especializado. Su elección y uso, será debido al refinamiento del proceso según sea la especificación.

Por ejemplo, mediante un Chat Model:

import { ChatOpenAI } from 'langchain/chat_models/openai'
import { ConversationSummaryMemory } from 'langchain/memory'

const memory = new ConversationSummaryMemory({
	llm: new ChatOpenAI({
		maxTokens: -1,
		modelName: 'gpt-4',
		temperature: 0,
		openAIApiKey: API_TOKEN,
	}),
})

Con ello, cada interacción sera guiada por un resumen para proveer de un contexto a la conversación como memorización.

import { ConversationChain } from 'langchain/chains'
import { ChatOpenAI } from 'langchain/chat_models/openai'

const chain = new ConversationChain({
	llm: new ChatOpenAI({
		maxTokens: -1,
		modelName: 'gpt-4',
		temperature: 0,
		openAIApiKey: API_TOKEN,
	}),
	memory,
})

🍻 Discussion

ConversationSummaryMemory crea un resumen de la conversación a lo largo del tiempo. Esto puede ser útil para condensar información de la conversación en el tiempo.
.
La memoria del resumen de conversación, minimiza la conversación a medida que ocurre, almacenando el contexto en la memoria. Esta memoria se puede utilizar entonces para inyectar el resumen de la conversación, por ejemplo en un prompt.
.
Esta memoria es muy útil para conversaciones largas, en las que mantener el historial de mensajes pasados en el aviso al pie de la letra ocuparía demasiados tokens.

import { ConversationChain } from 'langchain/chains'
import { ChatOpenAI } from 'langchain/chat_models/openai'
import { ConversationSummaryMemory } from 'langchain/memory'

const API_TOKEN = // 👈 Enter the API Token from OpenAI

const memory = new ConversationSummaryMemory({
	llm: new ChatOpenAI({
		maxTokens: -1,
		modelName: 'gpt-4',
		temperature: 0,
		openAIApiKey: API_TOKEN,
	}),
})

const chain = new ConversationChain({
	llm: new ChatOpenAI({
		maxTokens: -1,
		modelName: 'gpt-4',
		temperature: 0,
		openAIApiKey: API_TOKEN,
	}),
	memory,
})

let response = await chain.call({
	input: "Hello, I'm Jim.",
})
console.log(response, await memory.loadMemoryVariables({}))  

response = await chain.call({ input: "What's my name?" })
console.log(response, await memory.loadMemoryVariables({}))
Esto ya plantea poder más estrategias para mejorar el flujo de la conversación.