Что изменилось концептуально
Раньше глубину рассуждения задавали числом: параметр budget_tokens отводил модели фиксированный запас токенов на размышление. Подход прямолинейный, но неудобный — на простом вопросе бюджет тратился впустую, на сложном его не хватало.
В поколении Claude 5 этот механизм заменён двумя вещами. Первая — адаптивное мышление: модель сама решает, когда думать и насколько глубоко. Вторая — уровень усилия: общий регулятор, который задаёт, насколько щедро модель расходует токены на задачу в целом.
Практически это значит, что вы перестаёте угадывать число и начинаете выбирать из пяти режимов.
Где живёт параметр усилия
Уровень усилия задаётся полем effort внутри объекта output_config — не на верхнем уровне запроса. Это самая частая ошибка при первой настройке: параметр, положенный не туда, просто игнорируется, и вы получаете поведение по умолчанию, не понимая почему.
Значений пять: low, medium, high, xhigh, max. Если поле не задано, применяется high — оно же равнозначно отсутствию параметра. Бета-заголовок для усилия не нужен, это обычная функциональность.
| Уровень | Когда применять |
|---|---|
| low | Подзадачи агента, простые операции, черновые прогоны |
| medium | Рутина, где качество важно, но не критично |
| high | Значение по умолчанию, баланс качества и расхода |
| xhigh | Кодинг и агентные сценарии, лучший выбор для разработки |
| max | Когда правильность важнее стоимости |
Правила по моделям — они разные
Единого поведения нет, и это источник большинства ошибок при переходе. Ниже сводка по актуальным моделям: что происходит, если параметр thinking просто не передан, и что будет с budget_tokens.
| Модель | Если thinking не передан | budget_tokens | Усилие |
|---|---|---|---|
| Fable 5 | Думает всегда | Ошибка 400 | от low до max |
| Opus 5 | Думает адаптивно | Ошибка 400 | от low до max |
| Opus 4.8 и 4.7 | Не думает | Ошибка 400 | от low до max |
| Sonnet 5 | Думает адаптивно | Ошибка 400 | от low до max |
| Opus 4.6, Sonnet 4.6 | Не думает | Устарел, но работает | без xhigh |
| Haiku 4.5 | Не думает | Обязателен для мышления | Не поддерживается |
Почему в интерфейсе пропал ход рассуждения
Отдельная настройка отвечает за отображение мышления. Значение summarized возвращает читаемое резюме рассуждения, значение omitted оставляет текст блоков пустым.
На Fable 5, Opus 5, Opus 4.8, Opus 4.7 и Sonnet 5 по умолчанию стоит omitted, тогда как на Opus 4.6 и Sonnet 4.6 по умолчанию было summarized. Смена умолчания произошла тихо: код продолжает работать, ошибок нет, просто в интерфейсе там, где раньше шёл поток рассуждения, теперь долгая пауза.
Лечится явным запросом отображения. И помните: настройка влияет только на видимость — само рассуждение выполняется и тарифицируется одинаково при любом значении. Сэкономить, скрыв мышление, нельзя.
- Умолчание на моделях Claude 5 — пустые блоки мышления.
- Запрашивайте резюме явно, если показываете ход мысли пользователю.
- Скрытое мышление стоит столько же, сколько показанное.
Как выбирать усилие на практике
Отправная точка — high, оно же умолчание. Дальше двигайтесь по результатам замера, а не по ощущениям.
Вниз до low имеет смысл идти для подзадач внутри агента, черновых прогонов и простых операций. Побочный эффект низкого усилия полезный: модель делает меньше и более крупных вызовов инструментов, меньше предисловий, короче подтверждения.
Вверх до xhigh — для кодинга и агентных сценариев, это лучший режим для разработки на текущем поколении. До max — когда цена ошибки выше цены токенов. При этом на длинных автономных задачах давайте полную постановку сразу: на высоких уровнях усилия модель планирует работу целиком, и дробление задачи на мелкие подсказки скорее мешает.
- Начинайте с high, меняйте по результатам замера на своих данных.
- low — для подзадач и черновиков, xhigh — для кода и агентов.
- На высоком усилии давайте полную постановку задачи сразу.
Частые ошибки
Первая — effort на верхнем уровне запроса вместо output_config. Тихо игнорируется. Вторая — оставленный budget_tokens: на Claude 5 это ошибка 400, а на 4.6 он ещё принимается как переходная мера, из-за чего проблема всплывает не сразу, а при обновлении модели.
Третья — блоки мышления, не возвращённые обратно в диалог. При продолжении разговора на той же модели блоки рассуждения нужно передавать назад без изменений. Другие модели их молча игнорируют и ничего за это не берут, так что вычищать блоки при смене модели не требуется.
- effort — только внутри output_config.
- budget_tokens в новом коде не используйте вовсе.
- Блоки мышления возвращайте в историю неизменными.