Skip to content

OpenWebinarsNet/genai-agentes

 
 

Repository files navigation

Curso de agentes de IA generativa

Python LangChain LangGraph FastAPI OpenAI PostgreSQL Docker uv License

Curso de desarrollo de Agentes de IA Generativa para developers.

Creación de agentes con tools, short-term memory, long-term memory, RAG, Middlewares.

Autor: Alan Sastre

Contenido


Descripcion general

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:

  1. Fundamentos teóricos: qué es un agente, el paradigma ReAct, diferencias entre LLM y agente, y el concepto de Agent Engineering.
  2. Creación de agentes: configuración del entorno, uso de create_agent, herramientas (tools) y salidas estructuradas.
  3. Contexto y memoria: memoria a corto y largo plazo, middleware, RAG con bases de datos vectoriales, MCP y subagentes.
  4. 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.


Requisitos previos

  • 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)

Instalacion

1. Instalar uv

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Linux / macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh

2. Clonar el repositorio e instalar Python

git clone https://github.com/tu-usuario/genai-agents.git
cd genai-agents

uv python install 3.13.5

3. Crear entorno virtual e instalar dependencias

uv venv --python 3.13.5

Windows:

.venv\Scripts\activate

Linux / macOS:

source .venv/bin/activate
uv add -r requirements.txt

4. Configurar variables de entorno

Copia el archivo de ejemplo y configura tus claves de API:

cp .env.example .env

Edita .env con tus credenciales:

OPENAI_API_KEY=sk-...
TAVILY_API_KEY=tvly-...

Estructura del repositorio

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

Modulos del curso

01 - Landscape

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

02 - Crear un agente

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?"}]
})

03 - Contexto y memoria

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

04 - Proyecto completo

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 Tavily
  • crear_ticket: creación de tickets de soporte
  • guardar_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/docs

Consulta el README del proyecto para una guía detallada de verificación paso a paso.


Tecnologias utilizadas

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)

Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del repositorio
  2. Crea una rama para tu funcionalidad (git checkout -b feature/nueva-funcionalidad)
  3. Realiza tus cambios y haz commit (git commit -m "Añade nueva funcionalidad")
  4. Sube la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Licencia

MIT.

About

Curso de desarrollo de Agentes de IA Generativa para developers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 89.1%
  • Python 10.9%