Curso de desarrollo de Agentes de IA Generativa para developers.
Creación de agentes con tools, short-term memory, long-term memory, RAG, Middlewares.
- Curso de agentes de IA generativa
Este curso proporciona una guía completa para construir agentes de IA generativa, abordando tanto la teoría como la práctica. El contenido está estructurado de forma progresiva:
- Fundamentos teóricos: qué es un agente, el paradigma ReAct, diferencias entre LLM y agente, y el concepto de Agent Engineering.
- Creación de agentes: configuración del entorno, uso de
create_agent, herramientas (tools) y salidas estructuradas. - Contexto y memoria: memoria a corto y largo plazo, middleware, RAG con bases de datos vectoriales, MCP y subagentes.
- Proyecto de producción: API REST completa con FastAPI que implementa un asistente de soporte con supervisor, subagentes especializados, RAG y persistencia en PostgreSQL.
El curso utiliza LangChain 1.x como framework principal debido a su madurez, flexibilidad y la API simplificada create_agent introducida en la versión 1.0.
- Python 3.13.5 o superior
- uv como gestor de paquetes y entornos virtuales
- Docker y Docker Compose para bases de datos
- Ollama (opcional) para modelos locales
- Cuenta de OpenAI con API key
- Cuenta de Tavily con API key (plan gratuito disponible)
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Linux / macOS:
curl -LsSf https://astral.sh/uv/install.sh | shgit clone https://github.com/tu-usuario/genai-agents.git
cd genai-agents
uv python install 3.13.5uv venv --python 3.13.5Windows:
.venv\Scripts\activateLinux / macOS:
source .venv/bin/activateuv add -r requirements.txtCopia el archivo de ejemplo y configura tus claves de API:
cp .env.example .envEdita .env con tus credenciales:
OPENAI_API_KEY=sk-...
TAVILY_API_KEY=tvly-...genai-agents/
├── 01-landscape/ # Fundamentos teóricos
│ ├── 01-fundamentos.ipynb
│ └── 02-agent-sdks.ipynb
├── 02-create-agent/ # Creación de agentes
│ ├── 01-setup.ipynb
│ ├── 02-create-agent.ipynb
│ ├── 03-tools.ipynb
│ └── 04-agent-structured-outputs.ipynb
├── 03-context/ # Memoria y contexto
│ ├── 01-short_term_memory.ipynb
│ ├── 02-long_term_memory.ipynb
│ ├── 03-middleware-builtin.ipynb
│ ├── 04-middleware-custom.ipynb
│ ├── 05-rag.ipynb
│ ├── 06-mcp.ipynb
│ ├── 07-subagents.ipynb
│ └── docker-compose-*.yml
├── 04-proyecto/ # Proyecto completo
│ ├── app/
│ │ ├── agents/ # Supervisor, subagentes, tools, RAG
│ │ ├── api/ # Endpoints REST
│ │ ├── core/ # Configuración
│ │ ├── schemas/ # Modelos Pydantic
│ │ └── services/ # Lógica de negocio
│ ├── docs/ # Documentación ficticia para RAG
│ ├── docker-compose.yml
│ └── README.md
├── .env.example
├── .gitignore
├── pyproject.toml
├── requirements.txt
└── README.md
Introducción teórica al mundo de los agentes de IA.
| Notebook | Contenido |
|---|---|
01-fundamentos.ipynb |
Definición de agente, ciclo percepción-razonamiento-acción, origen histórico (Chain of Thought, ReAct, Toolformer), diferencias entre LLM y agente, componentes de un agente, Agent Engineering |
02-agent-sdks.ipynb |
Comparativa de SDKs: LangChain/LangGraph, OpenAI Agents SDK, Google ADK, Anthropic Claude Agent SDK, CrewAI |
Conceptos clave:
- El bucle de agente (agent loop)
- Paradigma ReAct (Reasoning + Acting)
- Herramientas, memoria y planificación
- Model Context Protocol (MCP)
- Observabilidad y trazabilidad
Configuración del entorno y primeros pasos con agentes.
| Notebook | Contenido |
|---|---|
01-setup.ipynb |
Instalación de uv, Python, LangChain, Ollama y Tavily |
02-create-agent.ipynb |
Uso de create_agent, parámetros, system prompt, gestión de mensajes |
03-tools.ipynb |
Definición de herramientas con decoradores, integración de Tavily Search |
04-agent-structured-outputs.ipynb |
Generación de respuestas con esquemas predefinidos |
Ejemplo básico:
from langchain.agents import create_agent
agent = create_agent("gpt-5-nano")
response = agent.invoke({
"messages": [{"role": "user", "content": "¿Cuánto es 1 + 1?"}]
})Gestión del estado y conocimiento del agente.
| Notebook | Contenido |
|---|---|
01-short_term_memory.ipynb |
Memoria de conversación con InMemorySaver, SqliteSaver y PostgresSaver |
02-long_term_memory.ipynb |
Perfil y preferencias persistentes con PostgresStore |
03-middleware-builtin.ipynb |
Middleware integrado de LangChain |
04-middleware-custom.ipynb |
Middleware personalizado para logging, validación y aprobación humana |
05-rag.ipynb |
Retrieval-Augmented Generation con PGVector y embeddings de OpenAI |
06-mcp.ipynb |
Model Context Protocol para interoperabilidad de herramientas |
07-subagents.ipynb |
Arquitecturas multiagente con supervisor y delegación |
Tipos de memoria:
- Corto plazo (checkpointer): historial de la conversación actual, persiste por
thread_id - Largo plazo (store): perfil y preferencias del usuario, persiste por
user_id
API REST de soporte al cliente que integra todos los conceptos del curso.
Arquitectura:
┌─────────────────────────────────────────────────────────────┐
│ FastAPI │
├─────────────────────────────────────────────────────────────┤
│ POST /conversations Crear conversación │
│ POST /conversations/{id}/messages Enviar mensaje │
│ GET/PUT /users/{id}/profile Perfil usuario │
│ GET /tickets Listar tickets │
│ POST /admin/index-docs Indexar RAG │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Supervisor │
│ (Agente principal que delega a subagentes) │
├──────────────────────┬──────────────────────────────────────┤
│ Subagente técnico │ Subagente comercial │
│ - RAG documentación│ - RAG políticas │
│ - Búsqueda web │ - Precios y garantías │
└──────────────────────┴──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ PostgreSQL (pgvector) │
├─────────────────────────────────────────────────────────────┤
│ Checkpointer: memoria a corto plazo (conversaciones) │
│ Store: memoria a largo plazo (perfiles) │
│ PGVector: embeddings para RAG │
└─────────────────────────────────────────────────────────────┘
Herramientas del agente:
buscar_en_documentacion: búsqueda semántica en la base de conocimiento (RAG)buscar_en_web: búsqueda en internet con Tavilycrear_ticket: creación de tickets de soporteguardar_preferencia: persistir preferencias del usuario
Ejecución:
cd 04-proyecto
# Levantar PostgreSQL con pgvector
docker-compose up -d
# Configurar variables de entorno
cp .env.example .env
# Editar .env con OPENAI_API_KEY y TAVILY_API_KEY
# Instalar dependencias e iniciar
uv sync
uv run fastapi dev app/main.py
# Abrir Swagger UI
# http://127.0.0.1:8000/docsConsulta el README del proyecto para una guía detallada de verificación paso a paso.
| Categoría | Tecnología | Versión | Descripción |
|---|---|---|---|
| Lenguaje | Python | 3.13.5 | Lenguaje principal |
| Gestor de paquetes | uv | - | Gestor moderno de entornos y dependencias |
| Framework de agentes | LangChain | 1.2.10 | Framework principal para agentes |
| Grafos de estado | LangGraph | 1.0.9 | Control de flujo y checkpointing |
| API REST | FastAPI | 0.133.1 | Framework web asíncrono |
| LLM | OpenAI GPT-5-nano | - | Modelo de lenguaje principal |
| Embeddings | text-embedding-3-small | - | Embeddings para RAG |
| Búsqueda web | Tavily | - | API de búsqueda optimizada para agentes |
| Base de datos | PostgreSQL + pgvector | - | Persistencia y búsqueda vectorial |
| Contenedores | Docker Compose | - | Orquestación de servicios |
| Modelos locales | Ollama | - | Ejecución local de modelos (opcional) |
| Observabilidad | LangSmith | - | Trazabilidad y evaluación (opcional) |
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad) - Realiza tus cambios y haz commit (
git commit -m "Añade nueva funcionalidad") - Sube la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
MIT.