Claude und OpenAI haben je einen eigenen Weg vorgestellt, um Modelle zu gültigem JSON zu zwingen — so unterscheiden sie sich
Beide Anbieter bieten inzwischen einen strikten Modus, der schema-konforme Ausgaben garantiert, statt darauf zu hoffen, dass das Modell richtig formatiert. Die Einrichtungsregeln sind konkret, und OpenAIs offizielle Empfehlung begrenzt weiterhin, wie viele Tools man dem Modell auf einmal mitgibt.
Kurze Antwort
Wie empfehlen Claude und OpenAI, strukturierte Ausgaben zu erhalten, die man nicht validieren und erneut anfordern muss?
Beide bieten einen strikten Modus: bei Claude `strict: true` in einer Tool-Definition, bei OpenAI Structured Outputs mit `strict: true` im Response-Format. OpenAI verlangt `additionalProperties: false` sowie die Auflistung jedes Felds als erforderlich, wobei optionale Felder stattdessen als nullable definiert werden, statt sie wegzulassen. Beide Anleitungen warnen zudem, dass vage Funktionsbeschreibungen und zu viele verfügbare Tools die Genauigkeit unbemerkt senken.
Das Wichtigste
- Sowohl Structured Outputs auf OpenAIs Seite als auch die strikte Tool-Nutzung auf Claudes Seite garantieren Schema-Konformität — der ältere „JSON-Modus“ tut das nicht und kann weiterhin fehlerhafte Ausgaben liefern.
- OpenAIs striktes Schema verlangt `additionalProperties: false` und jedes Feld in `required`; es gibt kein optionales Feld, das aus dieser Liste weggelassen wird — stattdessen macht man es nullable.
- OpenAIs eigene Empfehlung rät, die Zahl der verfügbaren Funktionen zu Beginn eines Turns unter 20 zu halten, weil jede Definition als Input-Token zählt und mehr Auswahl die Genauigkeit senkt.
- Claude dokumentiert eine reale Zuverlässigkeitslücke zwischen den Modellen: Fehlt ein erforderlicher Parameter im Prompt, fragt Opus eher nach; Sonnet rät eher einen plausiblen Wert.
- Beide Plattformen berechnen Tool- bzw. Funktionsdefinitionen bei jedem Aufruf als gewöhnliche Input-Token, und Claude veröffentlicht den genauen Token-Mehraufwand pro Modell.
Ein LLM dazu zu bringen, eine Funktion aufzurufen oder JSON zurückzugeben, hat bisher meistens funktioniert — und das ist ein schlimmeres Problem, als wenn es nie funktionieren würde. Die Ausfälle zeigen sich stromabwärts, in einem Parser, der beim zehntausendsten Aufruf abstürzt, nicht bei den neunundneunzig Fällen, die man von Hand getestet hat. Sowohl Claude als auch OpenAI veröffentlichen inzwischen einen Modus, der das „meistens“ aus diesem Satz streicht, und die offiziellen Einrichtungsregeln sind bei beiden konkret genug, um sie direkt zu befolgen, statt sie zu erraten.
Strikter Modus, auf beiden Seiten
Claudes Variante: strict: true zu einer benutzerdefinierten Tool-Definition hinzufügen, und Claudes Tool-Aufruf entspricht garantiert dem Schema. OpenAIs Variante, Structured Outputs genannt, wird über text: { format: { type: "json_schema", strict: true, schema: … } } eingestellt. OpenAI beschreibt dies ausdrücklich als Nachfolger des älteren „JSON-Modus“ — der JSON-Modus garantierte nie, dass das Schema tatsächlich eingehalten wurde, Structured Outputs tut das.
Die Funktionsbeschreibung für Fremde schreiben
OpenAIs eigener Rat lautet, Funktionsnamen, Parameterbeschreibungen und Nutzungshinweise so klar zu formulieren, dass der sogenannte „Praktikanten-Test“ besteht: Eine neue Mitarbeiterin oder ein neuer Mitarbeiter sollte die Funktion allein anhand der Dokumentation korrekt nutzen können, ohne weiteren Kontext. Dazu gehört, im System-Prompt explizit anzugeben, wann eine Funktion aufgerufen werden soll und wann nicht — mit Beispielen für Grenzfälle, nicht nur für die offensichtlichen Anwendungsfälle.
Weniger Tools, bessere Genauigkeit
Es ist verlockend, dem Modell jedes verfügbare Tool mitzugeben und es selbst entscheiden zu lassen, welches passt. OpenAIs Empfehlung widerspricht dem ausdrücklich: Die Zahl der verfügbaren Funktionen zu Beginn eines Turns bei etwa 20 oder darunter halten, für höhere Genauigkeit — und bedenken, dass jede Funktionsdefinition als Input-Token zählt, unabhängig davon, ob sie in diesem Turn tatsächlich genutzt wird. Wird eine Reihe von Funktionen immer in derselben Abfolge aufgerufen, schlägt OpenAI vor, sie zu einer einzigen Operation zusammenzuführen, statt das Modell jedes Mal darauf zu verlassen, mehrere Aufrufe korrekt zu verketten.
Claudes Modelle scheitern nicht auf die gleiche Weise
Claudes Dokumentation enthält einen konkreten, modellspezifischen Hinweis zur Zuverlässigkeit, den man besser einplant, als ihn erst im Produktivbetrieb zu entdecken: Fehlt ein erforderlicher Parameter in dem, was die Nutzerin oder der Nutzer tatsächlich eingegeben hat, bemerkt Opus die Lücke deutlich häufiger und stellt eine Rückfrage, während Sonnet eher einen plausiblen Wert selbst ableitet — etwa einen Standort rät, statt nachzufragen, welcher gemeint ist. Das ist in keine der beiden Richtungen garantiertes Verhalten, aber es ist die Tendenz, die jedes Modell zeigt, und sie verstärkt sich bei mehrdeutigen Prompts mit einem weniger leistungsfähigen Modell.
Den Aufruf erzwingen und mehrere gleichzeitig ausführen
Beide Plattformen erlauben es, die Standardentscheidung von Claude oder OpenAI darüber, ob überhaupt ein Tool genutzt wird, zu umgehen. Claude bietet dafür tool_choice, um einen Aufruf zu erzwingen, statt beim Standard {"type": "auto"} zu bleiben. OpenAI unterstützt paralleles Funktionsaufrufen bei GPT-5 und neueren Modellen für seine integrierten Tools sowie parallel_tool_calls: false, falls man gezielt höchstens einen Aufruf pro Turn möchte — integrierte Tools lassen sich dabei unabhängig von dieser Einstellung nicht zu einer parallelen Gruppe bündeln.
Datum prüfen. OpenAIs eigene Dokumentation empfiehlt gpt-5.6 für neue Structured-Outputs-Projekte und merkt an, dass die Tool-Suche erst ab gpt-5.4 verfügbar ist; Claudes Token-Mehraufwand für Tool-Nutzung wird pro aktueller Modellgeneration veröffentlicht. Beide Werte ändern sich mit jedem neuen Modell — die verlinkten Seiten direkt lesen, statt die obigen Zahlen als dauerhaft zu betrachten.
Häufige Fragen
- Ist Structured Outputs dasselbe wie der ältere JSON-Modus?
- Nein. OpenAI beschreibt Structured Outputs als Weiterentwicklung des JSON-Modus: Der JSON-Modus garantiert nicht, dass das Schema eingehalten wird, Structured Outputs schon. OpenAIs eigene Vergleichstabelle empfiehlt den älteren JSON-Modus nur für Modelle vor gpt-4o-2024-08-06.
- Was verlangt der strikte Modus konkret vom Schema?
- Bei OpenAI: `additionalProperties: false` bei jedem Objekt sowie jede Eigenschaft in `required` aufgeführt — optionale Felder werden statt aus der Required-Liste gestrichen als nullable ausgedrückt. Bei Claude: das Hinzufügen von `strict: true` zur Tool-Definition.
- Hilft eine größere Zahl verfügbarer Tools dem Modell immer?
- Nein. OpenAIs Empfehlung rät ausdrücklich, unter etwa 20 verfügbaren Funktionen pro Turn zu bleiben, um die Genauigkeit zu wahren, und weist darauf hin, dass jede Definition als Input-Token abgerechnet wird, unabhängig davon, ob sie in diesem Turn genutzt wird.
- Kann ich das Modell einfach zwingen, ein bestimmtes Tool aufzurufen?
- Ja, bei beiden Plattformen. Claude bietet dies über den Parameter `tool_choice`, dokumentiert unter dem erzwungenen Tool-Einsatz; OpenAIs Einstellung `parallel_tool_calls: false` lässt sich zudem mit einer expliziten Tool-Wahl kombinieren, um genau einen Aufruf zu erzwingen.
Quellen
- Tool use with Claude — Anthropic
- Function calling — OpenAI
- Structured model outputs — OpenAI
- Introduction to Structured Outputs — OpenAI