Wie migriert man JSON Tool Calling nach dem OpenAI-DevDay-2026-API-Update?
Zuerst die Rückgabe ändern, dann die Modell-ID. Ziel gpt-6-astra oder gpt-6.1-sol heißt: Tool Calling verlässt Chat Completions und nutzt die Responses API. Ein Sprung, der nur klassifiziert oder routet, kann zur Decisions API wechseln, öffentliche Beta seit dem 6. Oktober. Die Abfrage bleibt lookup_order. Das Modell füllt nur JSON. Der Host führt aus.
Vor dem Lesen
| Objekt | Offizielle Tatsache | Was sich bei der Migration ändert |
|---|---|---|
| Endpunkt | Tool Calls von Astra und GPT-6.1 Sol laufen über Responses. Sol und Luna dürfen Funktionen in Chat Completions nur bei reasoning_effort none aufrufen | Nach POST /v1/responses wechseln oder none bewusst behalten |
| Tool-Objekt | Bei Responses steht name neben type. Fehlt strict, wird Strict-Modus versucht; bei Inkompatibilität folgt Rückfall mit strict: false | strict ausdrücklich setzen. Der Host prüft weiter |
| Rückgabe | function_call und function_call_output teilen sich call_id. async: true führt das Tool nicht im Modell aus | role:tool durch function_call_output ersetzen |
| Routing | Decisions ist seit 2026-10-06 öffentliche Beta. Nur gpt-6-luna. Eine choice führt kein Tool aus | Nur den Sprung verschieben, der ein Enum wählt |
Fakten aus den offiziellen Docs, Stand 2026-10-08: Using GPT-6, Migrate to the Responses API, Decisions, Async tool calling. Bestellung A-1042 ist fiktiv. Die Wahrscheinlichkeiten in der Decisions-Probe sind Beispiele.
Zuerst die Form der Rückgabe ändern, dann die Modell-ID
Nach DevDay ist die Migration eine Feldänderung. Sie ist kein weiterer Text darüber, was ein Agent ist. Die offiziellen Hinweise lassen sich auf vier Zeilen bringen. Erstens: Ist das Zielmodell gpt-6-astra oder gpt-6.1-sol, wandert Tool Calling zu Responses. Beide können weiter Chat-Completions-Anfragen ohne Tools senden. gpt-6-sol und gpt-6-luna dürfen Funktionen in Chat Completions nur aufrufen, wenn reasoning_effort none ist. Reasoning plus Tools läuft über Responses. Zweitens: Der Name verlässt das verschachtelte Objekt function und steht neben type. Drittens: Die ID der Rückgabe wandert von tool_calls[].id zu call_id. Viertens: Ein Sprung, der nur klassifiziert oder routet, kann zu Decisions wechseln. Decisions führt kein Tool aus.
- Astra / GPT-6.1 Sol: Tool Calling verlässt
/v1/chat/completions. Bei Responses heißt das Feldreasoning.effort. - Definition flach machen und strict setzen. Chat Completions ist standardmäßig nicht strikt. Responses versucht den Strict-Modus, wenn
strictfehlt. - Routing und Abfrage trennen. Eine
choiceliefert ein Enum. Die Abfrage bleibtlookup_order.
Was am 29. September ausgeliefert wurde: was DevDay 2026 ausgeliefert hat. Wie sich Responses und die Agents API als Einstiege unterscheiden: wie sich Agents API und Responses unterscheiden. Dieser Text schreibt die beiden nicht um. Er mappt nur die Felder einer bestehenden JSON-Tool-Calling-Schleife.
Benennen Sie den Call, den der Code heute liest
In einer Chat-Completions-Antwort sieht ein Call so aus. Die id steht außen. Der name steht in function. arguments ist eine Zeichenkette. Fiktive Bestellung, keine echten Geheimnisse:
{
"id": "call_3c91",
"type": "function",
"function": {
"name": "lookup_order",
"arguments": "{\"order_id\":\"A-1042\"}"
}
}
Ein Responses-Tool setzt name neben type. strict nicht weglassen. Sonst versucht Responses den Strict-Modus. Ein inkompatibles Schema fällt zurück, und das zurückgegebene Tool zeigt strict: false. Für nicht striktes Verhalten false setzen. Der Host prüft arguments vor der Ausführung:
{
"type": "function",
"name": "lookup_order",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"order_id": { "type": "string", "pattern": "^[A-Z]-\\d{4}$" }
},
"required": ["order_id"],
"additionalProperties": false
}
}
Die Rückgabe hängt an call_id
Das Modell liefert ein Item function_call, kein Array tool_calls. Der Parser liest diese vier Felder:
{
"type": "function_call",
"call_id": "call_3c91",
"name": "lookup_order",
"arguments": "{\"order_id\":\"A-1042\"}"
}
Der Host parst arguments, prüft das Schema, führt lookup_order aus und schreibt auf derselben call_id zurück. Ein Fehler ist ebenfalls ein Objekt in der Zeichenkette. Wer den Verlauf von Hand mitschickt, sendet die Reasoning-Items der vorigen Runde und den function_call zusammen mit dem Ergebnis. Nicht nur das Ergebnis. Der kürzere Weg ist previous_response_id:
{
"type": "function_call_output",
"call_id": "call_3c91",
"output": "{\"order_id\":\"A-1042\",\"status\":\"paid\"}"
}
Ein langsames Tool darf async: true an der Definition setzen. Die Docs: Das Modell darf weiter reasoning betreiben oder Teile beantworten, die nicht von diesem Ergebnis abhängen. Das Call-Item trägt async: true. Später senden Sie function_call_output mit der ursprünglichen call_id. Der Host führt das Tool aus. Eingebaute Tools und Programmatic Tool Calling können async nicht nutzen. Im Multi-Agent-Modus async nicht mit parallelen Tool Calls kombinieren. Die Docs nennen GPT-6 Astra und spätere Modelle.
Fünf Schleifen. Nicht zu einem Upgrade zusammenkleben
Migrieren Sie entlang der Rückgabe, die Sie schon haben. Verschiedene Objektnamen brauchen verschiedene Parser:
| Vorhandene Schleife | Wohin sie geht |
|---|---|
| Chat Completions + Tools, Ziel Astra oder GPT-6.1 Sol | Wechsel zu POST /v1/responses. tool_calls[].id wird call_id. name aus function herausheben. |
| Chat Completions + Tools, Verbleib auf gpt-6-sol oder gpt-6-luna | Verbleib nur, solange reasoning_effort none ist. Reasoning plus Tools wechselt zu Responses. |
| Schon ein Responses-function_call | Schleife behalten. Modell-ID tauschen. Astra und GPT-6.1 Sol unterstützen none nicht; low verwenden. Ist der Aufwand nicht none, temperature, top_p und top_logprobs entfernen. |
| Ein Tool, das nur lookup / hold / escalate liefert | Diesen Sprung nach POST /v1/decisions auf gpt-6-luna legen. Die Abfrage bleibt ein function_call. |
| Eine Agents-API-Session | Auf Agents bleiben, wenn Sie das verwaltete Harness wollen. Die Rückgabe bleibt turn_id, nicht function_call_output. |
Der Routing-Sprung nutzt eine Decisions-choice. Die Anfrage folgt der öffentlichen Beta vom 6. Oktober. Die Bestellung ist fiktiv. Den selbst gebauten Antwortvertrag aus dem Text vom 30. September nicht an /v1/decisions POSTen:
{
"model": "gpt-6-luna",
"input": "Order A-1042 is paid. What should the host do next?",
"questions": [{
"type": "choice",
"name": "next_step",
"instructions": "Pick the next host action. Do not invent a tool name.",
"choices": [
{ "value": "lookup", "description": "Read the order. No refund." },
{ "value": "hold", "description": "Stop and wait." },
{ "value": "escalate", "description": "Hand the case to a person." }
]
}]
}
Die Beispielantwort nutzt die offiziellen Choice-Feldnamen. Die Wahrscheinlichkeiten sind fiktiv. Der Host ruft lookup_order erst, wenn choice lookup ist. hold stoppt. escalate geht an einen Menschen. refusal ruft das Tool nicht auf. Die Schwelle setzen Sie. Bilder müssen Inline-Base64-Data-URLs sein. HTTPS-Bild-URLs und file_id nimmt dieser Endpunkt nicht an:
{
"answers": [{
"type": "choice",
"name": "next_step",
"choice": "lookup",
"probabilities": [
{ "value": "lookup", "probability": 0.91 },
{ "value": "hold", "probability": 0.05 },
{ "value": "escalate", "probability": 0.04 }
],
"confidence": 0.88
}]
}
Ultrafast ist service_tier mit dem Wert ultrafast auf gpt-6-astra. Es unterstützt nur US-Datenresidenz und globale Verarbeitung, nicht EU oder andere regionale Endpunkte, und es ändert kein Tool-JSON. Ultrafast für GPT-6.1 Sol stand im Rückblick vom 29. September noch als kommend. Dieser Text schreibt es nicht als ausgeliefert. Am 29. September bekam die Agents API Computer Use in einem von OpenAI gehosteten Browser. Freigaben und Anmeldung bleiben in Ihrer Anwendung. Das ist kein Grund, function_call_output von Responses zu ersetzen. Misalignment-Überwachung kann warnen oder ein Gespräch stoppen. Stoppt eine Runde, denselben Tool Call nicht blind wiederholen.
Sechs Schritte, dann den Verkehr umlegen
Nicht bei Ultrafast anfangen. Die Rückgabe schreiben:
- Die aktuelle Rückgabe benennen. Sie ist
role: toolplustool_call_id, oderfunction_call_output, oder eine Agents-turn_id. Keinen Parser für alle drei teilen. - Den Endpunkt wählen. Tool Calls von Astra und GPT-6.1 Sol gehen nach
POST /v1/responses. Sol und Luna bleiben auf Chat Completions nur mitreasoning_effortgleichnone. - Das Tool flach machen und strict setzen. Nutzt das Schema eine Form, die der Strict-Modus ablehnt,
strict: falsesetzen und die Host-Prüfung behalten. Eine Abfrage nimmt nurorder_id. - call_id angleichen und Sampling-Parameter entfernen.
argumentsbleibt eine Zeichenkette. Bei Astra und GPT-6.1 Solnonedurchlowersetzen. Ist der Aufwand nicht none,temperature,top_pundtop_logprobsentfernen. Bei Chat Completions auchlogprobs. Bei Responsesmessage.output_text.logprobsausincludenehmen. Kommen Sie von GPT-5.5 oder früher,prompt_cache_retentiondurchprompt_cache_options.ttlmit30mersetzen. Um den Aufwand mitten im Gespräch zu ändern, ein Itemconfiguration_updatesenden undreasoning.effortauf Anfrageebene unverändert lassen. - Nur den Enum-Sprung zu Decisions legen. Das Modell ist
gpt-6-luna. Der Host mapptlookupauflookup_order.async: truenur für ein langsames Tool, Rückgabe auf der ursprünglichencall_id. - Die beiden JSON-Payloads diffen, dann umschalten.
argumentsundanswers[].choicegegen das Schema prüfen. Passen sie nicht, die Modell-ID nicht tauschen.
Wie Schema ein Tor ist: Agents API + JSON Schema. Warum das Tor nicht nur im Prompt stehen kann: warum KI JSON Schema braucht. Die Rückgabeform der Agents API: Tool-JSON der Agents API.
Vor dem Umschalten drei JSON-Objekte ausbreiten
Die meisten Fehler sind eine abweichende ID, ein Name, der noch unter function liegt, oder eine choice, die als schon abgefragte Bestellung gilt.
- Den alten Tool Call neben den neuen function_call formatieren, dann mit Schema prüfen prüfen, ob
argumentsundanswers[0].choicedas Tor passieren. - JSONPath extrahieren für
$.call_id,$.nameund$.answers[0].choice. - Die Payload vor und nach dem Umzug JSON Diff.
call_idreparieren, bevor Sie den Prompt umschreiben. - Prüfen, dass
call_3c91auf dem Call und auffunction_call_outputdieselbe ID ist. - Bestellungen, Tokens und Repo-Pfade nicht in einen öffentlichen Formatierer kleben. JSONSort läuft im Browser.
Lassen sich die drei Objekte gegen das Schema neu aufbauen, ist die Migration fertig. Ultrafast ersetzt diese Prüfung nicht.
Häufige Fallen
- Decisions für die neue Tool-Calling-API halten. Es liefert eine
choice, eineprobabilityoder einenscore. Tool-Argumente bleiben Function Calling auf Responses. Ein Objekt nach eigenem Schema nutzt Structured Outputs auf Responses. - Das verschachtelte function-Objekt stehen lassen. Responses liest das alte
function.namenicht. Der Name steht neben type. - strict weglassen und Nicht-Strikt erwarten. Responses versucht den Strict-Modus und markiert bei Rückfall
strict: false. Das gewünschte Verhalten hinschreiben. Die Host-Prüfung bleibt. - none oder temperature auf Astra oder GPT-6.1 Sol lassen. Diese Modelle unterstützen
nonenicht. GPT-6.1 Sol auch nichtminimal.lowverwenden. Ist der Aufwand nicht none, die Sampling-Parameter entfernen. - Eine Responses-Schleife wegen Computer Use in die Agents API schieben. Die Ergänzung vom 29. September ist ein gehosteter Browser. Freigaben bleiben in der App. Die Agents-Rückgabe ist
turn_id. - async: true als Ausführung durch das Modell lesen. Der Host führt aus und merkt sich offene Calls. Später auf der ursprünglichen
call_idzurückschreiben.
FAQ
Muss ich Chat Completions verlassen?
Nutzt die Anfrage Tools und ist das Modell gpt-6-astra oder gpt-6.1-sol, wandern diese Calls zu Responses. Chat Completions kann auf diesen Modellen weiter Anfragen ohne Tools tragen. gpt-6-sol und gpt-6-luna dürfen Funktionen in Chat Completions nur mit reasoning_effort none aufrufen. Reasoning plus Tools nutzt Responses.
Kann Decisions einen function_call ausgeben?
Nein. Es liefert eine typisierte Antwort: eine Predicate-Probability, eine choice oder einen score. Der Host mappt die choice auf eine Funktion, die Sie schon haben. Der Endpunkt der öffentlichen Beta ist POST /v1/decisions, das einzige Modell heute ist gpt-6-luna. OpenAI beschreibt es als etwa 10× schneller als Responses. Das ist Klassifikationsgeschwindigkeit, keine Bestellabfrage.
Was passiert, wenn ich strict weglasse?
Chat Completions ist standardmäßig nicht strikt. Bei Responses versucht das Weglassen von strict den Strict-Modus. Kann das Schema nicht kompatibel gemacht werden, fällt die API zurück und das Tool zeigt strict: false. false ausdrücklich setzen, um nicht striktes Verhalten zu behalten. Der Host prüft arguments in beiden Fällen.
Soll ich die Rückgabe einer Agents-Session ändern?
Nein. Die Agents API ist weiter öffentliche Beta. turn_id behalten. Computer Use ist eine eigene Berechtigung auf einem gehosteten Browser. Die App übernimmt Site-Freigaben und die Anmeldung. Wer jeden Sprung selbst besitzen will, bleibt bei Responses und function_call_output.
Ändert Ultrafast das Tool-JSON?
Nein. Es ist service_tier: ultrafast auf gpt-6-astra, nur mit US-Datenresidenz und globaler Verarbeitung. Tool-Definition, call_id und Schema bleiben. Ultrafast für GPT-6.1 Sol nicht als schon verfügbar schreiben.
Fazit
JSON Tool Calling nach DevDay 2026 zu migrieren heißt, die Rückgabe zu ändern. Tool Calls von Astra und GPT-6.1 Sol nutzen Responses. Der Name steht neben type. Ergebnisse kommen auf call_id zurück. Der Sprung, der nur ein Enum wählt, kann zu Decisions wechseln. Der Host führt die Abfrage aus.
Schreiben Sie auf, ob A-1042 in die arguments von lookup_order geht oder in ein Decisions-input. Zeigen Sie auf call_3c91 und answers[0].choice, bevor Sie den Verkehr umlegen.
Weiterlesen
- Was OpenAI auf DevDay 2026 ausgeliefert hat Die Liste vom 29. September, nicht diese Migrationsschritte
- Agents API vs. Responses API Die beiden Einstiege schreiben verschieden zurück
- OpenAI Agents API und JSON Tool Calling Die Objekte der öffentlichen Beta; dieser Text schreibt sie nicht um
- Agents API + JSON Schema Stabil, prüfbar, ausführbar
- Warum KI JSON Schema braucht Schema ist ein Tor
- JSONSort, lokal im Browser Formatieren, prüfen, Diff, Schema
- Alle Beiträge Weitere Notizen zu JSON und AI-Entwicklung
Änderungsprotokoll: Erstveröffentlichung