Hasta ahora pensaste en cadenas como una secuencia: A → B → C → D. Eso funciona cuando cada paso realmente depende del anterior. Pero muchas veces los pasos del medio son independientes entre sí, todos comen del mismo upstream y devuelven al mismo downstream.
Cuando eso pasa, ejecutarlos en serie es regalar latencia. La cadena se convierte en un grafo: un fan-out (abanico) que paraleliza el medio, y un fan-in (cierre) que junta todo.
Tres condiciones, todas necesarias:
classify termine, ninguno espera a otro paralelo.Si las tres se cumplen, el medio del grafo se ejecuta como un lote paralelo. Tres llamadas LLM al mismo tiempo. Latencia total = el más lento de los tres, no la suma.
[classify]
↓
┌───────┼───────┐
↓ ↓ ↓
[tech] [people] [severity] ← paralelo, todos esperan classify
└───────┼───────┘
↓
[recommend] ← fan-in: espera a los 3 anteriores
↓
[digest] ← cierrePensar en cadenas como grafos, no como listas, es lo que separa al diseñador novato del experto. La lista es un caso especial del grafo (cuando hay un solo camino). El grafo te da paralelismo gratis cuando las dependencias lo permiten.
A la derecha: seis pasos del digest del capitán. Algunos son paralelos (lo dice su detail), otros no. Ordenalos respetando las dependencias reales. Cuando dos pasos pueden correr a la vez, ponelos consecutivos en el orden indicado por sus números. El runtime los va a lanzar juntos.