Phase 14 - Lesson 12
Patrones de Flujo de Trabajo de Anthropic: Lo Simple sobre lo Complejo
Schluntz y Zhang (Anthropic, dic. 2024) distinguen los flujos de trabajo (rutas predefinidas) de los agentes (uso dinámico de herramientas). Cinco patrones de flujo de trabajo cubren la mayoría de los casos. Comience con llamadas directas a la API. Agregue agentes solo cuando los pasos no se puedan predecir.
Tipo: Aprender + Construir Lenguajes: Python (stdlib) Prerrequisitos: Phase 14 · 01 (Agent Loop) Tiempo: ~60 minutos
Objetivos de Aprendizaje
- Nombrar los cinco patrones de flujo de trabajo de Anthropic: encadenamiento de prompts, enrutamiento, paralelización, orquestador-trabajadores y evaluador-optimizador.
- Explicar la distinción entre agente y flujo de trabajo y el costo de ingeniería de cada uno.
- Identificar cuándo elegir un flujo de trabajo en lugar de un agente (y viceversa).
- Implementar los cinco patrones en stdlib contra un LLM programado.
El Problema
Los equipos recurren a frameworks multiagente para problemas que solo requieren una única llamada a una función. El costo es real: los frameworks agregan capas que oscurecen los prompts, ocultan el flujo de control y provocan una complejidad prematura. La publicación de Schluntz y Zhang de diciembre de 2024 es el rechazo de la industria más citado: comience de manera simple, agregue complejidad solo cuando justifique su costo.
El Concepto
Flujos de trabajo vs. agentes
- Flujo de trabajo. LLMs y herramientas orquestados a través de rutas de código predefinidas. Los ingenieros son dueños del grafo.
- Agente. Los LLMs dirigen dinámicamente sus propias herramientas y toman sus propios pasos. O modelo es dueño del grafo.
Ambos tienen su lugar. Los flujos de trabajo son más baratos, más rápidos y más fáciles de depurar. Los agentes permiten resolver problemas abiertos, pero hacen que sea más difícil razonar sobre los modos de falla.
El LLM aumentado
Fundación para los cinco patrones: un LLM con tres capacidades integradas: búsqueda (recuperación), herramientas (acciones) y memoria (persistencia). Cualquier llamada a la API puede usarlas.
Los cinco patrones
Encadenamiento de prompts. La salida de la llamada 1 es la entrada de la llamada 2. Úselo cuando una tarea tenga una descomposición lineal clara. Compuertas programáticas opcionales entre pasos.
Enrutamiento. Un LLM clasificador elige qué LLM o herramienta downstream invocar. Úselo cuando entradas categóricamente diferentes necesiten un manejo diferente (soporte de nivel 1 vs. reembolso vs. error vs. ventas).
Paralelización. Ejecute N llamadas de LLM de forma concurrente, agregue los resultados. Dos formas: seccionamiento (diferentes fragmentos) y votación (mismo prompt, N ejecuciones, mayoría/síntesis).
Orquestador-trabajadores. Un LLM orquestador decide dinámicamente qué trabajadores (también LLMs) ejecutar y sintetiza su salida. Similar a los loops de agentes, pero el orquestador no entra en un loop indefinidamente.
Evaluador-optimizador. Un LLM propone una respuesta, otro LLM la evalúa. Se itera hasta que el evaluador la apruebe. Esto es Self-Refine (Lección 05) generalizado.
Dónde los flujos de trabajo superan a los agentes
- Tareas predecibles. Si puede enumerar los pasos, debería hacerlo.
- Tareas con límite de costo. Los flujos de trabajo tienen recuentos de pasos limitados; los agentes pueden descontrolarse en espiral.
- Tareas sujetas a cumplimiento. Los auditores quieren leer el grafo, no inferirlo a partir de las trayectorias.
Dónde los agentes superan a los flujos de trabajo
- Investigación abierta. Cuando el siguiente paso depende de lo que devolvió el paso anterior.
- Tareas de duración variable. Minutos a horas de trabajo donde el recuento de pasos es desconocido.
- Nuevos dominios. Cuando aún no conoce el flujo de trabajo correcto: exploración primero, codificación después.
El compañero de ingeniería de contexto
"Effective context engineering for AI agents" (Anthropic 2025) formaliza la disciplina adyacente: la ventana de 200k es un presupuesto, no un contenedor. Qué incluir, cuándo compactar, cuándo dejar que el contexto crezca. Cubierto en detalle en la lección sobre compresión de contexto de la Phase 14 (lección anterior 06 de la Phase 14 en este plan de estudios antes de la renumeración).
Constrúyalo
code/main.py implementa los cinco patrones de flujo de trabajo contra un ScriptedLLM:
prompt_chain(input, steps)— secuencial.route(input, classifier, handlers)— clasificación + despacho.parallel_vote(prompt, n, aggregator)— N ejecuciones, agregación.orchestrator_workers(task, workers)— el orquestador elige a los trabajadores.evaluator_optimizer(task, proposer, evaluator, max_iter)— loop hasta que se apruebe.
Ejecútelo:
python3 code/main.py
Cada patrón imprime su traza. El total de líneas de código por patrón es de ~10-15; el costo de un framework se mide en miles.
Úselo
- Llamadas directas a la API para la mayoría de las tareas.
- Framework solo cuando el patrón realmente necesite un estado duradero (LangGraph), concurrencia de modelo de actor (AutoGen v0.4) o plantillas de roles (CrewAI).
- Utilice el Claude Agent SDK cuando desee la estructura del arnés de Claude Code sin tener que reconstruirla.
Entréguelo
outputs/skill-workflow-picker.md elige el patrón correcto para una descripción de tarea dada, incluyendo el fundamento de la decisión y la ruta de refactorización a un agente si los flujos de trabajo se quedan cortos.
Ejercicios
- Implemente el enrutamiento con un umbral de confianza. Por debajo del umbral -> escalar a un humano. ¿Dónde se ubica el umbral para un caso de uso de soporte de nivel 1?
- Agregue un tiempo de espera (timeout) a
parallel_vote. ¿Qué sucede cuando una llamada se cuelga? ¿Cómo realiza la agregación con votos faltantes? - Convierta
evaluator_optimizeren un bandit: conserve las 2 mejores salidas a lo largo de las iteraciones para que un resultado bueno y tardío no sea sobrescrito por uno malo posterior. - Combine el encadeamiento de prompts con el enrutamiento: un enrutador elige una de tres cadenas. Mida el costo de tokens en comparación con una alternativa de un único prompt grande.
- Elija una de sus características de producción. Dibuje el grafo del flujo de trabajo. Cuente los pasos. ¿Sería realmente mejor un agente aquí?
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| Flujo de trabajo | "Flujo predefinido" | Grafo de llamadas de LLM y herramientas propiedad del ingeniero |
| Agente | "IA autónoma" | Grafo propiedad del modelo; dirección dinámica de herramientas |
| LLM Aumentado | "LLM con herramientas" | LLM + búsqueda + herramientas + memoria; la unidad atómica |
| Encadenamiento de prompts | "Llamadas secuenciales" | La salida de la llamada N es la entrada de la llamada N+1 |
| Enrutamiento | "Despacho por clasificador" | Elegir qué cadena/modelo maneja la entrada |
| Paralelización | "Distribución (Fan out)" | N llamadas concurrentes; agregación por seccionamiento o votación |
| Orquestador-trabajadores | "Agente despachador" | El LLM orquestador elige LLMs especialistas dinamicamente |
| Evaluador-optimizador | "Proponente + juez" | Iterar hasta que el evaluador apruebe; Self-Refine generalizado |
Lectura Adicional
- Anthropic, Building Effective Agents (Dec 2024) — los cinco patrones de flujo de trabajo
- Anthropic, Effective context engineering for AI agents — la disciplina complementaria
- LangGraph overview — cuándo los grafos con estado justificam su costo
- OpenAI Agents SDK — el patrón orquestador-trabajadores, convertido en producto