For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Orquestación multiagente

Permite que un agente delegue trabajo a subagentes independientes.

La orquestación multiagente permite que un agente delegue tareas a subagentes. Cada subagente tiene su propio contexto y puede trabajar en paralelo con los demás. El agente principal coordina su trabajo y combina sus resultados.

Cuándo usar subagentes

Usa subagentes para tareas independientes, como revisar documentos por separado o investigar distintas causas de una falla. Para cada tarea, formula una pregunta clara y especifica el resultado esperado.

Deja las tareas breves y los pasos que dependen unos de otros a cargo del agente principal. Los agentes que editan los mismos archivos deben coordinar sus cambios.

Habilitar la orquestación multiagente

Establece agent.multi_agent.enabled en true al crear una sesión. El arnés de ejecución proporciona herramientas para crear subagentes, enviarles mensajes, esperarlos e interrumpirlos. No tienes que declarar estas herramientas.

En este ejemplo, el usuario solicita explícitamente dos subagentes en su mensaje. Cada uno revisa un conjunto de notas de la versión y el agente principal reúne sus hallazgos. El ejemplo no requiere un entorno ni herramientas configuradas.

Comparar notas de la versión
from openai import OpenAI

client = OpenAI()

with client.beta.agents.sessions.create(
    agent={
        "model": "gpt-6-astra",
        "instructions": "Delegate each release to a separate subagent. Ask each to extract customer-visible changes and required migration steps using only its release notes. Wait for both results, then combine them into one release summary with release labels. Do not invent missing details.",
        "multi_agent": {"enabled": True, "max_concurrent_subagents": 2},
    },
    environment={"type": "none"},
    input="Use two subagents, one for each release, and combine their findings into a labeled summary. Release A: Search now supports filtering by date. Existing queries continue to work. Release B: The export endpoint now returns a download URL instead of file bytes. Update clients to fetch that URL.",
    stream=True,
).with_result_collection() as stream:
    for event in stream:
        print(event.model_dump_json())
    result = stream.get_final_result()
print(result.output_text)

Si usas environment.type: "none", incluye la entrada inicial en el campo input de la solicitud de creación. Si configuras stream: true, el primer turno también se transmite en tiempo real. Consulta Eventos y elementos de la sesión para saber cómo gestionar y recuperar el flujo de eventos.

Configuración de concurrencia

max_concurrent_subagents limita la cantidad de subagentes que pueden ejecutarse al mismo tiempo. El valor predeterminado es 6, sin contar al coordinador. Si habilitas la delegación, especifica un número entero positivo.

Para deshabilitar la delegación, omite multi_agent o establece enabled en false y omite el límite. Esta configuración se aplica al crear la sesión. Los cambios que hagas en un agente guardado se aplican a las sesiones nuevas.

Usar un entorno

Cuando los agentes necesiten acceder a archivos o ejecutar comandos, agrega un entorno. El coordinador y los subagentes comparten el sistema de archivos del entorno. Al crear un subagente, no se crea otro entorno.

Este ejemplo crea una sesión para trabajar en tu propio entorno.

Habilitar la delegación en tu propio entorno
const result = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    instructions:
      "Prepare release notes from the repository. Have one subagent identify customer-visible changes and another check migration guides and examples, then combine their findings.",
    multi_agent: {
      enabled: true,
      max_concurrent_subagents: 3,
    },
  },
  environment: {
    type: "self_hosted",
    workspace_directory: "/workspace",
  },
});

Guarda en tu aplicación los ID de sesión y de entorno que recibas. Conecta el entorno y luego envía la entrada para iniciar el trabajo.

Herramientas disponibles para los subagentes

Los subagentes heredan las herramientas MCP configuradas, sus credenciales, la lista de herramientas permitidas y la configuración de búsqueda web. También pueden usar los archivos y las herramientas de línea de comandos del entorno. Los subagentes no admiten herramientas de función.

Observar la delegación

El flujo de eventos de la sesión informa sobre la actividad de los subagentes:

  • agent.session.subagent.created proporciona el ID del nuevo subagente.
  • agent.session.turn.item.added y agent.session.turn.item.done informan sobre las acciones de coordinación. Entre los tipos de elementos de estos eventos se encuentran create_subagent_call, send_subagent_input_call, wait_for_subagents_call e interrupt_subagent_call.

El arnés de ejecución realiza estas acciones. Que termine una acción de creación o de espera no significa que el subagente haya terminado su tarea. En un elemento de creación, agent_id identifica al agente que solicitó el subagente.

Los elementos de coordinación pueden omitir el contenido de los mensajes. Un elemento agent_message contiene el texto intercambiado entre agentes cuando está disponible, pero el flujo de eventos no proporciona una transcripción completa de la conversación.

Lee la respuesta del agente principal para obtener el resultado combinado. Consulta los elementos y turnos guardados para revisar el trabajo anterior, incluido el historial de cada subagente.

Identificar qué agente ejecutó un comando

Si tienes el elemento de un comando y su ID de sesión, recupera el turno del comando para identificar al agente que lo ejecutó. Para el agente principal, el campo subagent_id del turno tiene el valor null.

Identificar al agente que ejecutó un comando
// Use the saved session ID and command execution item from your application.
const turn = await client.beta.agents.sessions.turns.retrieve(
  command.turn_id,
  { session_id: sessionId }
);
console.log(turn.subagent_id);