Introducción a LangChain
Desarrollo de aplicaciones con LLM utilizando LangChain
Estructura y módulos de LangChain
Uso de modelos Open Source de Hugging Face
Uso de modelos de OpenAI API
Prompt templates de LangChain
Cadenas en LangChain
Utility chains
RetrievalQA chain
Foundational chains
Quiz: Introducción a LangChain
Casos de uso de LangChain
Casos de uso de LangChain
¿Cómo utilizar LangChain en mi equipo?
Quiz: Casos de uso de LangChain
Manejo de documentos con Ãndices
¿Cómo manejar documentos con Ãndices en LangChain?
La clase Document
Document Loaders: PDF
Document Loaders: CSV con Pandas DataFrames
Document Loaders: JSONL
Document Transformers: TextSplitters
Proyecto de Chatbot: configuración de entorno para LangChain y obtención de datos
Proyecto de Chatbot: creación de documents de Hugging Face
Quiz: Manejo de documentos con Ãndices
Embeddings y bases de datos vectoriales
Uso de embeddings y bases de datos vectoriales con LangChain
¿Cómo usar embeddings de OpenAI en LangChain?
¿Cómo usar embeddings de Hugging Face en LangChaing?
Chroma vector store en LangChain
Proyecto de Chatbot: ingesta de documents en Chroma
RetrievalQA: cadena para preguntar
Proyecto de Chatbot: cadena de conversación
Proyecto de Chatbot: RetrievalQA chain
Quiz: Embeddings y bases de datos vectoriales
Chats y memoria con LangChain
¿Para qué sirve la memoria en cadenas y chats?
Uso de modelos de chat con LangChain
Chat prompt templates
ConversationBufferMemory
ConversationBufferWindowMemory
ConversationSummaryMemory
ConversationSummaryBufferMemory
Entity memory
Proyecto de Chatbot: chat history con ConversationalRetrievalChain
Quiz: Chats y memoria con LangChain
Evolución del uso de LLM
LangChain y LLM en evolución constante
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
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 = []
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']
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})
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.
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
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?