Если ваш код разбирает ответ модели, вам нужен 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.
