Guide
Guide développeur OpenAI DevDay 2026 : quelles évolutions possibles pour Responses API, Structured Outputs, Tool Calling et MCP ?
La keynote ne modifiera pas votre dépôt. Ce que vous pouvez faire maintenant : ramener la sortie finale, les arguments d’outils, le MCP inputSchema et les items de session dans un seul contrat vérifiable.
OpenAI DevDay 2026 se tient le 29 septembre au Fort Mason de San Francisco. La page officielle ne promet qu’une journée technique sur les API et les outils développeur : keynote du matin en direct (avec Sam Altman), breakouts l’après-midi, enregistrements ensuite. Les candidatures ont fermé en juillet. L’article du 2 septembre listait dix prévisions d’après le changelog — calendrier Completions, Ultrafast, identité entreprise, parité Realtime ; voir prévisions API DevDay 2026. Celui-ci est le manuel : quatre lignes qui changent la forme de votre code — Responses API, Structured Outputs, Tool Calling, MCP — et les fichiers Schema que vous pouvez figer cette semaine. Les prévisions se trompent ; les contrats séparés, non. Les faits restent ceux du OpenAI API Changelog : Assistants s’est arrêté pour de bon le 26 août ; GPT-5.6 a placé le Programmatic Tool Calling et l’orchestration multi-agent sur Responses ; MCP distant, Skills, Computer Use et Tool Search n’apparaissent presque jamais sur Chat Completions.
Comment utiliser ce guide : le partage des rôles avec l’article de prévisions
L’article de prévisions répond à « ce que la scène pourrait dire ». Ce guide répond à « quels JSON appartiennent au dépôt cette semaine ». Les deux suivent la même trajectoire 2026 ; l’action du lecteur change. Servez-vous du premier pour suivre la keynote. Servez-vous du second pour figer un arbre schemas/. Ne réécrivez pas le produit pour une prévision. DevDay invente rarement une surface : il fait passer les previews en produit, retire les mentions Beta, et transforme les listes blanches entreprise en réglages par défaut.
Séparez d’abord les faits des hypothèses. Déjà vrai : Responses est le chemin capable d’Agent ; Structured Outputs fige l’objet final avec text.format.json_schema + strict ; les function tools et le MCP distant peuvent partager un même responses.create ; MCP demande une approbation par défaut (mcp_approval_request) et se resserre avec require_approval / allowed_tools. Rien de cela n’est une prévision. Ce qui peut être annoncé : une date d’arrêt, un tampon GA, un interrupteur en libre-service, et une façon officielle de déclarer deux Schema de même origine.
La question utile n’est pas « GPT-5.7 va-t-il apparaître », mais : quelle surface de requête devient le seul chemin recommandé ? Quel JSON Schema passe de suggestion du modèle à contrainte plateforme ? Quel état de session quitte votre base pour les Conversations officielles ? La carte :
| Document | Ce qu’il répond | Ce que vous faites maintenant |
|---|---|---|
| Article de prévisions DevDay (2 septembre) | Probabilités et preuves pour dix directions API | Suivre la keynote ; ne pas réorganiser le dépôt |
| Ce guide (15 septembre) | Quatre lignes + les fichiers Schema à figer | Cette semaine, séparer schemas/tools, output, mcp, session |
| Article de migration Assistants | Comment Thread / Run passent sur Responses | Supprimer beta.threads ; traiter les items de session comme un contrat |
| Changelog / docs officielles | Ce qui est GA, déprécié ou en preview | Les faits viennent des docs, pas d’un résumé sur les réseaux |
Responses API : la surface de requête qui peut se resserrer
Assistants est déjà mort. Chat Completions est encore vivant, mais les capacités 2026 n’y atterrissent presque plus : MCP distant, Tool Search, Computer Use, Skills, hosted shell, WebSocket Responses et phase (commentary / final_answer) sont tous accrochés à Responses. Les prompts réutilisables n’ont jamais rejoint Chat Completions. Ce n’est pas une question de goût : la plateforme resserre la surface capable d’Agent en une seule. Pour le passage des objets Assistant / Thread / Run, voir migration Assistants → Responses.
Ce que DevDay a le plus de chances de trancher n’est pas « encore un paramètre Responses », mais une partie de ces trois : une date de gel ou d’arrêt pour Chat Completions ; Conversations comme primitif de session commun aux Responses texte et à Realtime ; davantage d’image, de transcription et de vidéo sous forme d’outils intégrés sur la même timeline d’output items. Pour vous : les nouveaux wrappers ne parlent que des items input / output, de tools[], de text.format, et de previous_response_id ou conversation. Ne maintenez plus deux formes de tools[].
Les métadonnées de requête se resserrent aussi. Fast a déjà remplacé Priority ; Ultrafast reste une preview limitée. Écrivez dès maintenant service_tier, prompt_cache_retention et safety_identifier comme champs explicites, pas comme valeurs par défaut du SDK. Après la keynote, vous rapprocherez factures, hits de cache et blocages safety sur ces clés — pas sur le nom du modèle. Le squelette ci-dessous est légal aujourd’hui et le restera très probablement : function tools, MCP distant et Structured Output sur un seul responses.create.
{
"model": "gpt-5.6-sol",
"input": "Extract the paid invoice and call billing tools",
"tools": [
{
"type": "function",
"name": "searchInvoices",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"invoiceId": { "type": "string" },
"status": {
"type": "string",
"enum": ["draft", "sent", "paid", "void"]
}
},
"required": ["invoiceId", "status"],
"additionalProperties": false
}
},
{
"type": "mcp",
"server_label": "billing",
"server_url": "https://mcp.example.com",
"allowed_tools": ["searchInvoices", "createCreditNote"],
"require_approval": "never"
}
],
"text": {
"format": {
"type": "json_schema",
"name": "invoice_result",
"strict": true,
"schema": {
"type": "object",
"properties": {
"invoiceId": { "type": "string" },
"total": { "type": "number" },
"currency": { "type": "string", "enum": ["USD", "CNY", "EUR"] },
"status": { "type": "string", "enum": ["paid", "open"] }
},
"required": ["invoiceId", "total", "currency", "status"],
"additionalProperties": false
}
}
},
"service_tier": "fast",
"safety_identifier": "billing-user-42"
}
Structured Outputs : forme, streaming et Schema d’origine commune
Aujourd’hui, Structured Outputs peut figer l’objet final : dans Responses, il vit sous text.format, mêmes règles que le response_format de Chat Completions, noms de champs différents. L’argument officiel : sûreté de typage, refus détectables, moins de prompts du type « merci d’émettre du JSON ». Il ne vend pas le sens : figer la forme n’est pas figer la sémantique métier. Chaînes de stream tronquées, $ref abandonnés en silence, Schema trop gros, énumérations dynamiques : ce sont encore les pièges d’intégration 2026. Le tutoriel Structured Output et le guide des erreurs JSON IA disaient la même chose : la plateforme garantit les accolades, pas le total d’une facture.
Le trio de douleurs développeur qu’une keynote aime : ① Structured Outputs en streaming, dont les deltas sont des objets partiels légaux ou un JSON Patch, pas des chaînes cassées ; ② une façon officielle de déclarer Tool Schema et Output Schema de même origine, pour cesser de maintenir deux jumeaux à la main ; ③ un sous-ensemble JSON Schema plus complet — moins de silent drop de oneOf / $ref. La probabilité est plus basse qu’un arrêt Completions, mais si cela sort, votre parseur de stream et votre répertoire Schema seront nommés dès le premier jour.
Ce que vous pouvez faire ne dépend pas de la scène : séparez schemas/output/ et schemas/tools/ ; chaque Schema de sortie en Draft 2020-12, strict + additionalProperties: false, liste required complète ; le même fichier pour la plateforme et le validateur local. Quand les erreurs plateforme et locales divergent, Différez les deux Schema avant d’accuser le modèle. L’objet remis à l’utilisateur ou à un système aval ne doit pas partager un fichier avec un checkpoint ni avec les MCP arguments — voir AI Agent State.
Tool Calling : appels programmables et multi-agent
En 2026, le Tool Calling n’est plus « le modèle choisit une fonction, vous l’exécutez une fois, vous renvoyez une chaîne ». Le 9 juillet, GPT-5.6 a ajouté Programmatic Tool Calling, le Prompt Cache explicite, persisted reasoning et l’orchestration multi-agent (Beta) dans Responses. Le modèle peut enchaîner des outils selon une structure de programme, et traiter les sous-agents comme des objets de premier rang. Le destin typique d’une Beta : au DevDay, on retire le disclaimer, on ajoute SLA et plafonds.
S’il passe en GA, votre orchestrateur doit redessiner la frontière : quels hops appartiennent à l’orchestration plateforme, lesquels restent dans votre boucle. Une nouvelle famille JSON apparaît — les artifacts intermédiaires des sous-agents. Ne les fourrez pas dans le même fichier que le Structured Output final ou les MCP arguments. Tamponnez dès maintenant correlationId / runId / callId sur chaque journal d’outil, pour pouvoir rapprocher le jour du GA. Les arguments des function tools restent souvent une chaîne JSON : JSON.parse + Schema avant d’exécuter — même classe de problème que MCP tools/call.
Tool Search, Skills et hosted shell ne vivent déjà que sur Responses. Si DevDay fait de « chercher puis appeler » le défaut, vous regretterez d’avoir fourré 80 fonctions d’un coup dans tools[]. Découpez les packs d’outils par domaine ; réutilisez une liste blanche style allowed_tools aussi côté function tools. Gardez les Schema de paramètres petits, les énumérations courtes, et interdisez additionalProperties. Détails dans MCP et JSON Schema.
MCP : outils distants, approbations et Connector
Depuis GPT-5.5, Responses peut accrocher un MCP distant : le modèle émet d’abord mcp_list_tools, puis choisit l’appel. La console a des Connector maintenus par OpenAI ; le Secure MCP Tunnel du 19 mai laisse ChatGPT, Codex, Responses et AgentKit atteindre l’intranet via un tunnel-client côté client — pour l’instant plutôt une ouverture entreprise. Retenez le défaut : la plateforme demande une approbation avant que les données partent vers le distant, et mcp_approval_request apparaît en sortie ; une fois le serveur de confiance, mettez require_approval sur une partie des outils ou à never. Trop d’outils : utilisez allowed_tools, sinon le seul list brûle déjà le contexte.
Le trou est clair : un projet ordinaire ne peut toujours pas « accrocher un MCP privé en un clic », et le catalogue Connector ne couvre pas assez les outils maison. L’article de prévisions a classé « Hosted MCP / Connector en libre-service, Tunnel descendu en interrupteur de projet » comme haute probabilité. Ce guide n’exige qu’un geste indépendant des probabilités : le MCP Tool.inputSchema et les tools[].parameters du modèle doivent être de même origine. Les noms de champs d’enveloppe peuvent différer ; propriétés, required et énumérations doivent venir d’un seul fichier source. La plateforme ne fera pas la validation d’exécution à la place du Server. La chaîne reste parse → Schema → règles métier. Le MCP distant est du JSON-RPC sans état ; la position métier n’habite pas le Server — voir MCP sans état.
Ne mélangez pas avec A2A. MCP, c’est le modèle qui appelle un outil ; A2A, c’est la délégation latérale entre agents, avec son propre cycle de vie de tâche et ses artifacts. OpenAI consomme déjà MCP à la couche modèle ; la délégation latérale reste un trou. Si DevDay cite AAIF / A2A, ce n’est que de l’interop — pas une raison de fusionner Agent Card et inputSchema en un seul objet. Comparer A2A vs MCP. Quand les arguments d’un outil privé ne collent plus aux MCP params.arguments, le Diff vise la chaîne de génération, pas l’humeur du modèle.
Six JSON Schema à figer dès maintenant
Ne misez pas sur un JSON unique géant. Découpez par consommateur : le modèle lit la forme de sortie, le runtime lit les arguments d’outils, le MCP Server lit inputSchema, l’orchestrateur lit les items de session et les produits des sous-agents, le journal lit l’usage. Six fichiers couvrent les surfaces que DevDay a le plus de chances de toucher. Sources en Draft 2020-12 ; quand vous générez une enveloppe OpenAI (text.format / parameters), n’ajoutez que l’emballage — ne changez pas les propriétés.
| Fichier | Ce qu’il fige | Qui le lit | Un paramètre de plus sur scène l’annule-t-il ? |
|---|---|---|---|
| schemas/output/invoice_result.json | Objet Structured Output final | Responses text.format / validateur local | Non. strict + additionalProperties:false reste juste |
| schemas/tools/searchInvoices.json | parameters des function tools | Responses tools[] / parse côté exécution | Non. L’orchestration GA ne change pas la forme des entrées |
| schemas/mcp/searchInvoices.json | MCP Tool.inputSchema (même origine que la ligne du dessus) | MCP Server et tools/call | Non. Le Hosted MCP en libre-service ne change que l’ouverture |
| schemas/session/conversation-item.json | Type union Conversations / output item | Export, rejeu, conformité | Des champs peuvent s’ajouter ; figez d’abord l’enum type |
| schemas/agent/child-artifact.json | Enveloppe des produits intermédiaires d’un sous-agent | Orchestrateur multi-agent | Non. Beta→GA a encore plus besoin d’un fichier séparé |
| schemas/obs/usage-record.json | usage + cache + safety + request_id | Journal et rapprochement | Non. Un nouveau tableau de bord doit mapper vos clés déjà stockées |
Gardez dans le dépôt un index qui dit quels deux fichiers sont de même origine, et lequel n’est qu’un emballage. L’index est du JSON ordinaire, facile à relire et à passer au Diff :
{
"schemaVersion": "1.0",
"pack": "devday-2026-prep",
"files": [
{
"id": "so.invoice_result",
"path": "schemas/output/invoice_result.json"
},
{
"id": "fn.searchInvoices.parameters",
"path": "schemas/tools/searchInvoices.json"
},
{
"id": "mcp.searchInvoices.inputSchema",
"path": "schemas/mcp/searchInvoices.json",
"sameOriginAs": "fn.searchInvoices.parameters"
},
{
"id": "conv.item",
"path": "schemas/session/conversation-item.json"
},
{
"id": "agent.artifact",
"path": "schemas/agent/child-artifact.json"
},
{
"id": "obs.usage",
"path": "schemas/obs/usage-record.json"
}
]
}
La boucle d’intégration reste trois pas, que le modèle soit ou non « plus intelligent » sur scène : parse → Schema → règles métier. Gardez un échantillon d’échec réel pour le JSON tronqué, l’erreur Schema, et la dérive des MCP arguments. Le jour de l’annonce, vous Différez le nouveau comportement contre ces fixtures — pas contre un résumé sur les réseaux.
Dans le navigateur : formateur JSON pour le parse ; Validateur JSON Schema pour output et tools ; JSON Diff pour comparer les arguments du modèle et MCP params.arguments. Les données ne quittent pas la machine.
Pour aller plus loin : 10 prévisions DevDay, migration Assistants → Responses, Structured Output, MCP et JSON Schema, MCP sans état, A2A vs MCP.
FAQ
Est-ce l’agenda officiel ?
Non. Officiellement, seuls la date, le lieu et une journée technique « API / outils développeur » sont publiés. Les « évolutions possibles » sur les quatre lignes sont un jugement d’ingénierie d’après le changelog 2026. La salle peut n’en livrer qu’une partie — ou passer l’heure sur les modèles et Codex. La liste de Schema ne dépend pas de l’agenda.
En quoi cela diffère-t-il de l’article de prévisions du 2 septembre ?
L’article de prévisions couvre dix directions (y compris les niveaux, l’identité, l’observabilité, le multimodal). Celui-ci n’ouvre que les quatre lignes qui changent la forme JSON, et nomme six fichiers à figer. Lisez-les ensemble : les prévisions regardent la scène ; le guide change le dépôt.
Toujours sur Chat Completions — trop tard ?
Non, et migrer maintenant coûte moins que la semaine après une date d’arrêt. Déplacez d’abord Tool Calling et Structured Outputs, puis branchez Conversations. N’attendez pas la keynote pour bâtir le wrapper. Les étapes sont dans l’article Assistants — un wrapper Completions peut suivre le même modèle d’items.
Si les prévisions se trompent, les Schema préparés sont-ils perdus ?
Non. Séparer output, tools, MCP, session, artifact et usage en fichiers est une hygiène dont Responses, MCP et Realtime ont déjà besoin. Un paramètre de plus sur scène ne rend pas additionalProperties:false faux.
Synthèse et suite
Ce qui compte vraiment pour un développeur au DevDay 2026, ce n’est pas un nom de modèle de plus. C’est de savoir si la plateforme resserre Responses, Structured Outputs, Tool Calling et MCP en pile par défaut. Les quatre lignes disent la même chose : moins d’API parallèles, davantage de JSON à honorer pour de bon.
Avant le 29 septembre, arrêtez le nouveau code Completions, séparez les six Schema, gardez les échantillons d’échec. Le jour J, lisez le changelog — pas un fil de résumé. Pour vérifier une forme de réponse, ouvrez JSONVue.