Kami menggunakan cookie. Cookie dan penyimpanan browser menjaga Anda tetap masuk dan mengingat preferensi Anda. Dengan izin Anda, kami juga mengukur cara situs digunakan. Anda dapat kapan saja. Lihat kebijakan cookie kami.

Structured outputs

Endpoint

Structured outputs

Paksa model mengembalikan JSON valid yang sesuai dengan JSON Schema lewat response_format, untuk ekstraksi dan klasifikasi yang dapat di-parse.

Coba di playground

Structured outputs membuat model mengembalikan JSON yang sesuai dengan JSON Schema yang Anda berikan. Gunakan untuk ekstraksi, klasifikasi, dan balasan apa pun yang di-parse oleh kode Anda. Atur response_format pada Chat completions (atau text.format pada Responses).

Parameter request

ParameterTipeDeskripsi
response_format.typestring"json_schema" untuk keluaran terikat skema. "json_object" untuk mode JSON bebas.
response_format.json_schema.namestringNama untuk skema.
response_format.json_schema.strictbooleantrue menegakkan skema secara persis jika provider mendukungnya.
response_format.json_schema.schemaobjectSebuah JSON Schema. Dengan strict, gunakan additionalProperties: false dan cantumkan setiap properti di 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));

Respons

JSON tiba sebagai string di 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 }
}

Helper SDK bekerja seperti biasa, misalnya client.chat.completions.parse(...) dengan Zod di Node atau Pydantic di Python.

Dukungan model

  • Untuk menemukan model yang mendukungnya, periksa supported_parameters di Model untuk structured_outputs atau response_format.
  • Untuk memastikan request hanya dikirim ke provider yang menghormati skema, tambahkan provider: { "require_parameters": true }.
  • Model tanpa dukungan native tetap dapat menghasilkan JSON jika Anda memintanya di prompt, tetapi keluarannya tidak dijamin. Selalu validasi.
  • Jika finish_reason adalah "length", JSON terpotong. Naikkan max_tokens.

Error

Skema yang tidak valid biasanya mengembalikan 400 dari upstream dengan pesan provider. Error lainnya sama seperti pada Chat completions. Lihat Error.