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

Uso de modelos de chat con LangChain

29/37
Recursos

Aportes 3

Preguntas 1

Ordenar por:

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

En este curso hay varias clases con 0 comentarios. Eso significa o que estamos entendiendo todo o no estamos entendiendo nada 😅

📝 Historial de Mensajes

.

ℹ️ Summary

Esta guía proporciona un caso de uso sobre “Memory Context”, cuando es necesario gestionar un historial de mensajes para proveer contexto a un LLM.
.

🗂️ Background

LangChain proporciona varias utilidades para la memorización. Sin embargo, ChatMessagehistory es la base sobre la mayoría, ya que abstrae métodos para guardar mensajes Humanos (HumanMessage) , mensajes AI (AIChatMessage), mensaje contextuales (SystemMessage), y luego recuperarlos todos.
.
Posteriormente, el historial puede ser almacenado en diferentes soluciones, como Redis, para mantener una persistencia de cada uno.
.
Enlaces auxiliares:

.

🎯 Problem

Implementar un “Memory Context” utilizando TypeScript para generar un historial de mensajes para implementar en un asistente de chat.
.

🚧 Solution

LanChain provee de la clase ChatMessageHistory para abstraer cada mensaje, según sea el origen de su existencia (Usuario, AI, etc.).

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

const chatHistory = new ChatMessageHistory([
	new SystemMessage(
		'You are an assistant in a washing machine repair Call Center.',
	),
	new HumanMessage('How are you? I need some help'),
	new AIMessage("I'm fine thanks. How can I help you?"),
	new HumanMessage('I want to repair a wash machine'),
])

Dicho historial, es operable mediante una abstracción de memorización. Cada memorización posee su estrategia de diseño según sea el requerimiento.

La memorización BufferMemory, extrae de ChatMessageHistory para obtener su contexto para, finalmente, integrarlo en un modelo LLM de nuestra preferencia.

const memory = new BufferMemory({
	chatHistory,
})

🍻 Discussion

De manera provisional, no es recomendable compartir el mismo historial o instancia de memoria entre dos cadenas de LangChain, una instancia de memoria representa el historial de una única conversación.
.
Así mismo, para su persistencia, es recomendable emplear una solución de almacenamiento según sea el beneficio de cada motor, por ejemplo Redis para una implementación en caché por sesión.

import { ConversationChain } from 'langchain/chains'
import { ChatOpenAI } from 'langchain/chat_models/openai'
import { BufferMemory, ChatMessageHistory } from 'langchain/memory'
import { HumanMessage, AIMessage, SystemMessage } 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 SystemMessage(
		'You are an assistant in a washing machine repair Call Center.',
	),
	new HumanMessage('How are you? I need some help'),
	new AIMessage("I'm fine thanks. How can I help you?"),
	new HumanMessage('I want to repair a wash machine'),
])

const memory = new BufferMemory({
	chatHistory,
})

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

const response = await chain.call({ input: 'Why did it break down?' })
console.log(response)
El concepto principal de está clase, es la lista, que almacena mensajes, de **3** diferentes tipos, y dependiendo de los tipos de mensaje que se agreguen a está lista, la conversación va ir tomando su rumbo.