Ejercicios Prácticos
Ejercicios progresivos para dominar el desarrollo de agentes de IA. Cada nivel construye sobre el anterior, desde conceptos básicos hasta sistemas complejos multi-agente.
🟢 Nivel 1: Fundamentos (Principiante)
Ejercicios básicos para entender los conceptos core de agentes y Tool Use.
Ejercicio 1.1: Tu Primera Tool
🎯 Objetivo: Crear una tool simple que el agente pueda usar para responder preguntas básicas sobre el clima.
📋 Requisitos:
- Haber completado el setup del entorno
- Entender el patrón Tool Use básico
- Conocimientos de TypeScript básicos
🔧 Tarea: Implementa un agente que pueda responder preguntas como:
- "¿Qué temperatura hace hoy?"
- "¿Va a llover mañana?"
- "¿Hace frío en Madrid?"
🛠️ Especificaciones:
- Crea una tool llamada
get_weatherque tome como parámetrolocation(string) - La tool debe devolver datos simulados de clima (temperatura, condiciones, humedad)
- El agente debe usar la tool automáticamente cuando se le pregunte sobre el clima
- Maneja al menos 5 ciudades diferentes
✨ Pistas:
- Usa datos hardcodeados para simular una API del clima
- Define la tool con un JSON Schema simple
- El agente debe detectar automáticamente cuándo usar la tool
✅ Checklist de Validación:
- El agente responde correctamente a preguntas de clima sin tool
- El agente usa la tool cuando se le pregunta sobre el clima
- La tool maneja al menos 3 ciudades diferentes
- Los datos de respuesta incluyen temperatura y condiciones
- No hay errores de sintaxis o ejecución
Ejercicio 1.2: Agente Matemático
🎯 Objetivo: Construir un agente que pueda resolver operaciones matemáticas básicas usando tools.
📋 Requisitos:
- Tool Use funcionando
- Manejo básico de parámetros
- TypeScript con validación de tipos
🔧 Tarea: Crea un agente calculadora que pueda:
- Sumar dos números
- Restar dos números
- Multiplicar dos números
- Dividir dos números (con manejo de división por cero)
🛠️ Especificaciones:
- Implementa 4 tools separadas:
add,subtract,multiply,divide - Cada tool toma dos parámetros numéricos:
ayb - La tool
dividedebe devolver error sibes 0 - El agente debe elegir automáticamente qué tool usar basado en la pregunta del usuario
✨ Pistas:
- Usa Zod para validar que los parámetros sean números
- Define cada operación como una tool independiente
- El prompt del agente debe incluir instrucciones claras sobre cuándo usar cada tool
✅ Checklist de Validación:
- El agente identifica correctamente qué operación realizar
- Todas las operaciones matemáticas funcionan correctamente
- La división por cero está manejada con un mensaje de error claro
- Los parámetros se validan correctamente antes de ejecutar
- El agente explica el resultado de forma natural
Ejercicio 1.3: Agente de Lista de Tareas (Simple)
🎯 Objetivo: Extender el agente de tareas básico con operaciones CRUD completas.
📋 Requisitos:
- Conocimiento del Agente de Tareas
- Manejo de arrays y objetos en TypeScript
- Persistencia básica de datos
🔧 Tarea: Mejora el agente de tareas para que pueda:
- Crear nuevas tareas
- Listar todas las tareas
- Marcar tareas como completadas
- Eliminar tareas completadas
🛠️ Especificaciones:
- Usa un archivo JSON para persistir las tareas
- Implementa 4 tools:
create_task,list_tasks,complete_task,delete_completed - Cada tarea tiene: id (único), título, descripción, estado (pending/completed), fecha de creación
- El agente debe mantener el estado entre conversaciones
✨ Pistas:
- Usa
fs/promisespara leer/escribir el archivo JSON - Genera IDs únicos con
crypto.randomUUID()ouuid - Mantén el estado consistente entre llamadas
✅ Checklist de Validación:
- Se pueden crear tareas con título y descripción
- Listar tareas muestra todas las tareas con su estado
- Completar tareas cambia su estado correctamente
- Eliminar tareas completadas las remueve del archivo
- Los datos persisten entre reinicios del programa
🟡 Nivel 2: Intermedio (Medio)
Ejercicios que introducen conceptos avanzados como memoria y razonamiento multi-paso.
Ejercicio 2.1: Agente con Memoria Conversacional
🎯 Objetivo: Implementar un agente que recuerde el contexto de conversaciones anteriores.
📋 Requisitos:
- Nivel 1 completado
- Entendimiento de arrays y objetos
- Manejo de estado en aplicaciones
🔧 Tarea: Crea un agente que pueda recordar información personal del usuario:
- Recordar el nombre del usuario
- Recordar preferencias (ej: comida favorita, color preferido)
- Recordar hechos importantes mencionados anteriormente
- Corregir información cuando el usuario la actualiza
🛠️ Especificaciones:
- Implementa tools para:
remember_fact,recall_fact,update_fact,forget_fact - Usa un sistema de memoria basado en clave-valor
- El agente debe usar la memoria para personalizar respuestas
- Persiste la memoria entre sesiones
✨ Pistas:
- Usa un Map o objeto simple para almacenar los hechos
- Las claves pueden ser: "user_name", "favorite_food", "last_topic", etc.
- Incluye timestamps para saber cuándo se recordó cada hecho
✅ Checklist de Validación:
- El agente recuerda el nombre del usuario en conversaciones posteriores
- Puede recordar múltiples hechos sobre el usuario
- Actualiza información cuando se le corrige
- Olvida información cuando se le pide
- Usa la información recordada para personalizar respuestas
Ejercicio 2.2: Agente de Investigación Web (Simulado)
🎯 Objetivo: Construir un agente que pueda "investigar" temas usando tools simuladas de búsqueda web.
📋 Requisitos:
- Tool chaining básico
- Razonamiento secuencial
- Manejo de arrays de resultados
🔧 Tarea: Implementa un agente investigador que pueda:
- Buscar información sobre un tema
- Encontrar fuentes relacionadas
- Resumir la información encontrada
- Presentar conclusiones
🛠️ Especificaciones:
- Crea tools:
search_topic,find_related_sources,summarize_info search_topicdevuelve resultados simulados de búsqueda- El agente debe encadenar tools automáticamente para investigar un tema completo
- Implementa al menos 5 temas con datos simulados
✨ Pistas:
- Crea una base de datos simulada con información sobre varios temas
- La tool
search_topicfiltra esta base de datos find_related_sourcespuede devolver URLs o referencias simuladassummarize_infocombina múltiples resultados
✅ Checklist de Validación:
- El agente puede investigar un tema desde cero
- Usa múltiples tools en secuencia automáticamente
- Combina información de diferentes fuentes
- Proporciona resúmenes coherentes
- Maneja temas no encontrados con mensajes apropiados
Ejercicio 2.3: Agente de Compras con Carrito
🎯 Objetivo: Crear un agente que maneje un carrito de compras inteligente con recomendaciones.
📋 Requisitos:
- Manejo complejo de estado
- Lógica condicional en tools
- Validación de business rules
🔧 Tarea: Construye un agente de e-commerce que pueda:
- Mostrar catálogo de productos
- Agregar productos al carrito
- Calcular totales con descuentos
- Recomendar productos relacionados
- Procesar checkout simple
🛠️ Especificaciones:
- Implementa tools:
browse_catalog,add_to_cart,view_cart,apply_discount,checkout - Mantén estado del carrito entre interacciones
- Implementa lógica de descuentos (ej: 10% descuento en compras > $50)
- Recomienda productos basándose en el historial del carrito
✨ Pistas:
- Define un catálogo de productos con precios, categorías, etc.
- El carrito es un array de items con cantidades
- Los descuentos pueden aplicarse automáticamente basados en reglas
- Las recomendaciones pueden ser productos de la misma categoría
✅ Checklist de Validación:
- El catálogo muestra productos organizados por categorías
- Se pueden agregar múltiples productos al carrito
- Los totales se calculan correctamente con descuentos
- Las recomendaciones son relevantes al contenido del carrito
- El checkout valida que haya items en el carrito
🟠 Nivel 3: Avanzado (Experto)
Ejercicios que requieren patrones complejos y pensamiento sistémico.
Ejercicio 3.1: Plan-Execute-Synthesize Pattern
🎯 Objetivo: Implementar el patrón avanzado Plan-Execute-Synthesize para resolver problemas complejos.
📋 Requisitos:
- Nivel 2 completado
- Entendimiento de planificación
- Manejo de tareas paralelas
🔧 Tarea: Crea un agente que planifique y ejecute proyectos de desarrollo de software:
- Analizar requisitos
- Crear plan de tareas
- Ejecutar tareas en paralelo cuando sea posible
- Sintetizar resultados en una entrega final
🛠️ Especificaciones:
- Implementa el patrón PES: Plan → Execute → Synthesize
- Tools:
analyze_requirements,create_plan,execute_task,synthesize_results - Maneja dependencias entre tareas
- Ejecuta hasta 3 tareas en paralelo
✨ Pistas:
- El plan es un array de tareas con dependencias
execute_taskpuede simular ejecución con delays aleatorios- La síntesis combina resultados de todas las tareas completadas
- Incluye manejo de fallos en tareas individuales
✅ Checklist de Validación:
- El agente crea planes realistas para proyectos complejos
- Respeta dependencias entre tareas
- Puede ejecutar tareas en paralelo
- Sintetiza resultados de múltiples tareas
- Maneja fallos gracefully
Ejercicio 3.2: Sistema Multi-Agente
🎯 Objetivo: Construir un sistema donde múltiples agentes especializados colaboren para resolver problemas.
📋 Requisitos:
- Arquitectura de agentes compleja
- Comunicación inter-agente
- Coordinación de tareas
🔧 Tarea: Implementa un equipo de agentes para desarrollo de software:
- Product Manager Agent: Define requisitos y prioridades
- Developer Agent: Implementa features
- QA Agent: Revisa y testa código
- Coordinator Agent: Orquesta el trabajo del equipo
🛠️ Especificaciones:
- Cada agente tiene herramientas especializadas
- Los agentes pueden delegar tareas entre ellos
- Implementa un sistema de mensajes para comunicación
- El coordinator maneja el flujo de trabajo completo
✨ Pistas:
- Usa un bus de mensajes simple para comunicación inter-agente
- Cada agente tiene un rol y contexto específicos
- El coordinator conoce las capacidades de cada agente
- Implementa timeouts y reintentos para comunicación
✅ Checklist de Validación:
- Cada agente tiene herramientas especializadas funcionando
- Los agentes pueden comunicarse entre ellos
- El coordinator delega tareas apropiadamente
- El sistema completo puede resolver problemas complejos
- Maneja fallos en agentes individuales
Ejercicio 3.3: Agente con Auto-Mejora
🎯 Objetivo: Crear un agente que aprende de sus errores y mejora su rendimiento con el tiempo.
📋 Requisitos:
- Logging avanzado
- Análisis de patrones
- Sistema de feedback
🔧 Tarea: Construye un agente que:
- Registra todas sus acciones y resultados
- Analiza sus errores comunes
- Adapta su comportamiento basado en el historial
- Mejora automáticamente sus prompts y estrategias
🛠️ Especificaciones:
- Implementa logging detallado de todas las interacciones
- Crea tools para
analyze_performance,identify_patterns,optimize_strategy - El agente mantiene métricas de éxito/error
- Puede ajustar sus prompts basado en análisis de fallos
✨ Pistas:
- Registra cada tool call con resultado y tiempo de ejecución
- Analiza patrones en los errores más comunes
- Implementa un sistema de "lecciones aprendidas"
- Los ajustes pueden ser cambios en prompts o lógica de decisión
✅ Checklist de Validación:
- El agente registra todas sus acciones detalladamente
- Puede identificar patrones en sus errores
- Adapta su comportamiento basado en análisis
- Muestra mejora en rendimiento con el tiempo
- Maneja casos edge mejor después de aprender
🏆 Consejos Generales para Todos los Niveles
Mejores Prácticas
- Empieza Simple: Implementa la funcionalidad core antes de optimizaciones
- Testea Incrementalmente: Verifica cada tool individualmente antes de integrar
- Logging Es Tu Amigo: Añade logs detallados para debugging
- Maneja Errores Gracefully: Tu agente debe ser robusto ante inputs inesperados
- Itera y Mejora: Los primeros intentos fallarán - aprende de ellos
Debugging Común
- El agente no usa tools: Verifica que las tool definitions estén correctas
- Parámetros inválidos: Asegúrate de que el schema JSON coincida con lo que espera el LLM
- Loops infinitos: Implementa límites de iteraciones y timeouts
- Estado inconsistente: Usa validación estricta al leer/escribir estado
Recursos Adicionales
- Setup del Entorno - Para preparar tu entorno
- Agente de Tareas - Base para ejercicios de tareas
- Agente Investigador - Patrones avanzados
- MCP Servers - Para ejercicios de MCP
¿Has completado algún ejercicio? ¡Comparte tu experiencia en los issues del repositorio! 🚀