Używamy plików cookie. Pliki cookie i pamięć przeglądarki pozwalają utrzymać logowanie i zapamiętać Twoje preferencje. Za Twoją zgodą mierzymy też, jak korzystasz ze strony. W każdej chwili możesz . Zobacz naszą politykę cookie.

Ustrukturyzowane wyjście

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 playground

Ustrukturyzowane 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

ParametrTypOpis
response_format.typestring"json_schema" dla wyjścia ograniczonego schematem. "json_object" dla swobodnego trybu JSON.
response_format.json_schema.namestringNazwa schematu.
response_format.json_schema.strictbooleantrue wymusza dokładne przestrzeganie schematu tam, gdzie dostawca to obsługuje.
response_format.json_schema.schemaobjectSchemat 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_parameters w Modelach obecność structured_outputs lub response_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_reason ma wartość "length", JSON jest obcięty. Zwiększ max_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.