Назад в блог

AI для новичковИнструкция

Reasoning effort и thinking-токены: почему размышления стоят денег

Токены размышлений оплачиваются как выходные. Что значат уровни effort, какой max_tokens ставить, чтобы ответ не обрезало, и как оценить счёт.

Автор: CheapTokens TeamОпубликовано 6 мин чтения

Карточка чата: почему ответ в одну строку стоил так дорого? Потому что модель сначала думала, а размышления оплачиваются как выход
Содержание
  1. Что модель делает до ответа
  2. Effort: регулятор размышлений
  3. Ловушка пустого ответа: размышления входят в max_tokens
  4. Что длинные размышления делают со счётом
  5. Какой effort для какой задачи
  6. Переезд со старого запроса: ошибка 400
  7. Агенты и длинные чаты: выберите один уровень и держите его
  8. Попробуйте на своём запросе

Вы задали один фактический вопрос. Ответ — три строки. А счётчик выходных токенов показывает тысячи. Это не ошибка: прежде чем ответить, многие модели «думают» на скрытом черновике, и эти токены размышлений оплачиваются как выходные. Настройка effort решает, сколько будет размышлений, а max_tokens должен оставить для них место — иначе ответ придёт обрезанным или пустым.

Что модель делает до ответа#

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

Документация Anthropic по extended thinking (проверено 23 октября 2026) говорит, что токены размышлений входят в оплачиваемые выходные, а в ответе указано, сколько их: usage.output_tokens_details.thinking_tokens. Допустим, ответ пришёл с таким блоком usage (числа для примера):

json
"usage": {
  "input_tokens": 480,
  "output_tokens": 2150,
  "output_tokens_details": { "thinking_tokens": 1900 }
}

Оплачиваются 2 150 выходных токенов. Размышления заняли 1 900 из них, значит текст, который вы прочитали, — это 2 150 − 1 900 = 250 токенов. И так даже тогда, когда сам текст размышлений вам не возвращается: считаться он всё равно будет. Если хочется сперва разобраться, чем вход отличается от выхода, начните со статьи входные и выходные токены.

Effort: регулятор размышлений#

В API Claude этот регулятор — output_config.effort. На странице Anthropic про effort (проверено 23 октября 2026) пять уровней: low, medium, high, xhigh, max. Новичку полезно знать три вещи:

  • Он влияет на все выходные токены, а не только на размышления: на текст, вызовы инструментов и размышления вместе.
  • Это поведенческий сигнал, а не жёсткий бюджет. Меньше effort — меньше токенов ценой некоторой потери возможностей; на низком уровне Claude может вообще пропустить размышления, если задача простая.
  • По умолчанию стоит medium у Claude Opus 5.5 и Claude Haiku 5.5 и high у большинства остальных моделей, где параметр есть. Явно заданное значение по умолчанию равно отсутствию параметра.

Уровни калибруются под каждую модель: high на одной модели — не то же количество размышлений, что high на другой, и не каждая модель принимает все уровни. В одном опубликованном видео автор прогнал все уровни effort у Claude Opus 5.5 на одной задаче по моушн-графике и сравнил картинки. Хороший способ увидеть, что даёт больше размышлений. Но счёт он не покажет: у вас задача другая.

Запрос на простой вопрос с пониженным effort:

json
{
  "model": "claude-opus-5-5",
  "max_tokens": 4000,
  "output_config": { "effort": "low" },
  "messages": [
    { "role": "user", "content": "What is the capital of Australia?" }
  ]
}

Ловушка пустого ответа: размышления входят в max_tokens#

Вот как это ломается. Вы ждёте ответ из двух предложений и ставите max_tokens 300. Модель начинает думать, тратит все 300 на черновик, упирается в лимит и останавливается. Вам приходит пустой ответ или фраза, оборванная на полуслове, а причина остановки — max_tokens.

В документации сказано прямо: max_tokens — жёсткий предел для всего выхода, размышлений и текста ответа вместе, и размышления в него входят, даже если их содержимое не возвращается. На уровне high и выше Anthropic советует ставить большое значение.

На практике:

  1. Прикиньте длину ответа, который хотите получить.
  2. Добавьте щедрый запас на размышления. Для всего, что выше low, разумное начало — несколько тысяч токенов.
  3. После первых запусков посмотрите причину остановки. Если там всё ещё max_tokens, поднимите лимит. Если ответ дописан, лимит можно снижать.

Сам обрыв, finish_reason и контекстное окно разобраны в статье почему ответ ИИ обрывается на полуслове.

Что длинные размышления делают со счётом#

Допустим, у вас бот поддержки на 2 000 обращений в день. Каждое обращение — около 500 токенов на входе. Короткий прямой ответ — около 400 токенов на выходе. То же обращение с длинными скрытыми размышлениями — около 4 000 токенов на выходе. Это допущения для примера; свои числа можно взять из статьи сколько токенов уходит на запрос.

В день это 2 000 × 500 = 1 000 000 входных токенов и либо 2 000 × 400 = 800 000 выходных, либо 2 000 × 4 000 = 8 000 000 выходных. Читатель обращения в обоих случаях видит те же две строки. Сдвинулся только объём выхода, а выход — как раз та сторона, которую размышления раздувают.

Стоимость бота за день: 1 000 000 токенов на входе, короткие ответы и длинные размышления (живые цены)
  • MiniMax-M2.7, длинные размышления (8 000 000 на выходе)$1.25
  • DeepSeek-V4-Flash, длинные размышления (8 000 000 на выходе)$0.815
  • MiniMax-M2.7, короткие ответы (800 000 на выходе)$0.17
  • DeepSeek-V4-Flash, короткие ответы (800 000 на выходе)$0.095

Арифметика одинакова для любой модели, у которой скрытые размышления оплачиваются: выходные токены × цена выхода. У DeepSeek-V4-Flash эта цена — $0.10 за 1M выходных токенов, и по выходу она ниже референсной цены OpenRouter. Кроме того, модель отвечает до 32 768 токенов за раз при контексте 380K, так что большой max_tokens помещается. Цена на модель фиксированная, пиковых часов нет, а таблица выше пересчитывается по живому прайсу. Все цены — на странице тарифов, подробности о модели — на странице DeepSeek.

Вот запрос, который можно отправить самому. Это обычное краткое изложение, длинные размышления здесь ни к чему, а лимит оставляет большой запас:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 2000,
    "messages": [
      {"role": "user", "content": "Summarize in one sentence: A token is a small piece of text that a model reads and writes, and APIs bill by the token."}
    ]
  }'

В ответе usage.completion_tokens — то, что вы платите на стороне выхода, а finish_reason должен быть stop. Если там length, лимит обрезал ответ. Как получить ключ и сделать первый запрос — в документации.

Какой effort для какой задачи#

  • Факт, краткий пересказ в одну строку, метка. Самый низкий effort. Это случай из начала статьи: черновик вам не нужен.
  • Обычный текст, короткое объяснение, простая правка. Значение по умолчанию для модели. Меняйте его, только когда увидите, сколько стоят ответы.
  • Хитрый баг, план из нескольких шагов, математическая задача. high или выше и большой max_tokens. Здесь лишние размышления и есть смысл.

Если сомневаетесь, прогоните один и тот же запрос на двух уровнях, сравните ответы и сравните output_tokens. Если дешёвый ответ не хуже — вы нашли свой уровень.

Переезд со старого запроса: ошибка 400#

Старый код управлял размышлениями через бюджет токенов. На моделях Claude 4.7 и новее (Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1) такая форма отклоняется с ошибкой 400. Нужно перейти на адаптивные размышления и задавать глубину через effort:

json
// было: на новых моделях вернёт 400
"thinking": { "type": "enabled", "budget_tokens": 8000 }

// стало
"thinking": { "type": "adaptive" },
"output_config": { "effort": "medium" }
Старый бюджет размышлений слева, адаптивные размышления с effort справа
Один и тот же запрос до и после переезда, по документации Anthropic на 23 октября 2026

Ещё одна ловушка: у Opus 5.5 адаптивные размышления включены всегда, а thinking: { "type": "disabled" } возвращает 400 на любом уровне effort. У Haiku 5.5 размышления можно отключить на уровне high и ниже. Если на Opus 5.5 хочется меньше размышлений, понижайте effort, а не выключайте их.

Агенты и длинные чаты: выберите один уровень и держите его#

Если у вас кэшируется промпт, смена effort верхнего уровня между запросами сбрасывает точки кэша для этого диалога. Для цикла агента или длинного чата выберите уровень сразу. У некоторых моделей есть effort на отдельное сообщение (бета), который кэш сохраняет, — на него стоит посмотреть, когда основы уже освоены. А у длинных чатов есть и вторая причина дорожать — она в статье почему длинный чат стоит дороже.

Попробуйте на своём запросе#

  1. Отправьте свой настоящий промпт один раз и прочитайте usage: сколько выходных токенов и сколько из них — размышления.
  2. Понизьте effort на одну ступень и отправьте снова. Сравните ответы и счётчики.
  3. Поставьте max_tokens равным нужному ответу плюс запас на размышления и проверьте причину остановки.

Дальше подставьте свои числа токенов в живую таблицу на странице тарифов — и у вас есть оценка на месяц.