Structured Output

Гарантированный JSON по вашей схеме

Structured Output заставляет модель возвращать ответ строго по JSON Schema — без рантайм-парсинга и fallback-ов на регулярки. Идеально для экстрактов, форм, пайплайнов и функций-инструментов.

Режимы

json_object

Гарантирует валидный JSON любой формы. Схему не проверяет.

json_schema (рекомендуется)

JSON строго соответствует schema. Модель не может нарушить types, required, enum.

Пример: извлечение данных о продукте

json
{
  "model": "openai/gpt-4o",
  "messages": [
    { "role": "user",
      "content": "Extract: MacBook Pro 14\" M3 Pro, $1999, 18GB RAM" }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "product",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "name":      { "type": "string" },
          "price_usd": { "type": "number" },
          "ram_gb":    { "type": "integer" },
          "category":  { "type": "string", "enum": ["laptop","phone","tablet"] }
        },
        "required": ["name", "price_usd", "ram_gb", "category"],
        "additionalProperties": false
      }
    }
  }
}

Ответ

json
{
  "name": "MacBook Pro 14 M3 Pro",
  "price_usd": 1999,
  "ram_gb": 18,
  "category": "laptop"
}

Типизированный Python (Pydantic)

python
from pydantic import BaseModel
from openai import OpenAI

class Product(BaseModel):
    name: str
    price_usd: float
    ram_gb: int
    category: str

client = OpenAI(base_url="https://api.kodikrouter.ru/v1", api_key=...)

result = client.chat.completions.parse(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "MacBook Pro 14 M3 Pro, $1999, 18GB"}],
    response_format=Product,
)
product: Product = result.choices[0].message.parsed
print(product.name, product.price_usd)
Совместимость
Не все модели поддерживают json_schema. Проверяйте supported_parameters в каталоге моделей — ищите structured_outputs или response_format.