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

Proyecto de Chatbot: chat history con ConversationalRetrievalChain

36/37
Recursos

¿Cómo integrar memoria a tu chatbot?

El uso de memoria en chatbots mejora la calidad de las interacciones, permitiendo que las respuestas se generen con base en el historial de las conversaciones previas y el contexto actual. Esto implica un nivel avanzado de procesamiento de lenguaje natural, particularmente con modelos como los Transformer.

¿Cómo inicializamos el historial de chat?

Antes de implementar memoria, se necesita inicializar un historial de chat, que se puede hacer de manera sencilla creando una lista vacía. Esta lista actuará como un almacén para registrar todas las interacciones durante una conversación.

chatHistory = []

¿Cómo definir la función processMemoryQuery?

Al igual que se definió processQAQuery para gestionar las consultas y respuestas, es necesario crear una función llamada processMemoryQuery. Esta emulará la anterior, pero con las particularidades asociadas al manejo del historial de chat.

En lugar de utilizar un retrieval QA, se necesita implementar una conversational retrieval chain. Este cambio es clave porque permite recuperar información basada en el contexto interactivo, no sólo en preguntas/respuestas. Aquí está un ejemplo simplificado:

def processMemoryQuery(query, retriever, chatHistory):
    conversationChain = ConversationalRetrievalChain(model=chat, retriever=retriever, verbose=True)
    result = conversationChain.run(query=query, chat_history=chatHistory)
    return result['answer']

¿Cómo aseguramos que el historial crezca?

Durante una interacción típica, el chatbot debe obtener el resultado y luego integrarlo dentro del historial del chat. Para ello, la función utiliza el método append para agregar tanto la consulta como la respuesta al historial. Así, se puede tener un registro completo de la interacción:

chatHistory.append({'query': query, 'response': result})

¿Qué hacer si el historial se vuelve inmanejable?

De manera natural, el prompt se puede llenar de información hasta un punto en el que colapse. Ante este escenario, la solución propuesta es implementar una cadena de sumarización. Esta cadena condensará las primeras interacciones, manteniendo las últimas dos intactas. Esto optimiza el uso del prompt sin perder contexto.

¿Cómo probar y depurar el modelo?

Tras efectuar las implementaciones, es crucial depurar y asegurarse que el código funcione correctamente. Aquí, herramientas como Black y Isort se encargan de limpiar y organizar el código. Luego, con Poetry se puede ejecutar el script:

black conversation_ai.py
isort conversation_ai.py
poetry run python hashira

Reto: Mejorar el uso de memoria

La implementación de memoria en chatbots requiere no solo programación, sino creatividad para manejar grandes volúmenes de datos. Un reto interesante es crear una cadena que sume las interacciones previas mientras mantiene las más recientes accesibles. Así, se evita la saturación y se mantiene la eficiencia.

El desarrollo de chatbots con memoria ofrece un gran potencial, pero también plantea desafíos. Atrévete a superarlos y considera las posibilidades de mejorar con interfaces de usuario visuales o adaptando para múltiples usuarios. ¡Sigue aprendiendo y explorando!

Aportes 0

Preguntas 1

Ordenar por:

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