Reasoning Tokens
Токены рассуждений для улучшения качества ответов
Reasoning Tokens
Reasoning Tokens (thinking tokens, токены рассуждений) - токены, в которых модель сохраняет промежуточные мысли о задаче.
Как это работает
- Модель размышляет над задачей до того, как ответить
- Промежуточные мысли сохраняются как токены рассуждений
- На их основе создаётся финальный ответ
- В ответ возвращаются и рассуждения, и итоговый результат
Ключевые преимущества
Видимость процесса принятия решений моделью
Лучшее решение сложных задач
Понимание источников ошибок
Изучение подходов к решению проблем
Reasoning tokens учитываются как output tokens для биллинга и увеличивают стоимость, но улучшают качество ответов.
Как узнать, поддерживает ли модель рассуждения
Каталог моделей меняется чаще документации, поэтому актуальный источник правды - публичный эндпоинт каталога. Авторизация для него не нужна:
curl https://api.usellm.ru/v1/models/zai/glm-5.3-flash
В ответе смотрите массив supported_parameters: он есть у top_provider и у каждого элемента providers[]:
{
"top_provider": {
"name": "zai",
"supported_parameters": [
"include_reasoning",
"reasoning",
"reasoning_effort",
"max_tokens",
"max_completion_tokens",
"response_format",
"structured_outputs",
"stop",
"tools",
"verbosity"
]
}
}
Модель поддерживает рассуждения у этого провайдера, если в списке есть reasoning и reasoning_effort. Наборы параметров у разных провайдеров одной модели могут отличаться, поэтому проверяйте именно ту площадку, на которую рассчитываете попасть.
Как передавать параметры
Настройки рассуждений принимаются в двух формах.
Объектом reasoning в теле запроса:
{
"model": "zai/glm-5.3-flash",
"messages": [{ "role": "user", "content": "Реши уравнение: 2x + 5 = 13" }],
"reasoning": { "effort": "high" }
}
Либо суффиксом к имени модели: удобно, когда клиент не даёт добавить произвольное поле в тело запроса:
{
"model": "zai/glm-5.3-flash@reasoning_effort=high",
"messages": [{ "role": "user", "content": "Реши уравнение: 2x + 5 = 13" }]
}
Поле reasoning_effort на верхнем уровне тела запроса (формат OpenAI API) не читается: запрос выполнится, но параметр будет проигнорирован без ошибки. Используйте reasoning.effort или суффикс модели.
Задавать уровень одновременно двумя способами нельзя: запрос вернёт ошибку 400 с текстом про конфликт alias-параметра.
Значения по умолчанию и преобразования
usellm передаёт настройки рассуждений выбранной модели без ремаппинга уровней: значение effort уходит провайдеру как есть.
- Своих значений по умолчанию мы не подставляем. Если блок
reasoningв запросе отсутствует, к провайдеру уйдёт запрос без reasoning-полей и сработает поведение самой модели по умолчанию. - Уровни не пересчитываются под возможности модели. Если модель понимает не весь набор
none…max, итоговое поведение определяет провайдер: он может нормализовать значение до ближайшего поддерживаемого. - Если у модели в каталоге нет reasoning-параметров в
supported_parameters, блокreasoningможет быть отброшен при отправке без ошибки в ответе.
Параметры управления
type
Явный переключатель режима рассуждений. Поддерживается только моделями с адаптивным мышлением.
Значения:
adaptive- включить адаптивное мышление: модель сама выбирает глубину рассуждений под задачу. Поляeffortиmax_tokensпри этом игнорируются, управление только черезeffort_level.disabled- явно отключить рассуждения.
Для моделей без адаптивного режима параметр передавать не нужно: используйте effort и/или max_tokens.
effort
Пресет «усилия» для моделей с явно управляемым бюджетом рассуждений.
Если параметр не передан, уровень усилий выбирает сама модель: usellm своё значение не подставляет.
Значения:
none- рассуждения отключеныminimal- минимальные рассужденияlow- сниженные рассужденияmedium- сбалансированный режимhigh- детальные рассужденияxhigh- максимально детальные рассужденияmax- предельные усилия
На моделях, не поддерживающих верхние уровни (xhigh, max), значение может быть нормализовано провайдером до ближайшего поддерживаемого.
effort_level
Подсказка глубины для адаптивного мышления. Действует только совместно с type: "adaptive". Для остальных моделей игнорируется.
Значения: low / medium / high / max.
В отличие от effort, параметр effort_level не задаёт бюджет токенов напрямую: модель по-прежнему сама выбирает глубину, но ориентируется на указанный уровень усилий.
max_tokens
Жёсткий лимит токенов рассуждений (бюджет). Работает на моделях с явным бюджетом. Для адаптивных моделей игнорируется: бюджетом управляет сама модель.
enabled
Явное включение/выключение рассуждений (true / false). Если параметр не передан, провайдер выводит включение из effort или max_tokens.
exclude
Если true, рассуждения не включаются в ответ (но всё равно учитываются в биллинге).
summary
Управляет уровнем детализации резюме рассуждений:
auto- автоматический выбор на стороне провайдераconcise- краткое резюмеdetailed- подробное резюме
Управление глубиной адаптивного мышления
Глубина рассуждений задаётся парой параметров:
"reasoning": {
"type": "adaptive",
"effort_level": "max"
}
Значение effort_level | Когда использовать |
|---|---|
low | Простые вопросы, быстрые ответы |
medium | Стандартные задачи |
high | Сложный анализ, многошаговые задачи |
max | Предельные усилия, максимально глубокий разбор |
effort_level не задаёт бюджет токенов напрямую: модель по-прежнему сама выбирает глубину, но ориентируется на указанный уровень усилий.
Когда adaptive не тратит reasoning-токены
Adaptive thinking - это не «всегда думать», а «модель сама решает». Для простых запросов модель отвечает сразу, без рассуждений, и тогда:
usage.completion_tokens_details.reasoning_tokens = 0- Поле
choices[0].message.reasoningотсутствует
Это не ошибка: модель просто решила, что задача не требует рассуждений.
Если необходимо гарантированно заставить модель размышлять, увеличьте сложность запроса или используйте effort_level: "max" как сильную подсказку. Окончательное решение всё равно за моделью.
Управление рассуждениями через Anthropic-совместимый endpoint
Кроме OpenAI-совместимого /v1/chat/completions, usellm принимает запросы в нативном формате Anthropic Messages API (POST /v1/messages):
{
"model": "anthropic/claude-fable-5.1",
"thinking": { "type": "adaptive" },
"messages": [
{ "role": "user", "content": "Реши уравнение: 2x + 5 = 13" }
]
}
Через унифицированный endpoint (/v1/chat/completions, /v1/responses)
{
"model": "anthropic/claude-fable-5.1",
"reasoning": {
"type": "adaptive",
"effort_level": "max"
},
"messages": [
{ "role": "user", "content": "Реши уравнение: 2x + 5 = 13" }
]
}
reasoning.type: "adaptive"- включает адаптивное мышление.reasoning.effort_level- опциональная подсказка уровня усилий (low/medium/high/max).reasoning.effortиreasoning.max_tokensдля адаптивных моделей игнорируются. Передать их можно, ошибки не будет, но эффекта они не дадут.
Когда использовать
- Математические задачи
- Программирование
- Анализ данных
- Планирование
- Логические головоломки
- Объяснение сложных концепций
- Простые фактические вопросы
- Генерация контента
- Перевод текстов
- Простые диалоги
Стоимость
Reasoning tokens тарифицируются как output tokens по цене выбранной модели. Например, для zai/glm-5.3-flash - 26,32 ₽ за 1 млн токенов, для anthropic/claude-fable-5.1 - 5193,50 ₽ за 1 млн токенов. Точная стоимость каждого запроса приходит в usage.cost_rub.