Orquestador y workers
Coordinación jerárquica.
Orquestador y workers es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.
El patrón del orquestador
En el patrón de orquestador y workers, un único agente orquestador se ocupa del plan y del objetivo; los agentes worker ejecutan subtareas con alcance limitado e informan de sus resultados. El orquestador divide la tarea, asigna trabajo, integra los resultados y decide cuándo se ha completado.
- Orquestador: planificación, enrutamiento, síntesis y control del flujo.
- Workers: ejecución centrada dentro de un contrato estricto.
Esta jerarquía concentra el criterio en un solo lugar y distribuye el trabajo paralelizable entre muchos agentes.
Separación de la planificación y la ejecución
La disciplina fundamental consiste en mantener la planificación separada de la ejecución. El orquestador razona sobre la estrategia con un contexto pequeño y de alto nivel; los workers operan con un contexto detallado, pero limitado. Mezclarlos vuelve a crear el generalista sobrecargado.
El orquestador rara vez debería manipular directamente la salida sin procesar de las herramientas: debe razonar a partir de los resúmenes de los workers.
plan = orchestrator.decompose(goal) # high-level
results = [worker.run(sub) for sub in plan] # detailed, scoped
final = orchestrator.integrate(results) # over summariesLa calidad de la división lo determina todo
El sistema solo será tan bueno como la división que haga el orquestador. Las subtareas deben ser suficientemente independientes para ejecutarse en paralelo, tener un alcance suficiente para entregarse con claridad y, en conjunto, cubrir toda la tarea. Haga que el orquestador emita un plan explícito que pueda inspeccionarse antes de ejecutar cualquier worker.
- Subtareas independientes -> ejecución en paralelo.
- Cobertura completa -> no quedan vacíos en la respuesta final.
plan = {
'subtasks': [
{'id': 1, 'goal': '...', 'inputs': [...], 'depends_on': []},
{'id': 2, 'goal': '...', 'inputs': [...], 'depends_on': [1]}
]
}Asignación mediante contratos estrictos
Cada asignación debe entregar al worker exactamente su objetivo, sus entradas y el esquema esperado de salida, y nada más. Un worker que solo conoce su parte no puede distraerse con el objetivo general y devuelve un formato predecible que el orquestador puede integrar.
El mensaje de asignación es un contrato: entregable claro, formato claro y criterios claros de finalización.
dispatch = {
'goal': 'Summarize doc 7 risks',
'context': doc7,
'output_schema': {'risks': [{'text': str, 'severity': str}]},
'done_when': 'all risk clauses covered'
}Aislamiento del contexto entre workers
Por defecto, los workers no deberían ver todo el contexto de los demás. El aislamiento evita que los errores o las alucinaciones de un worker contaminen a otro y mantiene pequeño y almacenable en caché el prompt de cada worker. El orquestador es el único componente con una visión global.
Comparta información entre workers únicamente mediante resúmenes validados por el orquestador, nunca mediante comunicación directa sin filtrar.
Subtareas paralelas frente a secuenciales
Las subtareas independientes se ejecutan en paralelo para reducir la latencia; las dependientes deben respetar el orden. El plan del orquestador codifica un grafo de dependencias y el entorno de ejecución programa las tareas según corresponda: distribuya las hojas independientes y, después, únalas.
- Fan-out: asigne simultáneamente todas las subtareas listas.
- Join: espere a que se cumplan las dependencias antes de realizar una asignación dependiente.
def schedule(plan):
ready = [t for t in plan if not t['depends_on']]
run_parallel(ready)
# then unlock tasks whose deps are now doneIntegración y resolución de conflictos
Integrar no consiste en concatenar. El orquestador debe conciliar las salidas de los workers cuando se solapen, se contradigan o tengan poca confianza, para producir un resultado coherente; también debe decidir en qué resultados confiar y hacer visibles los conflictos no resueltos.
Proporcione al orquestador un paso explícito de conciliación con reglas: priorizar la mayor confianza, señalar las contradicciones y solicitar una nueva ejecución cuando la cobertura sea incompleta.
merged = orchestrator.reconcile(
results,
rules='prefer higher confidence; flag contradictions; re-dispatch on gaps'
)El orquestador como controlador
El orquestador también se ocupa del control del flujo: decide cuándo detenerse, cuándo reintentar un worker fallido, cuándo volver a planificar y cuándo escalar el problema. Por ello, es el lugar adecuado para imponer límites —máximo de iteraciones, gasto máximo y profundidad máxima— que eviten bucles descontrolados.
Sin un orquestador que ejerza el control, los sistemas multiagente se desbocan.
if iterations > MAX_ITERS or spend > BUDGET:
return orchestrator.best_effort_answer()División recursiva
Un worker puede actuar a su vez como orquestador de un subproblema, formando una jerarquía. Esto permite abordar tareas profundas, pero añade latencia y profundidad de propagación de errores. Limite la profundidad de la recursión y exija que cada nivel devuelva un resumen claro, para que los niveles superiores no se ahoguen en detalles de los niveles inferiores.
Contención de fallos
Diseñe el sistema para que el fallo de un solo worker degrade el resultado de forma controlada. El orquestador debe detectar las salidas de worker malformadas o vacías, reintentar con un contrato aclarado y recurrir a una alternativa en lugar de bloquearse. Los workers fallan de forma aislada; el orquestador absorbe el fallo y lo rodea.
- Valide cada respuesta de un worker según su esquema.
- Reintente y, después, recurra a una alternativa; nunca propague el fallo sin procesar hacia niveles superiores.
def collect(worker, dispatch):
out = worker.run(dispatch)
if not valid(out, dispatch['output_schema']):
out = worker.run(clarify(dispatch))
return out or fallback(dispatch)Esquema de orquestación
El esquema es el siguiente: el orquestador divide la tarea en un plan basado en un grafo de dependencias que se puede inspeccionar, asigna contratos estrictos a workers aislados, ejecuta las subtareas independientes en paralelo, valida y concilia los resultados mediante reglas de conflicto explícitas, impone límites y condiciones de detención y contiene los fallos de los workers mediante reintentos seguidos de una alternativa. El criterio permanece centralizado; el trabajo, distribuido.
Comprobación rápida
Está diseñando un sistema de orquestador y workers para una tarea de investigación con varios subtemas independientes.
Recapitulación: orquestador y workers
Concentre la planificación, el enrutamiento, la integración y el control en un único orquestador; delegue la ejecución específica en workers aislados bajo contratos estrictos. Descomponga el trabajo en un grafo de dependencias inspeccionable, paralelice las subtareas independientes, concilie los resultados mediante reglas de conflicto explícitas, haga cumplir los presupuestos y las condiciones de detención, y contenga los fallos de los workers con validate-retry-fallback. El orquestador razona a partir de resúmenes, nunca de comunicaciones cruzadas sin filtrar, lo que mantiene la jerarquía coherente y controlable.
Preguntas frecuentes
¿La lección «Orquestador y workers» es gratis?
Sí — el texto completo de «Orquestador y workers» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Orquestador y workers»?
Coordinación jerárquica. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Prompt Engineering?
No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Orquestador y workers»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?
Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Roles y especialización
- Orquestador y workers
- Comunicación entre agentes
- Agentes que debaten y votan