Wir verwenden Cookies. Cookies und Browserspeicher halten Sie angemeldet und merken sich Ihre Einstellungen. Mit Ihrer Zustimmung messen wir außerdem, wie die Website genutzt wird. Sie können jederzeit . Siehe unsere Cookie-Richtlinie.

Strukturierte Ausgaben

Endpunkte

Strukturierte Ausgaben

Erzwingen Sie gültiges JSON, das einem JSON Schema entspricht, mit response_format für Extraktion, Klassifizierung und maschinell gelesene Antworten.

Im Playground testen

Strukturierte Ausgaben sorgen dafür, dass ein Modell JSON zurückgibt, das einem von Ihnen vorgegebenen JSON Schema entspricht. Verwenden Sie sie für Extraktion, Klassifizierung und jede Antwort, die Ihr Code parst. Setzen Sie response_format bei Chat Completions (oder text.format bei Responses).

Anfrageparameter

ParameterTypBeschreibung
response_format.typestring"json_schema" für schemagebundene Ausgabe. "json_object" für den freien JSON-Modus.
response_format.json_schema.namestringEin Name für das Schema.
response_format.json_schema.strictbooleantrue erzwingt das Schema exakt, wo der Provider es unterstützt.
response_format.json_schema.schemaobjectEin JSON Schema. Mit strict verwenden Sie additionalProperties: false und führen jede Property in required auf.
{
  "model": "openai/gpt-5-mini",
  "messages": [{ "role": "user", "content": "Extract: Ada Lovelace, born 1815 in London." }],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "person",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "born": { "type": "integer" },
          "city": { "type": "string" }
        },
        "required": ["name", "born", "city"],
        "additionalProperties": false
      }
    }
  }
}
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.chat.completions.create({
  "model": "openai/gpt-5-mini",
  "messages": [
    {
      "role": "user",
      "content": "Extract the city and country from: \"I live in Lisbon, Portugal.\""
    }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "place",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        },
        "required": [
          "city",
          "country"
        ],
        "additionalProperties": false
      }
    }
  }
});
console.log(JSON.parse(result.choices[0].message.content));

Antwort

Das JSON kommt als String in message.content:

{
  "id": "gen-1760000000-json1",
  "model": "openai/gpt-5-mini",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": { "role": "assistant", "content": "{\"name\":\"Ada Lovelace\",\"born\":1815,\"city\":\"London\"}" }
    }
  ],
  "usage": { "prompt_tokens": 71, "completion_tokens": 18, "total_tokens": 89, "cost": 0.0000538 }
}

Die SDK-Helfer funktionieren wie gewohnt, zum Beispiel client.chat.completions.parse(...) mit Zod in Node oder Pydantic in Python.

Modellunterstützung

  • Um Modelle zu finden, die es unterstützen, prüfen Sie supported_parameters unter Modelle auf structured_outputs oder response_format.
  • Damit die Anfrage nur an Provider geht, die das Schema einhalten, fügen Sie provider: { "require_parameters": true } hinzu.
  • Modelle ohne native Unterstützung liefern möglicherweise trotzdem JSON, wenn Sie es im Prompt verlangen, die Ausgabe ist aber nicht garantiert. Validieren Sie sie immer.
  • Ist finish_reason gleich "length", ist das JSON abgeschnitten. Erhöhen Sie max_tokens.

Fehler

Ein ungültiges Schema liefert meist ein Upstream-400 mit der Meldung des Providers. Andere Fehler entsprechen denen von Chat Completions. Siehe Fehler.