Reasoning токены
Контроль над reasoning-моделями (o1, R1, Claude thinking) через параметр reasoning_effort.
Reasoning токены
Серия reasoning-моделей (OpenAI o1, DeepSeek R1, Claude с включённым thinking) перед основным ответом тратит токены на «внутреннее размышление». Эти reasoning-токены не показываются в choices[0].message.content, но учитываются в счёте.
Когда использовать
Reasoning-модели лучше справляются с задачами, требующими многошагового рассуждения:
- Математика, логика, доказательства.
- Анализ кода и поиск багов.
- Сложные стратегические решения с несколькими переменными.
- Юридические и научные тексты с цепочкой выводов.
Для коротких ответов (классификация, переформулирование, простые вопросы) reasoning-модели — overkill: тратят больше токенов и дают тот же результат, что и обычные.
Управление
Передайте параметр reasoning_effort в запросе:
curl -s https://api.hubris.pw/v1/chat/completions \
-H "Authorization: Bearer sk-gw-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Если есть число, простое и сумма цифр которого тоже простое — какое наименьшее?"}],
"reasoning_effort": "high"
}'
Допустимые значения:
"low"— минимум reasoning, быстрее и дешевле."medium"— баланс (default для большинства reasoning-моделей)."high"— максимум, для сложных задач.
Не все модели поддерживают reasoning_effort — если модель его не понимает, апстрим вернёт ошибку или просто проигнорирует.
Биллинг
Reasoning-токены входят в completion_tokens и тарифицируются по обычной цене выходных токенов модели:
{
"usage": {
"prompt_tokens": 50,
"completion_tokens": 1200,
"total_tokens": 1250,
"completion_tokens_details": {
"reasoning_tokens": 1100
}
}
}
В примере выше из 1200 completion-токенов 1100 ушли на reasoning, и только 100 — на финальный ответ. Это нормально для сложных задач: модель «обдумывает» дольше, чем пишет.
Поле completion_tokens_details.reasoning_tokens информативное — показывает, сколько именно ушло на размышления. Денежная стоимость такая же, как для обычных completion-токенов.
Как читать ответ
Сам процесс рассуждения скрыт — его не видно в message.content. Видно только финальный ответ:
{
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Ответ: 23 (простое, сумма цифр 5 — простое)"
},
"finish_reason": "stop"
}]
}
У некоторых моделей в перспективе появится поле reasoning рядом с content — мы пробросим его как есть от провайдера, без нормализации.
Стриминг
Стриминг работает как обычно: chunk-и приходят по мере генерации финального ответа. Reasoning-фаза происходит ДО первого chunk-а — значит, для задач с высоким reasoning_effort первый chunk может прийти через 10–30 секунд молчания, а не сразу.
Что дальше
- POST /v1/chat/completions — полная схема параметров.
- Цены — формула счёта.