Рассуждения и бюджет вывода
Параметры reasoning, дополнительные поля и учёт токенов
Некоторые модели используют выходные токены для рассуждений до формирования ответа Эти токены могут учитываться в расходе даже при отсутствии видимого текста
Выбор бюджета
Задавайте бюджет с запасом для ответа и рассуждений
При исчерпании лимита возможны пустой content и finish_reason: "length"
Это не ошибка авторизации и не основание бесконечно повторять одинаковый запрос
Лимит вывода не является гарантией верхней стоимости
Для отдельных моделей и маршрутов фактический расход может отличаться от запрошенного лимита
Контролируйте фактический usage и расход в личном кабинете
Параметры по форматам
| Формат | Настройка |
|---|---|
| Chat Completions | reasoning или reasoning_effort, в зависимости от модели |
| Messages | thinking.type, для ручного бюджета thinking.budget_tokens |
| GenerateContent | generationConfig.thinkingConfig |
| Responses | reasoning.effort для совместимой модели |
Параметры разных форматов не взаимозаменяемы Возможность отключения рассуждений и допустимые значения определяет модель
Chat Completions
Отключение для моделей, поддерживающих reasoning.enabled
{
"model": "MODEL_ID",
"messages": [{"role":"user","content":"Сколько будет 17 × 23?"}],
"max_tokens": 256,
"reasoning": {"enabled": false}
}Ручной бюджет и имя параметра определяет модель Общий лимит должен учитывать бюджет рассуждений, если это требует выбранный формат Не переносите внутренние параметры шаблона одной модели в другой формат
Messages
{
"thinking": {"type": "enabled", "budget_tokens": 1024},
"max_tokens": 2048
}Минимальный бюджет и связь с max_tokens определяет выбранная модель
Модели с другим режимом reasoning могут требовать другие настройки
Поля ответа
Текст рассуждений может находиться в reasoning, reasoning_content, специальных блоках content или не возвращаться вовсе
В SSE поля могут появляться раньше delta.content
Не считайте отсутствие видимого рассуждения подтверждением его отключения
Счётчики подробной разбивки могут отсутствовать или не отражать весь расход рассуждений
Для общего расхода используйте usage.completion_tokens, usage.output_tokens или usageMetadata.candidatesTokenCount, в зависимости от формата
Передача истории
Сохраняйте возвращённые типизированные блоки и подписи, если они нужны для продолжения диалога Не подменяйте рассуждения текстом итогового ответа и не добавляйте их в поле user