La llamada a funciones clásica tiene una forma que todo desarrollador de agentes conoce de memoria. El modelo solicita una llamada a una herramienta, su aplicación la ejecuta, usted añade el resultado y el modelo solicita la siguiente. Cuatro herramientas, cuatro viajes de ida y vuelta. Cuarenta herramientas, cuarenta. Cada pasada añade latencia de red y un contexto que se vuelve a facturar. Cuando OpenAI lanzó GPT-5.6 a disponibilidad general el 9 de julio de 2026, ofreció una forma de salir de ese ciclo: la llamada programática a herramientas en la API de Respuestas.
La idea es directa. En lugar de devolver las llamadas a herramientas una por una para que su código se ejecute en un bucle, el modelo escribe JavaScript que orquesta múltiples llamadas a herramientas por sí mismo. Ese código se ejecuta en un entorno de ejecución V8 aislado sin acceso a la red. Sus herramientas siguen siendo la única forma en que el código puede interactuar con el mundo exterior, por lo que el límite de seguridad que ya considera con la llamada a funciones de OpenAI se mantiene exactamente donde estaba. Lo que cambia es la orquestación: los bucles, condicionales y la agregación que solían residir en su aplicación.
El cambio también llega a su lado de la API. Cada herramienta que expone es ahora un contrato que el modelo puede llamar en ráfagas de docenas en lugar de una llamada cuidadosa por turno. La precisión del esquema, las formas de error y el comportamiento de la tasa importan más que la semana pasada. Este artículo cubre lo que se lanzó, por qué el antiguo bucle es perjudicial, qué permanece igual y cómo preparar sus puntos finales de herramientas con Apidog antes de entregárselos al modelo.
En resumen
- GPT-5.6 pasó a disponibilidad general el 9 de julio de 2026. En GA, la API de Respuestas obtuvo la llamada programática a herramientas, confirmado en la documentación para desarrolladores de OpenAI.
- En lugar de una llamada a una herramienta por viaje de ida y vuelta, el modelo escribe JavaScript que compone bucles, condicionales y agregación sobre sus herramientas.
- El código generado se ejecuta en un sandbox V8 aislado sin acceso a la red. Las definiciones de sus herramientas siguen siendo el único camino hacia sistemas externos, por lo que el límite de seguridad no cambia.
- La latencia y el costo de los tokens dejan de acumularse con el número de llamadas a herramientas, que es donde los bucles de agentes clásicos sangran.
- La característica tiene pocos días; los parámetros de solicitud exactos y los límites se encuentran en la referencia de la API de OpenAI, así que léala antes de construir.
- Pruebe y simule cada punto final de herramienta antes de que el modelo lo orqueste; una ambigüedad de esquema se convierte en un error repetido en un bucle.
Lo que se lanzó el 9 de julio
GPT-5.6 llegó como una familia de tres niveles: gpt-5.6-sol para el razonamiento más profundo, gpt-5.6-terra para un trabajo equilibrado y gpt-5.6-luna para un volumen rápido y rentable. El alias simple gpt-5.6 se dirige a Sol. Los tres son de autoservicio a través de la API sin restricción de planes, después de una vista previa limitada de dos semanas que terminó cuando se levantó la restricción de acceso el 8 de julio.
La familia de modelos acaparó la mayor parte de la atención el día del lanzamiento, pero la nueva superficie de la API es la historia más importante para los creadores de agentes. Según la cobertura del lanzamiento de MarkTechPost y la propia documentación de OpenAI, la API de Respuestas incorporó cuatro novedades en GA: llamada programática a herramientas, una beta multiagente, razonamiento persistente a lo largo de los turnos y configuraciones de detalle de visión que preservan las dimensiones originales de la imagen.
La llamada programática a herramientas es el titular. OpenAI la describe como el modelo que escribe JavaScript para orquestar llamadas a herramientas, ejecutado en un entorno de ejecución V8 aislado sin acceso a la red. El modelo deja de ser un solicitante turno por turno y se convierte en el autor de la capa de orquestación.
El bucle que reemplaza la llamada programática a herramientas
Aquí está la llamada a funciones clásica contra la API de Respuestas, la forma que casi todos los agentes de producción utilizan hoy en día:
import OpenAI from "openai";
const client = new OpenAI();
const tools = [
{
type: "function",
name: "get_flight_status",
description: "Return live status for a flight by IATA flight number.",
parameters: {
type: "object",
properties: {
flight_number: {
type: "string",
description: "IATA flight number, for example SQ317"
}
},
required: ["flight_number"]
}
}
];
let response = await client.responses.create({
model: "gpt-5.6",
input: "Which of these 12 flights are delayed: SQ317, BA15, UA857...",
tools
});
El modelo no puede responder sin datos, por lo que emite una llamada a función. Su código ejecuta la búsqueda, añade un elemento function_call_output y vuelve a llamar a la API:
// One round trip per tool call. This loop is the tax.
while (hasFunctionCalls(response)) {
const outputs = await executeToolCalls(response); // your code, your infra
response = await client.responses.create({
model: "gpt-5.6",
previous_response_id: response.id,
input: outputs,
tools
});
}
Para 12 vuelos, ese bucle puede ejecutarse 12 veces, y cada iteración paga doble. Primero en latencia: un viaje de ida y vuelta completo a la red de OpenAI más el tiempo del modelo, serializado, porque la llamada N+1 depende de que el modelo vea el resultado N. Segundo en tokens: los resultados de las herramientas se acumulan en el contexto, por lo que las últimas iteraciones vuelven a procesar todo lo que produjeron las primeras. Encadene agentes y el efecto acumulativo se vuelve feo: un agente de cinco pasos donde cada paso envuelve un bucle de diez llamadas son cincuenta invocaciones de modelo facturadas.
Nada de ese bucle es inteligencia. Es fontanería, y hasta esta semana el modelo no tenía forma de escribir la propia fontanería.
Cómo el modo programático cambia la forma
Con la llamada programática a herramientas, el modelo responde a la pregunta del vuelo de manera diferente: escribe un pequeño programa JavaScript que itera sobre los doce números de vuelo, llama a get_flight_status para cada uno, filtra por estado de retraso, ordena por duración del retraso y devuelve el agregado. El sandbox ejecuta ese programa. Sus herramientas siguen haciendo el trabajo real; el flujo de control alrededor de ellas ahora pertenece al modelo.
Tres propiedades hacen que esto sea factible en lugar de alarmante:
- El entorno de ejecución está aislado. OpenAI ejecuta el JavaScript generado en un sandbox V8 sin acceso a la red. El código no puede obtener una URL, abrir un socket o exfiltrar nada por sí mismo.
- Las herramientas son la única salida. Cada efecto externo se enruta a través de la superficie de herramientas que usted definió. Si no expuso una herramienta
delete_record, ningún código generado puede eliminar un registro. - El flujo de control se vuelve expresivo. Bucles, condicionales, salidas anticipadas, agregación de resultados: patrones que antes requerían N viajes de ida y vuelta ahora ocurren dentro de un único ciclo de respuesta.
| Llamada a funciones clásica | Llamada programática a herramientas | |
|---|---|---|
| Quién escribe el flujo de control | Su aplicación | El modelo, como JavaScript |
| Viajes de ida y vuelta para N llamadas a herramientas | N, serializados | Un ciclo de respuesta |
| Dónde se ejecuta la orquestación | Su infraestructura | Sandbox V8 aislado, sin red |
| Cómo se ejecutan las herramientas | Su código las invoca | Aún a través de la superficie de herramientas declarada |
| Límite de seguridad | Definiciones de herramientas | Definiciones de herramientas, sin cambios |
Lo que permanece igual
Usted sigue definiendo herramientas con nombres, descripciones y parámetros de JSON Schema, exactamente como en el código anterior. El modelo solo puede componer llamadas a las herramientas que usted declaró, lo que significa que la pregunta "¿qué puede hacer este agente con mis sistemas?" tiene la misma respuesta que antes: lo que su superficie de herramientas permita, y nada más.
La calidad del esquema importa más ahora, no menos. En el bucle clásico, una descripción vaga de un parámetro producía una llamada incorrecta que se podía detectar y corregir antes del siguiente viaje de ida y vuelta. En el modo programático, la misma vaguedad puede integrarse en un bucle y repetirse en cada iteración antes de que vea un solo resultado. Los hábitos que construyó para salidas estructuradas se transfieren directamente: tipos estrictos, enumeraciones para conjuntos cerrados, descripciones que especifican unidades y formatos, campos obligatorios que son honestamente obligatorios.
Límites y preguntas abiertas
Esta capacidad tiene pocos días. Algunas precauciones antes de reconstruir su pila de agentes en torno a ella:
- Los parámetros de solicitud exactos, los límites de ejecución y el comportamiento de tiempo de espera pertenecen a la referencia de la API y guía del modelo de OpenAI. Los nombres de los parámetros pueden variar durante el pulido que sigue a cualquier lanzamiento de GA, así que lea la referencia antes de escribir código contra la función.
- La depuración es una nueva superficie. Cuando la orquestación residía en su repositorio, podía establecer un punto de interrupción; ahora, parte del flujo de control se genera de nuevo por cada solicitud. Registrar la secuencia de llamadas a herramientas que realiza el sandbox se convierte en una tarea fundamental de observabilidad.
- Todavía no hay un historial de producción. Las notas del primer día de Simon Willison sobre GPT-5.6 son un buen registro continuo de lo que surge en las pruebas independientes; espere que aparezcan puntos conflictivos allí antes de que los documentos oficiales los mencionen.
- Un orden de despliegue sensato: comience con herramientas de solo lectura, observe la orquestación generada, verifique la contabilidad de tokens contra su bucle anterior y solo entonces exponga herramientas con efectos secundarios.
Sus herramientas son ahora una API que el código de otra persona llama
Bajo la llamada a funciones clásica, una herramienta se llamaba una vez por viaje de ida y vuelta, con un bucle escrito por humanos que decidía el ritmo y el orden. Bajo la llamada programática a herramientas, el código generado llama a sus herramientas en ráfagas, se ramifica en sus respuestas y agrega su salida. Cada herramienta es un contrato de API consumido por un cliente escrito por máquina que usted nunca revisa antes de que se ejecute.
Eso eleva el listón en cuatro aspectos:
- Precisión del esquema. Indique unidades, formatos y rangos en cada descripción de parámetro. Un formato de fecha ambiguo ya no es una llamada incorrecta; es un bucle de ellas.
- Formas de error. El código generado se ramificará en caso de fallos. Una herramienta que devuelve 200 con un mensaje de error enterrado en una cadena engañará cualquier orquestación escrita contra su esquema. Devuelva códigos de estado honestos y cuerpos de error estructurados.
- Idempotencia y comportamiento de la tasa. Doce llamadas que solían llegar a lo largo de un minuto ahora pueden llegar en una ráfaga. Sepa lo que hace su punto final bajo ese patrón antes de que el modelo lo descubra por usted.
- Latencia. Una herramienta que tarda ocho segundos era tolerable una vez por turno. Dentro de un bucle de doce iteraciones, define su tiempo de respuesta.
Aquí es donde un banco de trabajo API real se gana su lugar. Defina o importe la especificación de cada punto final de la herramienta, envíe solicitudes de prueba contra él y confirme que el esquema de respuesta coincide con lo que su definición de herramienta promete. Luego, vaya un paso más allá: simule la API de la herramienta para que pueda practicar la orquestación contra datos falsos predecibles sin tocar la producción. Descargue Apidog y su servidor simulado incorporado proporcionará respuestas con forma de esquema para cada punto final que haya definido, de modo que pueda entregar al modelo una superficie de herramienta completa y observar cómo orquesta antes de tocar un solo registro real.
Otras características de GA en resumen
La llamada programática a herramientas no se lanzó sola. Aquí importan dos adiciones adyacentes a la API de Respuestas:
- Multiagente, en beta: ejecución paralela de subagentes gestionada por la API. Etapa temprana, vale la pena observar en lugar de apostar.
- Razonamiento persistente: contexto de razonamiento reutilizado a lo largo de los turnos a través de
reasoning.context, para que las sesiones largas de los agentes dejen de derivar las mismas conclusiones en cada turno.
Ambos se combinan con la llamada programática a herramientas: un agente que mantiene su razonamiento a lo largo de los turnos y escribe su propia orquestación realiza mucho menos trabajo redundante por tarea.
Llamada programática a herramientas vs. modo Ultra
El lanzamiento también trajo Ultra, y ambos se confunden porque ambos hacen más por solicitud. Resuelven diferentes cuellos de botella.
Ultra es una configuración multiagente que ejecuta cuatro agentes en paralelo por defecto, gastando más tokens deliberadamente para reducir el tiempo real; según OpenAI, eleva Terminal-Bench 2.1 del 88.8% al 91.9%. Se encuentra en ChatGPT Work en planes Pro y Enterprise, y en Codex desde Plus en adelante. La llamada programática a herramientas es una capacidad de la API donde un agente orquesta sus herramientas en código. Ultra paraleliza el pensamiento; la llamada programática a herramientas colapsa los viajes de ida y vuelta de ejecución. El desglose completo está en nuestro artículo sobre el modo Ultra de GPT-5.6, pero la versión corta: si su cuello de botella es la latencia de la llamada a herramientas, desea la llamada programática a herramientas; si es el tiempo de deliberación en problemas difíciles, desea Ultra.
Preguntas frecuentes
¿Necesito reescribir mis definiciones de herramientas existentes?
No. Las herramientas mantienen la misma forma de JSON Schema que se muestra en el código anterior, y las definiciones escritas para la llamada a funciones clásica se conservan. El trabajo valioso es ajustarlas: añadir enumeraciones, especificar formatos y hacer que las descripciones sean lo suficientemente específicas para que el código generado no las malinterprete.
¿Puede el JavaScript generado acceder a internet?
No. El código se ejecuta en un entorno de ejecución V8 aislado sin acceso a la red, y sus herramientas declaradas son la única forma de afectar algo fuera del sandbox. Eso convierte su superficie de herramientas en el modelo de riesgo completo, así que audite qué herramientas expone con el mismo cuidado que le daría a una API pública.
¿Qué modelos GPT-5.6 soportan la llamada programática a herramientas?
OpenAI lo documenta como una superficie de la API de Respuestas para la familia GPT-5.6, y los tres niveles (gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna) son de autoservicio para cualquier cuenta de API. Consulte la referencia de la API para obtener detalles a nivel de nivel antes de comprometerse con uno. Para una configuración clave y un primer recorrido de solicitud, consulte cómo usar la API de GPT-5.6.
¿En qué se diferencia esto del intérprete de código?
El intérprete de código ejecuta el código como el producto final: análisis, gráficos, transformaciones de archivos. La llamada programática a herramientas genera código cuyo único trabajo es coordinar sus herramientas declaradas; el producto final son los resultados agregados de las herramientas, no el código en sí.
Dónde te deja esto
El bucle de ida y vuelta era la parte menos interesante de cada agente que ha lanzado, y GPT-5.6 lo hizo opcional. La orquestación se trasladó al modelo; la responsabilidad de unas APIs de herramientas limpias, precisas y bien comportadas se trasladó a usted, con más peso que antes.
El siguiente paso es concreto. Elija un flujo de trabajo intensivo en lectura, escriba o ajuste los esquemas de herramientas que necesita, y someta cada punto final al cliente API y servidor simulado de Apidog hasta que el contrato resista llamadas en ráfaga y entradas incorrectas. Cuando el modelo comience a escribir código contra sus herramientas, querrá que ese código lea de una superficie que ya ha probado.
