Тема
Язык
·3 мин. чтения

JSON-режим и структурированные ответы: какие модели что поддерживают

Матрица по моделям для JSON-режима в GetVibe API, различия между json_object и json_schema, а также резервный вариант, работающий с каждой моделью: принудительные вызовы инструментов.

JSON-режим и структурированные ответы: какие модели что поддерживают

Если ваш код разбирает ответ модели, вам нужен JSON, который корректно разбирается при каждом вызове. В GetVibe API есть три способа получить его: режим json_object, строгий режим json_schema и принудительные вызовы инструментов. Модели различаются поддерживаемыми возможностями. В этой статье приведена матрица для нашего каталога и показано, какой подход использовать в каждом случае.

Три подхода

  • response_format: {"type": "json_object"}: модель возвращает корректный JSON. Вы описываете поля в промпте.
  • response_format: {"type": "json_schema", ...} с strict: true: модель заполняет именно переданную вами схему. Поддерживается GPT-5.x и совместимыми моделями.
  • Принудительный вызов инструмента (tools плюс tool_choice с указанием одной функции): модель возвращает аргументы функции в виде JSON, соответствующего схеме параметров функции. Все текстовые модели в нашем каталоге поддерживают вызовы инструментов, поэтому это наиболее переносимый вариант.

Матрица

Столбец режима JSON содержит значение caps.jsonMode из https://getvibeapi.com/api/catalog, полученное 25 сентября 2026 года.

МодельРежим JSONВызовы инструментовЦена
GPT-6 Lunaдада$0.0055 вход · $0.0274 выход за 1 млн токенов
GPT-6 Solдада$0.1096 вход · $0.548 выход за 1 млн токенов
GPT-6 Astraнетда$0.548 вход · $2.7398 выход за 1 млн токенов
GPT-5.6 Sol (также Luna, Terra)дада$0.0667 вход · $0.40 выход за 1 млн токенов
Claude Opus 5.5дада$0.1067 вход · $0.5334 выход за 1 млн токенов
Claude Sonnet 5дада$0.3334 вход · $1.6667 выход за 1 млн токенов
Gemini 3.1 Proдада$0.2515 вход · $1.5086 выход за 1 млн токенов
Gemini 3.8 Flash (также 3.7 Flash)нетда$0.0097 вход · $0.0483 выход за 1 млн токенов
DeepSeek V4.1 Flashдада$0.0112 вход · $0.0445 выход за 1 млн токенов
Qwen3.8 Max (также 3.8 Flash)дада$0.1543 вход · $0.4629 выход за 1 млн токенов
Kimi K3дада$0.1715 вход · $0.8572 выход за 1 млн токенов
MiniMax M3дада$0.0148 вход · $0.0591 выход за 1 млн токенов
Tencent Hy4 Previewдада$0.0334 вход · $0.1001 выход за 1 млн токенов
GLM-5.3 (также 5.3 Flash, 5.2)нетда$0.10 вход · $0.3143 выход за 1 млн токенов

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

Что делает строгий режим с нашей стороны

При использовании strict: true в запросе json_schema шлюз направляет запросы только к вариантам моделей, которые действительно соблюдают схему. Это выполняется при каждой попытке, включая переключение на резервный вариант. Если подходящего варианта нет, вы получаете явную ошибку structured_output_unsupported, а не обычный текст там, где ожидался JSON. Эта защита основана на наших измерениях и распространяется только на проверенные нами варианты.

Известный случай: собственный API DeepSeek не поддерживает режим json_schema. Для моделей DeepSeek используйте json_object или принудительный вызов инструмента, если вам нужна строго определённая структура.

Примеры

Строгая схема:

from openai import OpenAI
import json

client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...")
schema = {
    "type": "object",
    "properties": {"name": {"type": "string"}, "score": {"type": "number"}},
    "required": ["name", "score"],
    "additionalProperties": False,
}
resp = client.chat.completions.create(
    model="gpt-6-luna",
    response_format={"type": "json_schema",
                     "json_schema": {"name": "review", "strict": True, "schema": schema}},
    messages=[{"role": "user", "content": "Оцените этот продукт: быстрая доставка, аккуратная упаковка"}],
)
print(json.loads(resp.choices[0].message.content))

Принудительный вызов инструмента, который работает на моделях без режима JSON:

resp = client.chat.completions.create(
    model="gemini-3.8-flash",
    tools=[{"type": "function", "function": {"name": "save_review", "parameters": schema}}],
    tool_choice={"type": "function", "function": {"name": "save_review"}},
    messages=[{"role": "user", "content": "Оцените этот продукт: быстрая доставка, аккуратная упаковка"}],
)
args = json.loads(resp.choices[0].message.tool_calls[0].function.arguments)

Всегда проверяйте результат

Даже при включённом режиме JSON проверяйте разобранный объект на соответствие вашей схеме перед использованием и повторяйте запрос при ошибке. Особенно важно это для длинных ответов, где ответ, обрезанный на уровне max_tokens, превращается в усечённый JSON. Проверяйте finish_reason: значение length означает, что ответ был оборван.

Следующие шаги

Ознакомьтесь с документацией по структурированным выходным данным и руководством по вызовам инструментов или найдите недорогую модель с поддержкой JSON в нашем списке самых дешёвых LLM API.

JSON-режимструктурированные ответыresponse_format json_schemaJSON-ответ от LLMjson_object и json_schemaвызов функций JSON

Попробуйте GetVibe API бесплатно

GPT, Claude, Gemini и другие модели через единый API, совместимый с OpenAI. Оплата в USD картой или криптовалютой.

Похожие статьи

JSON-режим и структурированные ответы: какие модели что поддерживают | GetVibe API