max_tokens abgeschnitten, enthält ein nachgestelltes Komma oder ist in einen Markdown-Codeblock eingebettet. Auf Anwendungsseite müssen dafür in der Regel Wiederholungs- oder manuelle Reparaturlogiken geschrieben werden.
Die Reparatur strukturierter Ausgaben (Structured Output Repair) ist eine Fähigkeit auf Key-Ebene und standardmäßig deaktiviert. Ist sie aktiviert, repariert das AIHubMix-Gateway bei nicht-streamenden Anfragen, die eine strukturierte JSON-Ausgabe deklarieren, ein vom Modell zurückgegebenes JSON mit Formatfehlern vor der Rückgabe automatisch zu parsbarem, gültigem JSON; der Client-Code muss dafür nicht geändert werden.
Dieser Schalter ist standardmäßig deaktiviert; solange er nicht aktiviert ist, werden alle Antworten unverändert zurückgegeben. Der Schalter wird pro Key einzeln konfiguriert und wird nach dem Aktivieren sofort wirksam.
Zur Key-Verwaltungsseite wechseln und konfigurieren
Erstellen oder bearbeiten Sie einen Key und aktivieren Sie den Schalter „Reparatur strukturierter Ausgaben” (Structured Output Repair).

1. Voraussetzungen für die Wirksamkeit
Die Reparatur erfolgt nur, wenn alle folgenden Bedingungen erfüllt sind:- Für den in der Anfrage verwendeten Key ist „Reparatur strukturierter Ausgaben” aktiviert.
- Die Anfrage ist nicht-streamend (
stream: trueist nicht gesetzt). - Die Anfrage deklariert eine strukturierte JSON-Ausgabe (die Deklarationsfelder der einzelnen Protokolle siehe folgende Tabelle).
- Der vom Modell zurückgegebene Textinhalt lässt sich nicht als JSON parsen.
| Protokoll | Endpunkt | Deklarationsfeld für strukturierte Ausgabe |
|---|---|---|
| Chat Completions | /v1/chat/completions | response_format.type ist json_object oder json_schema |
| Responses | /v1/responses | text.format.type ist json_schema oder json_object |
| Claude Messages | /v1/messages | output_config.format.type ist json_schema |
| Gemini | /gemini/v1beta/models/{model}:generateContent | generationConfig.responseMimeType ist application/json, oder responseSchema ist gesetzt |
2. Reparierbare Formatfehler
Nicht geschlossene Klammern / Anführungszeichen durch abgeschnittene Ausgabe (z. B.finish_reason ist length):
Vorher
Nachher
Vorher
Nachher
Vorher
Nachher
Vorher
Nachher
Vorher
Nachher
Vorher
Nachher
- Die Reparatur vervollständigt oder normalisiert ausschließlich die JSON-Syntax; Zahlenwerte und Zeichenketteninhalte bleiben im Originaltext erhalten, es kommt zu keinem Präzisionsverlust und keiner Umschreibung.
- Das Reparaturergebnis muss ein gültiges JSON-Objekt oder -Array sein und darf sich nur in einem angemessenen Rahmen vom Original unterscheiden; ist eine dieser Bedingungen nicht erfüllt, wird die Reparatur verworfen und der Originalinhalt unverändert zurückgegeben.
3. Wie erkennen Sie, dass eine Antwort repariert wurde
Bei einer Reparatur gibt es zwei programmatisch abrufbare bzw. einsehbare Signale:- Response-Header
X-JSON-Repaired: true(dieser Response-Header fehlt, wenn keine Reparatur stattgefunden hat). - Notiz im Aufrufprotokoll: Auf der Seite mit den Aufrufprotokollen zeigt die Notizspalte der entsprechenden Anfrage
This request gateway automatically corrected the JSON format issue in the model output.an.
4. Vollständiges Beispiel
Am Beispiel der Generierung von Produktinformationen: Die Anfrage deklariert die strukturierte Ausgabe überjson_schema; ist der Schalter aktiviert, lässt sich der erhaltene content auch dann direkt parsen, wenn die Modellausgabe die oben genannten Formatfehler aufweist:
max_tokens auf einen kleinen Wert (z. B. 80) setzen, sodass die Ausgabe abgeschnitten wird: Das finish_reason der Antwort ist dann length, der content ist das reparierte, gültige JSON, und der Response-Header enthält X-JSON-Repaired: true.
5. Grenzen und Hinweise
- Syntaxreparatur: Ob Feldnamen und Feldtypen Ihrem Schema entsprechen, muss weiterhin auf Anwendungsseite validiert werden.
- Parameter von Tool-Calls fallen nicht in den Reparaturbereich: Das Parameter-JSON von
tool_calls/function_callwird nicht repariert; Tool-Parameter sollten vor der Ausführung stets auf Anwendungsseite validiert werden. - Ausgaben mit mehreren Textblöcken werden nicht repariert: Enthält die Modellausgabe mehrere Textblöcke (z. B. wenn Gemini mehrere
partszurückgibt), wird sie unverändert zurückgegeben. - Reasoning-Inhalte bleiben unberührt: Reasoning-Texte wie
reasoning_contentoder der Thought-Teil von Gemini nehmen nicht an der Reparatur teil.
FAQ
Verändert die Reparatur die Zahlenwerte oder Texte im zurückgegebenen Inhalt? Nein. Die Reparatur vervollständigt oder normalisiert ausschließlich die JSON-Syntax (Ergänzen schließender Klammern, Entfernen nachgestellter Kommas, Normalisieren von Anführungszeichen, Entfernen von Codeblock-Markierungen); Zahlenwerte und Zeichenketteninhalte bleiben im Originaltext der Modellausgabe erhalten. Wirkt sich das Aktivieren des Schalters auf normale Anfragen aus, die keine strukturierte Ausgabe deklarieren? Nein. Anfragen, die keine Felder für strukturierte Ausgabe wieresponse_format deklarieren, sowie alle streamenden Anfragen werden unverändert zurückgegeben.
Verursacht die Reparatur zusätzliche Kosten oder verändert sie den Token-Verbrauch?
Nein. Token-Verbrauch und Abrechnung werden nach der ursprünglichen Modellausgabe berechnet; der Reparaturvorgang verursacht keine zusätzlichen Kosten.
Entspricht das reparierte JSON garantiert dem von mir definierten Schema?
Die Reparatur garantiert, dass sich der Inhalt als JSON parsen lässt; ob Feldnamen und Feldtypen dem Schema entsprechen, hängt von der Modellausgabe selbst ab. Es wird empfohlen, die Schema-Validierung auf Anwendungsseite weiterhin beizubehalten.