Saltar al contenido principal

APIs multiagente nativas: la beta multiagente de Responses de OpenAI frente a construirlo tú mismo

Avanzado

Durante dieciocho meses, «multiagente» significó que el fan-out lo escribías tú. Escribías el prompt del coordinador, lanzabas N llamadas en paralelo, fusionabas sus JSON y gestionabas los reintentos. El 9 de julio de 2026 OpenAI lo redujo a un parámetro de la petición: multi_agent.enabled: true en la Responses API, envuelto en una función de consumo llamada Sol Ultra Mode. El propio modelo decide cuántos subagentes generar, los ejecuta en paralelo y sintetiza el resultado, todo dentro de una única llamada HTTP. Ningún otro proveedor de frontera ha lanzado una primitiva simétrica. Esta página recoge qué se lanzó realmente, las cifras que hay detrás, qué ofrece Anthropic en su lugar y — lo que importa — las tres cargas de trabajo en las que la primitiva nativa compensa su coste y las dos en las que un fan-out casero sigue ganando.

What you'll learn
  • Leer el cuerpo exacto de una petición multiagente de la Responses API y saber qué limita realmente max_concurrent_subagents
  • Hacer las cuentas del coste: qué cobra en realidad «el modelo genera 4 subagentes» a precios de Sol
  • Situar el mismo terreno en el lado de Anthropic — Cowork, Managed Agents y los subagentes de Claude Code — y ver la brecha de primitivas
  • Elegir la primitiva adecuada para cada carga: multiagente nativo, fan-out casero, A2A o un único turno largo
  • Evitar los cuatro modos de fallo que convierten una llamada Ultra de 4 agentes en una factura x4 sin ganancia de precisión

La versión en una frase​

Ultra Mode es una capa de consumo sobre multi_agent.enabled: true en la Responses API: una primitiva nativa que permite al modelo generar subagentes en paralelo dentro de una petición, sintetizar sus salidas y devolver una única respuesta. Aporta una mejora de precisión pequeña pero real en tareas paralelizables (Terminal-Bench 2.1: 88,8 % → 91,9 %), con una factura de tokens que escala aproximadamente de forma lineal con el número de subagentes que el modelo decida generar.

Qué se lanzó realmente el 9 de julio de 2026​

En el mismo lanzamiento aterrizaron dos cosas, y conviene separarlas:

  • Ultra Mode — un interruptor de producto dentro de ChatGPT y Codex. Disponible en el nivel insignia (Sol). Al activarlo, las tareas difíciles se descomponen en ejecuciones paralelas de subagentes antes de la síntesis. Se anuncia como «genera 4+ agentes»; algunos gráficos de benchmarks GA de la propia OpenAI muestran además configuraciones de 16 agentes en BrowseComp y SEC-Bench Pro, pero cuatro es el valor de trabajo por defecto.
  • Beta multiagente de la Responses API — una primitiva para desarrolladores. La misma capacidad subyacente, expuesta como multi_agent.enabled: true en client.beta.responses.create(). Es lo que usarías para construir tu propia experiencia tipo Ultra.

La confusión que dejó el marketing es real: los desarrolladores no paran de preguntar «¿cómo llamo a Ultra Mode desde la API?». La respuesta es que no se llama: activas la beta multiagente, que es la primitiva que hay bajo la función de producto.

La petición multiagente de la Responses API​

En concreto, esta es la forma (SDK de Python):

Llamada multiagente mínima a la Responses API

from openai import OpenAI

client = OpenAI()

resp = client.beta.responses.create(
  model="gpt-5.6-sol",
  input="Audit this repo for auth-bypass patterns and write a report.",
  multi_agent={
      "enabled": True,
      "max_concurrent_subagents": 3,
  },
  tools=[...],  # your MCP tools, function tools, etc.
  extra_headers={"OpenAI-Beta": "responses_multi_agent=v1"},
)

Cuatro aspectos poco evidentes de esta forma:

  • max_concurrent_subagents no es un presupuesto total. Limita los turnos de subagente activos en todo el árbol en un momento dado: raíz más descendientes. El modelo puede generar un número total mucho mayor de subagentes durante la vida de la petición; lo único que no puede es tener más de N en ejecución a la vez.
  • La profundidad no tiene límite. Un subagente puede generar a su vez subagentes. No hay un tope fijo ni para la profundidad del árbol ni para el número total de subagentes por ejecución. Tu superficie de coste no es «N llamadas», sino un árbol que el modelo da forma en tiempo de ejecución.
  • La raíz sintetiza. El agente raíz se encarga de fusionar las respuestas de los subagentes en la respuesta final. No recibes un objeto estructurado {subagents: [...]}; recibes una sola respuesta, y los turnos intermedios de los agentes son opacos para tu código.
  • Algunos parámetros se desactivan en silencio. reasoning.summary y max_tool_calls no se admiten con multiagente activado, y el endpoint de compactación no se admite en respuestas multiagente. Si dependes de los resúmenes de razonamiento para la observabilidad, los pierdes en cuanto lo activas.

Las cuentas del coste que nadie imprime en la página de marketing​

Con el precio GA de Sol, 5 $ de entrada / 30 $ de salida por millón de tokens, la aritmética no perdona. A partir de los análisis de desarrolladores que hicieron ingeniería inversa de ejecuciones reales de Ultra:

  • Una tarea que Ultra descompone en 2 subagentes ≈ 2x el coste en tokens de salida de una sola llamada a Sol, porque ambos subagentes generan salida y, además, la raíz genera la síntesis.
  • Una tarea para la que Ultra genera 5 subagentes ≈ 5x, con el mismo razonamiento y proporcionalmente más repetición de tokens de entrada a lo largo del árbol.
  • Los gráficos de BrowseComp / SEC-Bench que muestran configuraciones de 16 agentes no son una comida gratis: son una demostración de nivel investigador, no un valor por defecto. Con 16 subagentes concurrentes en Sol, hablamos de una cifra de dos dígitos medios en dólares por consulta difícil solo en tokens de salida.

La forma de pensarlo: pagas un Monte Carlo de llamadas a Sol más una pasada de síntesis encima. A veces eso compra la precisión suficiente para importar. A veces es solo una factura x4 por una tarea que una única llamada habría resuelto.

Qué compra realmente la precisión​

Las mejoras publicadas en las evaluaciones paralelizables — las cargas para las que se diseñó Ultra Mode — son reales pero modestas:

BenchmarkSol (individual)Sol UltraDeltaQué mide la evaluación
Terminal-Bench 2.188,8 %91,9 %+3,1Planificación de línea de comandos en varios pasos, coordinación de herramientas
BrowseComp87,5 %92,2 %+4,7Investigación web con múltiples fuentes y síntesis
SEC-Bench Pro—74,3 %(cifra del modo individual no publicada)Razonamiento sobre documentos regulatorios en grandes corpus

Tres observaciones sobre esta tabla:

  • La banda de +3–5 puntos es coherente con lo que el muestreo en paralelo ha aportado históricamente en otras fronteras (best-of-N, self-consistency). La primitiva es realmente útil; la mejora no es un salto cualitativo.
  • Son el mejor caso: evaluaciones elegidas para mostrar el modo. En tareas secuenciales (una edición lineal de código, la reescritura de un solo archivo, un chat corto), Ultra añade latencia de síntesis y coste sin mover la precisión.
  • En el mismo gráfico de Terminal-Bench 2.1, Opus 4.8 de Anthropic obtuvo un 78,9 %: es decir, la ventaja de Sol Ultra procede tanto del mejor modelo base como del impulso multiagente apilado encima. Si migras de Opus a Sol Ultra, no atribuyas toda la diferencia a la primitiva multiagente.

Qué hace Anthropic en su lugar​

Anthropic no ha lanzado una primitiva de API simétrica. Los análogos más cercanos resuelven cada uno una parte distinta del mismo problema:

  • Cowork — una superficie de producto. Un espacio de trabajo agéntico de escritorio donde un agente realiza trabajo sostenido de varios pasos junto al usuario. Comparable a Ultra Mode como función, pero no como primitiva de API.
  • Managed Agents y los almacenes de memoria de managed agents — un bucle de agente alojado con estado persistente y programación. Cubre el hueco de «agente de fondo de larga duración», no el de «generar 4 en paralelo y fusionar».
  • Subagentes de Claude Code y los límites de flota de subagentes — una primitiva de subagentes de primera clase, pero limitada a la CLI de Claude Code. Está documentada, se puede lanzar en paralelo y es el análogo más cercano a multi_agent.enabled, con la diferencia importante de que el prompt del coordinador lo escribes tú.
  • Building Agents sobre la Messages API — el camino casero. Lanzas N llamadas messages.create en paralelo, escribes el prompt de síntesis y gestionas los reintentos. El mismo resultado, más código.

La brecha: ninguna superficie de la API de Anthropic permite hoy activar un único booleano para que el propio modelo decida cuántos subagentes generar y fusione su trabajo. Si quieres ese comportamiento con Claude, lo construyes: consulta Cowork & Agent Teams para la parte de producto y Managed Agents para la primitiva de bucle alojado.

Elegir la primitiva adecuada para cada carga​

Guided walkthrough1 of 5
  1. Si las subtareas pueden ejecutarse sin esperar los resultados de las demás — auditar un repositorio, investigar un tema en muchas fuentes, refactorizar N archivos de forma independiente — una forma de fan-out compensa su coste. Si la tarea es secuencial (editar A, luego leer el resultado de A, luego editar B), cualquier primitiva multiagente añade sobrecoste de síntesis sin beneficio.

Cuatro modos de fallo que convierten Ultra en una factura x4 por nada​

  • Activarlo para tareas secuenciales. El modelo sigue descomponiendo y sintetizando aunque la tarea no se paralelice. Pagas la sobrecarga de coordinación en un trabajo que nunca la necesitó. Regla práctica: si no puedes explicar qué estaría haciendo el segundo subagente mientras el primero se ejecuta, no actives el multiagente.
  • Dejar la observabilidad por resumen de razonamiento en tu panel. reasoning.summary no se admite en silencio con multiagente. Si tu monitorización depende de él, obtendrás campos vacíos y pensarás que el modelo no razona. Despliega un cambio de esquema antes de activar el flag.
  • Usar max_tool_calls como límite de seguridad. También se desactiva en silencio con multiagente. La garantía que creías tener — «como máximo 20 llamadas a herramientas por petición» — desaparece. Aplica los techos de llamadas a herramientas en la capa del adaptador de herramientas, no mediante el parámetro de la petición.
  • Suponer que max_concurrent_subagents es un tope de coste. Limita los subagentes activos en un momento dado, no el total generado durante la petición. Una sola llamada Ultra puede generar decenas de subagentes de forma secuencial y seguir respetando un límite max_concurrent_subagents: 3. Si tu techo es el coste, añade un max_output_tokens a nivel de petición.

Lo que el «multiagente nativo» no es​

Con él se confunden a menudo dos primitivas cercanas:

  • No es muestreo n > 1. El antiguo parámetro n de OpenAI muestrea varias completaciones y las devuelve todas; tú eliges una. El multiagente ejecuta subagentes distintos haciendo trabajo distinto y sintetiza sus salidas. Lo primero es muestreo por temperatura; lo segundo es descomposición de tareas.
  • No es inferencia por lotes. La batch API procesa en segundo plano muchas peticiones independientes. El multiagente son muchos subagentes coordinados dentro de una petición interactiva. El batch está orientado al rendimiento; el multiagente, al resultado.

Hacia dónde va esto​

El protocolo A2A (consulta A2A: el protocolo Agent-to-Agent) cubre el multiagente entre proveedores. multi_agent.enabled: true cubre el multiagente dentro del modelo. El hueco sin cubrir es una primitiva entre proveedores: el modelo del proveedor A genera un subagente en el proveedor B y fusiona el resultado; todavía no existe una especificación pública. Cuando llegue, lo hará como A2A más un verbo de traspaso nativo, no como una API nueva en ninguno de los dos lados. Vigila ese espacio.

Check yourself

0/4
  1. ¿Qué limita max_concurrent_subagents en la beta multiagente de Responses?
  2. Activas el multiagente y tu panel de monitorización muestra de pronto campos de resumen de razonamiento vacíos. ¿Qué ha pasado?
  3. Necesitas subagentes en paralelo que se ejecuten en cuentas de clientes distintas de dos proveedores. ¿Qué primitiva es la correcta?
  4. ¿Cuál de estos es un mal candidato para Ultra Mode / multi_agent.enabled?
Aún no hay tarjetas — añade algunas para empezar a estudiar. 🃏

Fuentes y lecturas adicionales​

Siguiente​