Возможности API

Структурированный вывод JSON (response_format) через AI Gateway

Как получить от модели валидный JSON: параметр response_format, json_schema и json_object, валидация результата и пример кода на Python — с оплатой в рублях.

Структурированный вывод заставляет модель отвечать не свободным текстом, а валидным JSON по заданной схеме. Это убирает хрупкий парсинг «выцарапывания» данных из ответа: результат сразу готов к разбору и подстановке в код. В AI Gateway это работает через стандартный параметр response_format, как в оригинальном API OpenAI.

Как это работает

Есть два режима. response_format: {type: "json_object"} гарантирует синтаксически валидный JSON, но структуру нужно описать в промпте. response_format: {type: "json_schema", …} дополнительно привязывает ответ к вашей JSON Schema — модель обязана вернуть объект ровно с нужными полями и типами. Второй режим надёжнее, когда важна строгая форма данных.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://ai-gatewey.ru/v1",
    api_key="sk-aigate-ваш_ключ",
)

schema = {
    "name": "product",
    "schema": {
        "type": "object",
        "properties": {
            "title": {"type": "string"},
            "price": {"type": "number"},
            "in_stock": {"type": "boolean"},
        },
        "required": ["title", "price", "in_stock"],
        "additionalProperties": False,
    },
}

resp = client.chat.completions.create(
    model="openai/gpt-5.4-mini",
    messages=[{"role": "user", "content": "Опиши товар: беспроводные наушники за 4990 рублей, в наличии"}],
    response_format={"type": "json_schema", "json_schema": schema},
)
data = json.loads(resp.choices[0].message.content)
print(data["title"], data["price"], data["in_stock"])

Сценарии

  • Извлечение данных — вытащить из текста сущности (имя, дата, сумма, статус) сразу в готовый объект.
  • Классификация — вернуть категорию и уверенность строгими полями, а не разбирать формулировку из прозы.
  • Интеграции и пайплайны — ответ модели уходит прямо в БД, очередь или следующий сервис без ручной обработки.
  • Формы и карточки — заполнение полей интерфейса значениями, которые модель извлекла из свободного ввода пользователя.
Даже в JSON-режиме валидируйте результат на своей стороне (например, через Pydantic или zod): режим json_object гарантирует лишь корректный синтаксис, но не набор полей и не бизнес-ограничения.

Частые вопросы

Какие модели поддерживают структурированный вывод?

Модели с поддержкой JSON-режима — их актуальный список собирается живьём ниже по каталогу. На карточке в каталоге такие модели помечены соответствующим бейджем.

Чем json_schema лучше json_object?

json_object гарантирует только валидный синтаксис JSON, а json_schema дополнительно связывает ответ с вашей схемой — нужные поля, типы и обязательность. Для строгих контрактов данных выбирайте json_schema.

Нужно ли всё равно писать про формат в промпте?

Для json_object — да, опишите желаемую структуру в тексте запроса. Для json_schema структуру задаёт сама схема, но короткая подсказка в промпте о смысле полей повышает качество.

Получите строгий JSON от модели

Получить ключ

Модели с этой возможностью

Живой срез каталога — цены за 1 млн токенов:

Все модели с фильтром по возможностям →