Endpointy
Ustrukturyzowane wyjście
Wymuś poprawny JSON zgodny ze schematem JSON Schema za pomocą response_format w chat completions i text.format w Responses API.
Wypróbuj w playgroundUstrukturyzowane wyjście sprawia, że model zwraca JSON zgodny ze schematem JSON Schema, który podasz. Używaj go do ekstrakcji danych, klasyfikacji i każdej odpowiedzi parsowanej przez Twój kod. Ustaw response_format w Chat completions (lub text.format w Responses).
Parametry żądania
| Parametr | Typ | Opis |
|---|---|---|
response_format.type | string | "json_schema" dla wyjścia ograniczonego schematem. "json_object" dla swobodnego trybu JSON. |
response_format.json_schema.name | string | Nazwa schematu. |
response_format.json_schema.strict | boolean | true wymusza dokładne przestrzeganie schematu tam, gdzie dostawca to obsługuje. |
response_format.json_schema.schema | object | Schemat JSON Schema. Przy strict użyj additionalProperties: false i wymień wszystkie właściwości w required. |
{
"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));
Odpowiedź
JSON przychodzi jako ciąg znaków w 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 }
}
Pomocniki SDK działają jak zwykle, na przykład client.chat.completions.parse(...) ze Zod w Node lub Pydantic w Pythonie.
Obsługa przez modele
- Aby znaleźć modele, które to obsługują, sprawdź w
supported_parametersw Modelach obecnośćstructured_outputslubresponse_format. - Aby żądanie trafiało tylko do dostawców przestrzegających schematu, dodaj
provider: { "require_parameters": true }. - Modele bez natywnej obsługi mogą nadal zwrócić JSON, jeśli poprosisz o niego w prompcie, ale wynik nie jest gwarantowany. Zawsze go waliduj.
- Jeśli
finish_reasonma wartość"length", JSON jest obcięty. Zwiększmax_tokens.
Błędy
Nieprawidłowy schemat zwykle kończy się błędem 400 od dostawcy z jego komunikatem. Pozostałe błędy są takie same jak w Chat completions. Zobacz Błędy.