Curso práctico para desarrolladores sobre integración de modelos de lenguaje (LLMs) en aplicaciones Python utilizando LangChain como framework de orquestación.
El curso cubre desde los fundamentos del ecosistema de IA generativa hasta la implementación de un chatbot con RAG (Retrieval-Augmented Generation).
Autor: Alan Sastre
El curso está organizado en cuatro módulos progresivos, cada uno con notebooks interactivos y ejemplos ejecutables.
Introducción al ecosistema actual de herramientas para integrar modelos de lenguaje en aplicaciones backend.
| Notebook | Descripción |
|---|---|
01-landscape.ipynb |
Visión general de SDKs de modelos y agentes, niveles de abstracción (HTTP directo, SDKs oficiales, frameworks unificados), comparativa de proveedores |
02-langchain-ecosystem.ipynb |
Arquitectura del ecosistema LangChain: paquetes principales, integraciones por proveedor, LangSmith para observabilidad |
Uso práctico de ChatModels con múltiples proveedores mediante una interfaz unificada.
| Notebook | Descripción |
|---|---|
01-setup.ipynb |
Configuración del entorno con uv, gestión de dependencias, variables de entorno para credenciales |
02-chatmodels.ipynb |
Inicialización de modelos, invocación, formato de mensajes, parámetros de configuración, fallbacks entre modelos |
02-images.ipynb |
Trabajo con imágenes y modelos multimodales |
02-openai-img.ipynb |
Generación de imágenes con la API de OpenAI |
03-lcel.ipynb |
LangChain Expression Language: composición de prompts y modelos con el operador pipe, ChatPromptTemplate, historial de conversación |
04-runnable.ipynb |
Interfaz Runnable: métodos invoke(), stream() y batch() para ejecución síncrona, streaming y procesamiento por lotes |
05-structured-outputs.ipynb |
Salidas estructuradas con JSON y Pydantic usando with_structured_output() |
05.tool-custom.ipynb |
Creación de herramientas personalizadas |
06.1-tools.ipynb |
Definición y uso de herramientas (tools) con el decorador @tool |
06.2-tool-loop.ipynb |
Implementación manual del bucle de llamadas a herramientas |
06.3-mcp.ipynb |
Model Context Protocol (MCP) para integración de herramientas |
07.1-openai-tool-web-search.ipynb |
Búsqueda web con herramientas de OpenAI |
07.2-openai-langchain-web-search.ipynb |
Integración de búsqueda web en LangChain |
Implementación de Retrieval-Augmented Generation para fundamentar respuestas en documentos externos.
| Notebook | Descripción |
|---|---|
01-introduccion.ipynb |
Fundamentos de RAG: limitaciones de LLMs, arquitectura de recuperación y generación |
02-load-split-documents.ipynb |
Carga de documentos (PDF, Markdown, web) y división en chunks con TextSplitters |
03-embed-store-documents.ipynb |
Generación de embeddings y almacenamiento en bases de datos vectoriales |
04-retrieval.ipynb |
Estrategias de recuperación: VectorStoreRetriever, filtros, reranking |
05.openai-retrieval.ipynb |
Implementación de RAG con la API de OpenAI |
Incluye una carpeta documentos/ con archivos de ejemplo (PDF, Markdown) para practicar la indexación.
Aplicación completa que integra todos los conceptos del curso en una API REST funcional.
| Componente | Descripción |
|---|---|
src/main.py |
Servidor FastAPI con endpoints para indexación y chat |
src/rag.py |
Lógica de RAG: carga de documentos, embeddings, retrieval |
src/chat.py |
Gestión de conversaciones y generación de respuestas |
src/config.py |
Configuración centralizada del proyecto |
docs/ |
Documentos de ejemplo para indexar (catálogo, manuales, políticas) |
Tecnologías utilizadas:
- FastAPI: API REST moderna con documentación automática
- Ollama: Modelos locales (gemma3:1b, embeddinggemma:300m)
- ChromaDB: Base de datos vectorial (via Docker)
- LangChain: Orquestación de LLM y RAG
- Python 3.13+ instalado en el sistema
- uv como gestor de paquetes (recomendado) o pip
- Ollama instalado y en ejecución para modelos locales
- Docker (opcional, para ChromaDB en el proyecto final)
- Claves de API de los proveedores que se deseen usar (OpenAI, Anthropic, Google)
git clone https://github.com/alansastre/genai-sdks.git
cd genai-sdksuv venv --python 3.13.5Activar el entorno:
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activateuv syncO alternativamente con pip:
pip install -r requirements.txtCopia el archivo de ejemplo y añade tus claves de API:
cp .env.example .envEdita .env con tus credenciales:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
LANGSMITH_API_KEY=lsv2_...
LANGSMITH_TRACING=trueSi vas a usar modelos locales:
ollama pull gemma3:1b
ollama pull embeddinggemma:300mLos notebooks están diseñados para ejecutarse en orden dentro de cada módulo. Puedes usar Jupyter, JupyterLab o cualquier IDE compatible (VS Code, Cursor).
jupyter labDesde la carpeta 04-proyecto:
# Arrancar ChromaDB
docker-compose up -d
# Iniciar el servidor
fastapi dev src/main.pyLa documentación de la API estará disponible en http://127.0.0.1:8000/docs
genai-api-sdks/
├── 01-landscape/ # Módulo 1: panorama de SDKs
│ ├── 01-landscape.ipynb
│ └── 02-langchain-ecosystem.ipynb
├── 02-langchain-models/ # Módulo 2: modelos de chat
│ ├── 01-setup.ipynb
│ ├── 02-chatmodels.ipynb
│ ├── 03-lcel.ipynb
│ ├── 04-runnable.ipynb
│ ├── 05-structured-outputs.ipynb
│ ├── 06.1-tools.ipynb
│ ├── 06.2-tool-loop.ipynb
│ └── ...
├── 03-langchain-rag/ # Módulo 3: RAG
│ ├── 01-introduccion.ipynb
│ ├── 02-load-split-documents.ipynb
│ ├── 03-embed-store-documents.ipynb
│ ├── 04-retrieval.ipynb
│ ├── documentos/ # Archivos de ejemplo
│ └── docker-compose.yml
├── 04-proyecto/ # Módulo 4: proyecto práctico
│ ├── src/
│ │ ├── main.py
│ │ ├── rag.py
│ │ ├── chat.py
│ │ └── config.py
│ ├── docs/ # Documentos para indexar
│ └── docker-compose.yml
├── .env.example # Plantilla de variables de entorno
├── pyproject.toml # Configuración del proyecto
├── requirements.txt # Dependencias
└── README.md
El curso incluye ejemplos con los principales proveedores de modelos de lenguaje:
| Proveedor | Paquete | Modelos de ejemplo | Requisitos |
|---|---|---|---|
| OpenAI | langchain-openai |
gpt-4o, gpt-4o-mini | OPENAI_API_KEY |
| Anthropic | langchain-anthropic |
claude-sonnet-4, claude-haiku | ANTHROPIC_API_KEY |
langchain-google-genai |
gemini-2.0-flash, gemini-pro | GOOGLE_API_KEY |
|
| Ollama | langchain-ollama |
gemma3:1b, llama3, mistral | Ollama en ejecución |
langchain>=1.2.10
langchain-openai>=1.1.9
langchain-anthropic>=1.3.3
langchain-google-genai>=4.2.0
langchain-ollama>=1.0.1
langchain-chroma>=1.1.0
langsmith>=0.7.3
fastapi[standard]>=0.129.0
python-dotenv>=1.2.1
MIT.