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 testenStrukturierte 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
| Parameter | Typ | Beschreibung |
|---|---|---|
response_format.type | string | "json_schema" für schemagebundene Ausgabe. "json_object" für den freien JSON-Modus. |
response_format.json_schema.name | string | Ein Name für das Schema. |
response_format.json_schema.strict | boolean | true erzwingt das Schema exakt, wo der Provider es unterstützt. |
response_format.json_schema.schema | object | Ein 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_parametersunter Modelle aufstructured_outputsoderresponse_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_reasongleich"length", ist das JSON abgeschnitten. Erhöhen Siemax_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.