
Chatbot personalizado con LangChain y Groq
Sección 1
Objetivos y organización del curso
Planteo de la situación
Impacto de esta limitación
Objetivos del curso
Definición de chatbot
Sección 2
Preparación del entorno de trabajo
Crear carpetas
Instalar Python
Crear un entorno virtual
Implementar Jupyter Notebook
Sección 3
La plataforma LangChain
Módulos de LangChain
Características y ventajas de LC
Sitio de LangChain
Instalar LangChain
Sección 4
El sistema RAG (Retrieval Augmented Generation)
Organización de un sistema RAG
Indexación
Recuperación
Generación de la respuesta
Resumen del protocolo RAG
Sección 5
Modelos de lenguaje: Introducción
NLP y LLM
LLM y lenguaje natural
Aprendizaje en contexto ("in-context learning")
Sintonización fina ("fine-tuning") versus
Sección 6
Modelos de lenguaje: Implementación
La plataforma Groq
Obtener la clave API Groq
Almacenar la clave API Groq
Groq Inc. y la plataforma ChatGroq
El sitio Groq
Implementación de ChatGroq
Sección 7
Modelos de lenguaje: codificación
Implementación de ChatGroq
Modelos de texto y modelos chat, o conversacionales
Sintaxis de mensajes
Mensajes como tuplas
Mensajes con clases SystemMessage, HumanMessage y AIMessage NB
Modelos chat y memoria
Parámetros de control en LLMs: temperature, max_tokens
Explorar los metadatos
Modificar temperatura y max_tokens en el modelo gemma
Resumen de modelos de lenguaje en LangChain
Sección 8
Cargador de documentos (“Document loader”)
Propósito e implementación
Carga de archivos de texto
Carga de archivos CSV
Carga de documentos en PDF
Carga de transcripciones de YouTube
Carga de páginas en sitios web
Carga de artículos en arXiv
Carga colectiva de archivos en un directorio
Resumen de cargadores de documentos
Sección 9
Partición de texto (“text splitting”)
Ventana de contexto
Eficiencia del análisis semántico
El problema de "perdido en el medio"
Mecanismos de partición
Partición de textos y "chunks"
Tamaño y solapamiento de chunks
Partición mal hecha
Sección 10
Partición de texto - Codificación
Métodos asociados
CharacterTextSplitter
RecursiveCharacterTextSplitter
ChunkViz
Resumen de partición de textos
Sección 11
Tokenización y codificación
Precursores: Bag-of-Words, TF-IDF
Tokenización
Codificación
Sección 12
Incrustación ("embedding")
¿Porqué convertir a vectores?
Incrustación ("embedding")
Modelos de incrustación
La plataforma HuggingFace
Precursores de la incrustación
Resumen de incrustación
Sección 13
El espacio vectorial ("vector store")
Propiedades de un espacio vectorial
Vector stores integrados a LangChain
Espacio vectorial con ChromaDB
Espacio vectorial con FAISS (Facebook AI Similarity Search)
Resumen de espacio vectorial
Sección 14
Recuperación selectiva de datos - Fundamentos
Propósito
Mecanismos de recuperación
Rutinas del vector store
Búsqueda por similitud semántica
Métricas de similitud semántica
MMR (Maximum Marginal Relevance)
Rutinas del módulo Retriever
Vector store-backed retriever
ParentDocumentRetriever
LongContextReorder
Resumen de recuperación
Sección 15
Recuperación selectiva de datos - Codificación
Comparación entre similitud del coseno y distancia euclidiana en documentos de similarity_search
Maximum Marginal Relevance (MMR)
Sección 16
El módulo Retrieval
El método as_retriever()
ParentDocumentRetriever
Compresor de contexto (“contextual compression”)
LongContextReorderRetriever
Resumen de recuperadores
Sección 17
Comunicación con el modelo: el prompt
Organización de un prompt
Procesamiento de un prompt 62
Sensibilidad de un LLM a la redacción de un prompt
Sección 18
Plantillas de prompt
Tipos de plantilla de prompt
Plantilla PromptTemplate
Plantilla FewShotPromptTemplate
Plantilla ChatPromptTemplate
Plantilla MessagePromptTemplate
Chain-of-Thought (“cadena de razonamiento”)
Revisión del uso de variables dinámicas en prompts
Resumen de plantillas de prompt
Sección 19
Chains - Fundamentos y Codificación
Fundamentos
LCEL (LangChain Expression Language)
Contrucción de cadenas
Sección 20
Analizadores sintácticos ("output parsers")
Propósito
Revisión de instrucciones
StrOutputParser
CommaSeparatedListOutputParser
DatetimeOutputParser
Resumen de analizadores sintácticos.
Sección 21
LCEL (LangChain Expression Language)
Métodos de los runnables
Entradas y salidas de runnables
RunnableSequence,RunnableParallel
RunnablePassthrough, RunnableLambda
Sección 22
LCEL - Codificación
Cadenas con RunnableSequence y RunnableParallel
Chatbot RAG y cadena
El schema
Representacion gráfica de una cadena
Invocar dos modelos
RunnableLambda – Cadenas con funciones personalizadas
Chain of Thought prompting
Constructores prediseñados
Stuff documents – Codificación
Cadenas con memoria
Resumen de cadenas (“chains”)
Sección 23
Adecuación de Legacy Chains
Deprecated
Remplazo de LLMChain
Remplazo de RetrievalQA
Sección 24
Agentes
Presentación
Agentes versus Chains
Herramientas (Tools)
Construcción y ejecución de agentes
Resumen de agentes
Sección 25
Agentes - Codificación
El prompt ReAct para agentes
Herramientas preconfiguradas: Wikipedia
Agente de búsqueda con Tavily
Herramientas personalizadas
Algebra con agentes
Resumen de agentes
Sección 26
Recopilación
Chatbot sin usar RAG
Chatbot con RAG – Sin particionador
Chatbot con RAG – Con particionador
Chatbot con Chain
Sección 27
Extras
Instrucciones para descargar los scripts y otro material del curso.
Este curso le introducirá en el mundo de la Inteligencia Artificial y del Aprendizaje Automatizado (Machine Learning). Al tiempo que construye un chatbot que supera a ChatGPT en dominios específicos, aprenderá conceptos esenciales sobre el procesamiento del lenguaje natural (NLP) y sobre modelos de lenguaje de gran escala (LLM).
El aprendizaje se basa en la práctica. Paso a paso resolverá cómo cargar información externa, cómo procesarla para que un LLM la asimile, y cómo lograr que ese LLM genere una respuesta coherente a una consulta. El proceso implica desarrollar un sistema RAG (Retrieval Augmented Generation). Al finalizar el curso habrá construído no uno sino varios chatbots de variada complejidad y con diferentes fines, y habrá adquirido la habilidad para adaptar los ejemplos a requerimientos específicos.
El nivel del curso es exigente. Deben tener conocimientos básicos de Python, al menos hasta el nivel de estructuras de control de flujo, funciones e importación de módulos, y estar dispuestos a repasar determinados temas y procedimientos en Python.
En cambio, no es necesario que tengan experiencia previa con LangChain o con Groq.
A lo largo del curso se introducen numerosos recursos, tanto de Python como de LangChain. Los programas y APIs usados en el curso son gratuitos.
Le invitamos a acompañarnos en este aprendizaje.