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

  1. 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.

  2. 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).

  3. 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).

  4. 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.

  5. 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

  1. 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?
  2. 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?
  3. Convierta evaluator_optimizer en 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.
  4. 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.
  5. 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

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).