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

Curso de LangChain

Curso de LangChain

Omar Espejel

Omar Espejel

ConversationBufferWindowMemory

32/37
Recursos

Aportes 2

Preguntas 1

Ordenar por:

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

Tener en cuenta que el `K`, o la `window`, son sólo de las interacciones del **user**, **no** cuenta las de **ia**.

📝 Sesgo de Memorización

ℹ️ Summary

Esta guía proporciona un caso de uso sobre “Conversation Buffer Window Memory”, para tener conversaciones sesgadas en interacciones.
.

🗂️ Background

En LangChain, se puede implementa:
.

  • Un sistema de memoria muy simple que podría devolver los mensajes más recientes en cada ejecución.
  • Un sistema de memoria algo más complejo que podría devolver un resumen sucinto de los últimos K mensajes.
  • Un sistema aún más sofisticado podría extraer entidades de los mensajes almacenados y sólo devolver información sobre las entidades referenciadas en la ejecución actual.

.
Cada aplicación puede tener diferentes requisitos en cuanto a la forma de consultar la memoria. El módulo de memoria debería facilitar tanto la puesta en marcha de sistemas de memoria sencillos como la escritura de sistemas personalizados si fuera necesario.
.
Enlaces auxiliares:

.

🚧 Solution

ConversationBufferWindowMemory mantiene una lista de las interacciones de la conversación a lo largo del tiempo. Sólo utiliza las últimas k interacciones.

import { BufferWindowMemory, ChatMessageHistory } from 'langchain/memory'
import { HumanMessage, AIMessage } from 'langchain/schema'

const chatHistory = new ChatMessageHistory([
	new HumanMessage("Hi! I'm Jim."),
	new AIMessage(
		"Hi Jim! It's nice to meet you. My name is AI. What would you like to talk about?",
	),
])

const memory = new BufferWindowMemory({
	k: 1,
	chatHistory,
})

Con lo anterior, se agregó de un historial de conversación al LLM. Para darle de contexto y efectuar correctamente la siguiente tarea o pregunta. Sin embargo, después de algunas interacciones, debido a los k o mensajes pasados, olvide su contexto.

import { ConversationChain } from 'langchain/chains'

const chain = new ConversationChain({
	llm,
	memory,
})

let response = await chain.call({ input: 'What is it a LLM?' })
console.log(response)

response = await chain.call({ input: 'What is it OpenAI?' })
console.log(response)

response = await chain.call({ input: "What's my name?" })
console.log(response)

🍻 Discussion

ConversationBufferWindowMemory es un tipo de memorización útil para mantener una ventana deslizante de las interacciones más recientes, para que el buffer no se haga demasiado grande.

import { ConversationChain } from 'langchain/chains'
import { ChatOpenAI } from 'langchain/chat_models/openai'
import { BufferWindowMemory, ChatMessageHistory } from 'langchain/memory'
import { HumanMessage, AIMessage } from 'langchain/schema'

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

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

const chatHistory = new ChatMessageHistory([
	new HumanMessage("Hi! I'm Jim."),
	new AIMessage(
		"Hi Jim! It's nice to meet you. My name is AI. What would you like to talk about?",
	),
])

const memory = new BufferWindowMemory({
	k: 1,
	chatHistory,
})

const chain = new ConversationChain({
	llm,
	memory,
	prompt,
})

let response = await chain.call({ input: 'What is it a LLM?' })
console.log(response)

response = await chain.call({ input: 'What is it OpenAI?' })
console.log(response)

response = await chain.call({ input: "What's my name?" })
console.log(response)