Lección 2 de 8 · 10 min de lectura
Arquitectura agéntica: diseña agentes y sistemas multiagente
Domina los patrones de diseño de agentes (orquestador-trabajadores, encadenado, enrutado) y aprende cuándo usar agentes frente a flujos deterministas. Diseña sistemas multiagente confiables orientados a producción.
Arquitectura agéntica: diseña agentes y sistemas multiagente
En la lección anterior vimos cómo es el examen CCAR-F: basado en escenarios de producción donde tú decides cómo resolver problemas reales. Ahora toca aprender una de las decisiones arquitectónicas más críticas: cuándo y cómo construir sistemas agénticos.
Un agente es muy diferente de un chatbot. Un agente percibe el contexto, toma decisiones autónomas, ejecuta herramientas y ajusta su estrategia según los resultados. Cuando escalas eso a múltiples agentes coordinados, la complejidad sube exponencialmente. En el examen te presentarán escenarios donde tienes que elegir el patrón correcto, identificar riesgos de confiabilidad y justificar por qué un agente es mejor (o peor) que un flujo determinista.
Esta lección te prepara para esas decisiones.
¿Agente o flujo determinista?
Lo primero que debes saber es que no todo requiere un agente. Es tentador, pero es un error costoso.
Usa un flujo determinista cuando:
- El flujo de decisiones es predecible y finito (por ejemplo: validar formulario → guardar en BD → enviar email)
- Los pasos siempre ocurren en el mismo orden
- Los errores son excepcionales y manejables con reintentos simples
- La latencia debe ser baja y predecible
- El costo de inferencia importa mucho
Ejemplo: un sistema de facturación donde recibes una orden → validas → generas PDF → registras en contabilidad. Cada paso es determinista, el modelo LLM solo interviene en generar el PDF.
Usa un agente cuando:
- El resultado deseado es claro, pero el camino no está definido a priori
- El agente debe decidir qué herramientas usar y en qué orden
- Hay múltiples estrategias válidas según el contexto
- El agente debe "razonar" y adaptar su enfoque si algo falla
Ejemplo: un asistente de customer support que recibe un ticket complejo. El agente debe decidir si necesita buscar en la base de conocimientos, consultar historial del cliente, escalar a un humano, o generar una respuesta directa. Cada caso es distinto.
La pregunta clave del examen: "¿El sistema necesita autonomía y adaptabilidad, o es suficiente con una secuencia de pasos predefinida?" Si la respuesta es sí, agente. Si es no, evítalo.
Patrones de diseño agéntico
Hay tres patrones principales que dominarás en el examen:
Patrón orquestador-trabajadores (supervisor)
Un agente central (orquestador) recibe la solicitud y delega tareas a agentes especializados (trabajadores). El orquestador coordina, integra resultados y toma decisiones de alto nivel.
Cuándo usarlo:
- Tareas complejas que se dividen naturalmente en subtareas independientes
- Cada subtarea requiere experiencia diferente (un agente para análisis de datos, otro para redacción, otro para validación legal)
- La latencia total es crítica: los trabajadores pueden ejecutarse en paralelo
Riesgo: Si el orquestador no está bien diseñado, puede convertirse en un cuello de botella o fallar a la hora de sincronizar resultados contradictorios.
Patrón encadenado (agentic loop secuencial)
Un único agente ejecuta un ciclo: observa estado → decide acción → ejecuta herramienta → observa resultado → decide siguiente acción. Continúa hasta alcanzar el objetivo o agotar intentos.
Cuándo usarlo:
- Tareas donde cada paso informa al siguiente (investigación, debugging, navegación web)
- No hay paralelización posible o no es necesaria
- El agente debe "aprender" iterativamente sobre el problema
Ejemplo real: Un agente que investiga un incidente de seguridad. Lee logs → identifica patrón sospechoso → consulta sistemas relacionados → correlaciona datos → genera reporte.
Riesgo: Loop infinito si el agente entra en ciclos repetitivos, o drift (el agente se va del objetivo original). Siempre define criterios de parada.
Patrón enrutado (routing)
Un agente o función determinista examina la entrada y enruta hacia el agente más apropiado. Es un dispatcher inteligente.
Cuándo usarlo:
- Múltiples dominios o flujos que requieren lógica agéntica pero diferente
- Algunos casos son tan simples que no necesitan agente (caen en un flujo rápido)
- Quieres controlar costos: solo los casos que lo necesitan usan agentes costosos
Ejemplo: En un sistema de soporte:
- Si es pregunta sobre facturación → enruta a agente billing
- Si es incidente de seguridad → enruta a agente security
- Si es FAQ común → responde con búsqueda simple (no agente)
Riesgo: El enrutador puede misclasificar, enviando tickets al agente equivocado. Mitiga con un mecanismo de "escala" o re-enrutamiento.
Sistemas multiagente: coordinación y confiabilidad
Cuando tienes más de un agente, la arquitectura debe garantizar:
Comunicación explícita
Los agentes no deben compartir estado implícitamente. Define claramente:
- Qué información pasa de un agente a otro (contexto compartido)
- Qué formato tiene esa información
- Quién es responsable de validarla
En el examen, buscarán si reconoces problemas como "dos agentes leyeron datos stale en paralelo y tomaron decisiones conflictivas".
Aislamiento y tolerancia a fallos
Si un agente falla, el sistema debe:
- No afectar a otros agentes (aislamiento)
- Tener una estrategia clara: reintentar, escalar, o descartar el resultado
- Registrar qué pasó para auditoría
Patrón recomendado: Cada agente tiene un timeout, un número máximo de intentos, y un manejador de errores que decide si reintentar o fallar explícitamente.
Consistencia de decisiones
En algunos dominios, dos agentes no pueden tomar decisiones contradictorias sobre el mismo recurso. Por ejemplo, en e-commerce, el agente de inventario y el de pagos deben estar sincronizados.
Soluciones:
- Usar una BD transaccional centralizada (costoso en latencia)
- Implementar un agente "árbitro" que valida y resuelve conflictos
- Diseñar idempotencia: si un agente repite su acción, el resultado es el mismo
Observabilidad y trazabilidad
En producción, necesitas saber:
- Qué razonamiento hizo cada agente
- Qué herramientas llamó y con qué parámetros
- Por qué tomó esa decisión
Isto es crítico para debugging y cumplimiento normativo. Usa logging estructurado en cada paso del agentic loop.
Diseño para la fiabilidad agéntica
Aquí están los principios que el examen espera que domines:
1. Criterios de parada explícitos
Todo agente debe saber cuándo parar:
- ¿Alcanzó el objetivo? → Éxito
- ¿Agotó intentos? → Fallo
- ¿Timeout? → Fallo con estado parcial
- ¿Detección de loop? → Fallo
2. Validación en cada frontera
Cuando un agente pasa información a otro o a un sistema externo, valida:
- Tipo y formato correcto
- Valores en rango esperado
- Permisos: ¿tiene autoridad para hacer eso?
3. Herramientas con garantías
Cada herramienta que un agente puede usar debe:
- Ser atómica o tener rollback
- Devolver resultados en formato estricto
- Ser idempotente (si es posible)
- Tener límites claros (máximo N registros, máximo costo)
4. Priorización y backpressure
Si los agentes generan trabajo más rápido de lo que pueden ejecutarlo, el sistema debe:
- Encolar solicitudes
- Priorizar según importancia
- Rechazar explícitamente si la cola crece demasiado
5. Fallback a humano
Hay situaciones donde el agente debe admitir "no puedo resolver esto solo". Define:
- Cuándo escalar a humano
- Qué contexto pasar
- Cómo el humano puede regresar la decisión
Para el examen
En los escenarios del CCAR-F, espera preguntas como:
-
Análisis de patrón: "Te describen un caso de uso. ¿Qué patrón agéntico usarías y por qué?" Debes justificar en función de los criterios: ¿es parallelizable? ¿iterativo? ¿hay enrutamiento?
-
Identificación de riesgos: "Esto es un sistema multiagente. ¿Qué puede fallar?" Buscan que identifiques race conditions, inconsistencia de estado, loops infinitos, fallos de escalabilidad.
-
Mejoras de confiabilidad: "El sistema actual falla a veces. Propón 2-3 cambios arquitectónicos." Aquí brillan el timeout, la validación, los criterios de parada.
-
Costo vs complejidad: "¿Vale la pena usar un agente aquí?" Reconocer cuándo un flujo determinista es mejor te diferencia de los candidatos que ven agentes como la solución a todo.
Lo clave: Domina la matriz de decisión:
- Flujo predecible y lineal → determinista
- Múltiples caminos, decisión adaptativa → agente
- Varios dominios especializados → orquestador-trabajadores
- Un problema que evoluciona iterativamente → encadenado
- Entrada que se clasifica hacia distintos flujos → enrutado
Para recordar
-
No uses agentes por defecto. Un flujo determinista bien diseñado es más eficiente, más predecible y más barato. Los agentes son para cuando la adaptabilidad es crítica.
-
Elige el patrón según la estructura del problema. Orquestador-trabajadores para paralelismo, encadenado para iteración, enrutado para clasificación. El examen premia el pensamiento estructurado.
-
Fiabilidad multiagente = comunicación explícita + validación + aislamiento + observabilidad. Sin esto, un sistema multiagente es un riesgo de producción.
-
Define límites y criterios de parada desde el inicio. Timeout, máximo de intentos, condiciones de éxito/fallo, escalada a humano. Son las guardarraíles que evitan sorpresas en producción.
Ponte a prueba
Tipo test
6 preguntas sobre esta lección. Responde una a una; verás las soluciones al terminar.