hubris
Возможности
ВОЗМОЖНОСТИ

Reasoning токены

Размышление у Claude Opus 5 и Sonnet 5 включено по умолчанию; глубина — через reasoning_effort или объект reasoning, ход мысли — в reasoning_details, биллинг — как за выходные токены.

Серия reasoning-моделей (OpenAI o1, DeepSeek R1, Claude с включённым thinking) перед основным ответом тратит токены на «внутреннее размышление». Эти reasoning-токены не входят в choices[0].message.content, но учитываются в счёте.

Когда использовать

Reasoning-модели лучше справляются с задачами, требующими многошагового рассуждения:

  • Математика, логика, доказательства.
  • Анализ кода и поиск багов.
  • Сложные стратегические решения с несколькими переменными.
  • Юридические и научные тексты с цепочкой выводов.

Для коротких ответов (классификация, переформулирование, простые вопросы) размышление избыточно: тратит больше токенов и даёт тот же результат.

Claude Opus 5 и Sonnet 5: размышление включено по умолчанию

У моделей anthropic/claude-opus-5 и anthropic/claude-sonnet-5 режим размышления работает без дополнительных параметров — так же, как в официальном API Anthropic: модель сама решает, сколько «подумать» над задачей (adaptive thinking), а глубина по умолчанию соответствует уровню high. У остальных моделей Anthropic (Opus 4.8, Sonnet 4.6 и старше) размышление по умолчанию выключено — включайте его параметром из следующего раздела.

Управление

Глубину размышления задаёт параметр reasoning_effort (как в OpenAI API) или расширенный объект reasoning — оба работают на всех моделях каталога одинаково:

curl -s https://api.hubris.pw/v1/chat/completions \
  -H "Authorization: Bearer sk-gw-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-opus-5",
    "messages": [{"role": "user", "content": "Если есть число, простое и сумма цифр которого тоже простое — какое наименьшее?"}],
    "reasoning_effort": "low"
  }'
ПараметрЗначенияЧто делает
reasoning_effort"low", "medium", "high", "xhigh", "max"Глубина размышления. low — быстрее и дешевле, high — уровень по умолчанию у Claude 5, xhigh и max — ещё глубже для самых сложных агентных задач (Claude Opus 5, Sonnet 5, GPT-5.x); у моделей без таких уровней сводятся к ближайшему. Принимаются также "minimal" и "none".
reasoning.effortто жеТо же самое в форме объекта.
reasoning.max_tokensцелое числоБюджет токенов на размышление вместо уровня.
reasoning.excludetrueМодель размышляет, но текст размышлений в ответ не попадает — только итог.
reasoning.enabledfalseПолностью выключить размышление.

Стоит ли выключать? На Claude Opus 5 — не советуем: с выключенным размышлением модель нередко пишет ход мысли прямо в ответ (в тегах <thinking>) и тратит те же токены, а качество ниже. Чтобы ответ был быстрее и дешевле, ставьте "reasoning_effort": "low"; чтобы скрыть ход мысли — "reasoning": {"exclude": true}.

Модели, у которых режима размышления нет, параметр игнорируют или отвечают ошибкой валидации — проверьте карточку модели в каталоге.

Биллинг

Токены размышления входят в completion_tokens и оплачиваются по обычной цене выходных токенов модели:

{
  "usage": {
    "prompt_tokens": 50,
    "completion_tokens": 1200,
    "total_tokens": 1250,
    "completion_tokens_details": {
      "reasoning_tokens": 1100
    }
  }
}

В примере из 1200 completion-токенов 1100 ушли на размышление и только 100 — на итоговый ответ. Это нормально для сложных задач: модель «обдумывает» дольше, чем пишет. Поле completion_tokens_details.reasoning_tokens — справочное; денежная стоимость такая же, как у обычных completion-токенов.

Как читать ответ

Ход мысли приходит рядом с ответом — в поле reasoning (текст) и reasoning_details (структурированные блоки):

{
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Ответ: 23 (простое, сумма цифр 5 — простое)",
      "reasoning": "Перебираю простые числа по возрастанию и проверяю сумму цифр…",
      "reasoning_details": [
        {
          "type": "reasoning.text",
          "text": "Перебираю простые числа по возрастанию и проверяю сумму цифр…",
          "format": "anthropic-claude-v1",
          "index": 0
        }
      ]
    },
    "finish_reason": "stop"
  }]
}

Если ход мысли вам не нужен — передайте "reasoning": {"exclude": true}, и этих полей в ответе не будет. В многоходовых диалогах с инструментами можно возвращать reasoning_details в истории как есть — они не мешают.

Стриминг

В потоке размышление приходит первым: чанки с delta.reasoning и delta.reasoning_details, затем чанки с delta.content. Первый чанк появляется, как только модель начала думать, — показывайте его пользователю как индикатор «модель размышляет». Итоговый чанк с usage содержит reasoning_tokens.

Что дальше

Обновлено: