GPT-5.6 : Appel d'outils programmatique – Le modèle écrit le code d'orchestration

L'appel d'outils programmatique de GPT-5.6 permet au modèle d'écrire du JavaScript qui orchestre vos outils dans un environnement d'exécution V8 en bac à sable. Ce qui a été déployé, les limites, comment le tester.

Ashley Innocent

Ashley Innocent

10 July 2026

GPT-5.6 : Appel d'outils programmatique – Le modèle écrit le code d'orchestration

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

L'appel de fonction classique a une forme que chaque développeur d'agent connaît par cœur. Le modèle demande un appel d'outil, votre application l'exécute, vous ajoutez le résultat, et le modèle demande le suivant. Quatre outils, quatre allers-retours. Quarante outils, quarante. Chaque passage ajoute de la latence réseau et un contexte refacturé. Lorsque OpenAI a rendu GPT-5.6 généralement disponible le 9 juillet 2026, il a mis fin à ce cycle répétitif : l'appel d'outil programmatique dans l'API de Réponses.

L'idée est directe. Au lieu de renvoyer les appels d'outils un par un pour que votre code les exécute en boucle, le modèle écrit du JavaScript qui orchestre lui-même plusieurs appels d'outils. Ce code s'exécute dans un environnement d'exécution V8 isolé, sans accès réseau. Vos outils restent le seul moyen pour le code d'interagir avec le monde extérieur, de sorte que la limite de sécurité que vous prenez déjà en compte avec les appels de fonction OpenAI reste exactement la même. Ce qui change, c'est l'orchestration : les boucles, les conditions et l'agrégation qui résidaient auparavant dans votre application.

bouton

Ce changement impacte également votre côté de l'API. Chaque outil que vous exposez est désormais un contrat que le modèle peut appeler par salves de dizaines plutôt qu'un seul appel prudent par tour. La précision du schéma, la forme des erreurs et le comportement de débit sont plus importants qu'ils ne l'étaient la semaine dernière. Cet article couvre ce qui a été livré, pourquoi l'ancienne boucle est problématique, ce qui reste inchangé, et comment préparer vos points d'accès d'outils avec Apidog avant de les confier au modèle.

bouton

TL;DR

Ce qui a été livré le 9 juillet

GPT-5.6 est arrivé sous la forme d'une famille à trois niveaux : gpt-5.6-sol pour un raisonnement approfondi, gpt-5.6-terra pour un travail équilibré, et gpt-5.6-luna pour un volume rapide et rentable. L'alias simple gpt-5.6 redirige vers Sol. Les trois sont disponibles en libre-service via l'API sans restriction de plan, après une prévisualisation limitée de deux semaines qui s'est terminée lorsque la restriction d'accès a été levée le 8 juillet.

La famille de modèles a reçu la majeure partie de l'attention le jour du lancement, mais la nouvelle surface d'API est l'histoire la plus importante pour les développeurs d'agents. Selon la couverture du lancement de MarkTechPost et la propre documentation d'OpenAI, l'API de Réponses a intégré quatre nouveautés lors de sa disponibilité générale : l'appel d'outil programmatique, une version bêta multi-agents, le raisonnement persistant entre les tours, et des paramètres de détails visuels qui préservent les dimensions originales des images.

L'appel d'outil programmatique est le point central. OpenAI le décrit comme le modèle écrivant du JavaScript pour orchestrer les appels d'outils, exécuté dans un environnement d'exécution V8 isolé sans accès réseau. Le modèle cesse d'être un demandeur tour par tour et devient l'auteur de la couche d'orchestration.

La boucle que l'appel d'outil programmatique remplace

Voici l'appel de fonction classique contre l'API de Réponses, la forme que presque tous les agents de production utilisent aujourd'hui :

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
});

Le modèle ne peut pas répondre sans données, il émet donc un appel de fonction. Votre code effectue la recherche, ajoute un élément function_call_output et appelle à nouveau l'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
  });
}

Pour 12 vols, cette boucle peut s'exécuter 12 fois, et chaque itération paie doublement. Premièrement en latence : un aller-retour réseau complet vers OpenAI plus le temps du modèle, sérialisé, car l'appel N+1 dépend du modèle voyant le résultat N. Deuxièmement en jetons : les résultats des outils s'accumulent dans le contexte, de sorte que les dernières itérations retraitent tout ce que les premières ont produit. Enchaînez les agents et l'accumulation devient problématique : un agent en cinq étapes où chaque étape enveloppe une boucle de dix appels représente cinquante invocations de modèle facturées.

Rien de cette boucle n'est de l'intelligence. C'est de la plomberie, et jusqu'à cette semaine, le modèle n'avait aucun moyen d'écrire la plomberie lui-même.

Comment le mode programmatique change la forme

Avec l'appel d'outil programmatique, le modèle répond différemment à la question du vol : il écrit un court programme JavaScript qui parcourt les douze numéros de vol, appelle get_flight_status pour chacun, filtre les statuts retardés, trie par durée de retard, et renvoie l'agrégat. Le bac à sable exécute ce programme. Vos outils font toujours le vrai travail ; le flux de contrôle autour d'eux appartient désormais au modèle.

Trois propriétés rendent cela fonctionnel plutôt qu'alarmant :

Appel de fonction classique Appel d'outil programmatique
Qui écrit le flux de contrôle Votre application Le modèle, en JavaScript
Allers-retours pour N appels d'outils N, sérialisé Un cycle de réponse
Où l'orchestration s'exécute Votre infrastructure Bac à sable V8 isolé, pas de réseau
Comment les outils s'exécutent Votre code les invoque Toujours via votre surface d'outils déclarée
Limite de sécurité Définitions d'outils Définitions d'outils, inchangées

Ce qui reste inchangé

Vous définissez toujours les outils avec des noms, des descriptions et des paramètres de schéma JSON, exactement comme dans le code ci-dessus. Le modèle ne peut composer des appels qu'aux outils que vous avez déclarés, ce qui signifie que la question « que peut faire cet agent à mes systèmes » a la même réponse qu'auparavant : tout ce que votre surface d'outils permet, et rien d'autre.

La qualité du schéma est plus importante maintenant, et non moins. Dans la boucle classique, une description de paramètre vague produisait un mauvais appel que vous pouviez détecter et corriger avant le prochain aller-retour. En mode programmatique, la même imprécision peut être intégrée dans une boucle et répétée à chaque itération avant que vous ne voyiez un seul résultat. Les habitudes que vous avez développées pour les sorties structurées se transfèrent directement : types stricts, énumérations pour les ensembles fermés, descriptions indiquant les unités et les formats, champs requis qui sont réellement requis.

Limites et questions ouvertes

Cette capacité est récente. Quelques précautions avant de reconstruire votre pile d'agents autour de cela :

Vos outils sont désormais une API appelée par le code de quelqu'un d'autre

Avec l'appel de fonction classique, un outil était appelé une fois par aller-retour, avec une boucle écrite par un humain décidant du rythme et de l'ordre. Avec l'appel d'outil programmatique, le code généré appelle vos outils par salves, se ramifie en fonction de leurs réponses, et agrège leur sortie. Chaque outil est un contrat d'API consommé par un client écrit par une machine que vous ne révisez jamais avant son exécution.

Cela élève le niveau d'exigence sur quatre points :

C'est là qu'un véritable établi d'API trouve sa place. Définissez ou importez la spécification de chaque point d'accès d'outil, envoyez des requêtes de test et confirmez que le schéma de réponse correspond à ce que votre définition d'outil promet. Puis allez plus loin : simulez l'API de l'outil afin de pouvoir exercer l'orchestration avec des données factices prévisibles sans toucher à la production. Téléchargez Apidog et son serveur de maquette intégré servira des réponses conformes au schéma pour chaque point d'accès que vous avez défini, afin que vous puissiez donner au modèle une surface d'outils complète et observer comment il orchestre avant de toucher un seul enregistrement réel.

bouton

Les autres fonctionnalités GA en bref

L'appel d'outil programmatique n'est pas arrivé seul. Deux ajouts adjacents à l'API de Réponses sont importants ici :

Les deux se combinent avec l'appel d'outil programmatique : un agent qui conserve son raisonnement entre les tours et écrit sa propre orchestration effectue beaucoup moins de travail redondant par tâche.

Appel d'outil programmatique vs mode Ultra

Le lancement a également apporté le mode Ultra, et les deux sont confondus car ils font tous deux plus par requête. Ils résolvent des goulots d'étranglement différents.

Ultra est un paramètre multi-agents qui exécute quatre agents en parallèle par défaut, dépensant délibérément plus de jetons pour réduire le temps réel ; selon OpenAI, il élève Terminal-Bench 2.1 de 88,8% à 91,9%. Il est disponible dans ChatGPT Work pour les plans Pro et Entreprise, et dans Codex à partir du plan Plus. L'appel d'outil programmatique est une capacité d'API où un agent orchestre ses outils en code. Ultra parallélise la réflexion ; l'appel d'outil programmatique réduit les allers-retours d'exécution. L'analyse complète se trouve dans notre article sur le mode Ultra de GPT-5.6, mais en bref : si votre goulot d'étranglement est la latence des appels d'outils, vous voulez l'appel d'outil programmatique ; si c'est le temps de délibération sur des problèmes difficiles, vous voulez le mode Ultra.

bouton

FAQ

Dois-je réécrire mes définitions d'outils existantes ?

Non. Les outils conservent la même forme de schéma JSON que celle présentée dans le code ci-dessus, et les définitions écrites pour l'appel de fonction classique sont transférables. Le travail utile consiste à les affiner : ajoutez des énumérations, spécifiez les formats et rendez les descriptions suffisamment précises pour que le code généré ne puisse pas les mal interpréter.

Le JavaScript généré peut-il accéder à Internet ?

Non. Le code s'exécute dans un environnement d'exécution V8 isolé sans accès réseau, et vos outils déclarés sont son seul moyen d'affecter quoi que ce soit en dehors du bac à sable. Cela fait de votre surface d'outils l'intégralité du modèle de risque, alors auditez les outils que vous exposez avec la même prudence que vous accorderiez à une API publique.

Quels modèles GPT-5.6 prennent en charge l'appel d'outil programmatique ?

OpenAI le documente comme surface d'API de Réponses pour la famille GPT-5.6, et les trois niveaux (gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna) sont en libre-service pour tout compte API. Vérifiez la référence de l'API pour les détails spécifiques à chaque niveau avant de vous engager sur l'un d'eux. Pour une configuration clé et un premier aperçu des requêtes, consultez comment utiliser l'API GPT-5.6.

En quoi cela diffère-t-il de l'interprète de code ?

L'interprète de code exécute le code comme livrable : analyses, graphiques, transformations de fichiers. L'appel d'outil programmatique génère du code dont le seul travail est de coordonner vos outils déclarés ; le livrable est le résultat agrégé des outils, et non le code lui-même.

Où cela vous mène

La boucle d'aller-retour était la partie la moins intéressante de chaque agent que vous avez déployé, et GPT-5.6 l'a rendue facultative. L'orchestration est passée au modèle ; la responsabilité de disposer d'API d'outils propres, précises et bien conçues vous incombe désormais, avec plus de poids qu'auparavant.

La prochaine étape est concrète. Choisissez un flux de travail à forte lecture, écrivez ou affinez les schémas d'outils dont il a besoin, et soumettez chaque point d'accès au client API et au serveur de maquette d'Apidog jusqu'à ce que le contrat tienne bon sous les appels en rafale et les mauvaises entrées. Lorsque le modèle commencera à écrire du code contre vos outils, vous voudrez que ce code lise à partir d'une surface que vous avez déjà testée.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API