Перейти к основному содержимому

Настройка effort: 5 уровней, значения по умолчанию для моделей и ловушка кэша

Средний

22 июля 2026 года Anthropic включила effort в конфигурацию модели Claude Managed Agents, замкнув круг вокруг параметра, который Messages API незаметно расширила до пяти уровней. Если вы всё ещё копируете effort="high" на верхний уровень messages.create из блога начала 2026 года, запрос выглядит корректным, но Claude может не учитывать то поле, которое вы имеете в виду: параметр теперь находится внутри output_config, а API применяет только те уровни, что описаны в карточке модели.

Это практическое руководство по настройке: куда на самом деле попадает effort в запросе, что реально делают пять уровней (они меняют число вызовов инструментов, а не только глубину рассуждения), неожиданные значения по умолчанию для разных моделей и единственная ловушка, которая незаметно раздувает расходы: смена effort посреди разговора сбрасывает кэш промпта.

What you'll learn
  • Правильно разместить поле effort — внутри output_config в Messages API, в объекте model в Managed Agents, через /effort или CLAUDE_CODE_EFFORT_LEVEL в Claude Code
  • Выбрать стартовый уровень для каждой модели — high это значение API по умолчанию для большинства моделей, но НЕ для Opus 5.5 и Haiku 5.5, у которых по умолчанию medium, а рекомендуемый стартовый effort различается ещё и поверх этого (Sonnet 5.5 medium для агентного кодинга, Sonnet 4.6 medium, Opus 4.7/4.8 xhigh, Fable 5.1 high)
  • Понимать, что effort влияет на ВСЕ токены — текст, вызовы инструментов и (когда включено) рассуждение — поэтому снижение effort сокращает число вызовов инструментов, а не только многословность
  • Избегать ловушки кэша — изменение effort внутри одного разговора сбрасывает кэширование промптов и может незаметно удвоить счёт
  • Знать поверхность effort в Claude Code — /effort, ultrathink (один ход), ultracode (xhigh + постоянное разрешение на мультиагентность), переопределение переменной окружения CLAUDE_CODE_EFFORT_LEVEL

Пять уровней (и место «ultracode»)​

Шкала effort на 22 июля 2026 года содержит пять значений, которые принимает API:

УровеньЧто делаетКогда выбирать
lowСамый экономичный. Значительная экономия токенов при некотором снижении возможностей. Меньше вызовов инструментов, краткие подтверждения, без вступлений.Простая классификация, нагрузки с большим объёмом, чат, UX, чувствительный к задержкам, субагенты с узкими задачами
mediumСбалансированный. Умеренная экономия токенов относительно high.Агентные задачи, где нужен баланс скорости, стоимости и качества; экономный шаг вниз от high
highВысокие возможности. Эквивалентен отсутствию параметра — на всех моделях, кроме Opus 5.5 и Haiku 5.5, у которых по умолчанию medium.Сложные рассуждения, трудный кодинг, агентные задачи, где качество важнее скорости
xhighРасширенные возможности для долгой работы. Ожидайте заметно большего расхода токенов, чем при high.Долгие (30+ минут) агентные задачи и кодинг, бюджеты токенов в миллионах, глубокие рефакторинги по многим файлам
maxАбсолютный максимум возможностей, без ограничений на расход токенов.Только действительно передовые задачи. Может «передумывать» в задачах со структурированным выводом.

Ни max, ни xhigh не универсальны — сверяйте уровень с моделью перед релизом. xhigh поддерживается на Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, Opus 4.7, Sonnet 5.5, Sonnet 5 и Haiku 5.5. max охватывает все эти модели плюс Mythos Preview, Opus 4.6 и Sonnet 4.6. Opus 4.5 поддерживает effort, но ни один из двух верхних уровней. По словам Anthropic: "Not every model that supports max supports xhigh."

Pro tip
  • Установка effort в значение модели по умолчанию даёт ровно то же поведение, что и отсутствие параметра — это 'high' на большинстве моделей, но 'medium' на Opus 5.5 и Haiku 5.5. Не задавайте его «для ясности» в разговоре с кэшем: если писать поле в одних запросах и не писать в других, кэш сбрасывается.
  • 'ultracode' — не шестой уровень. Это xhigh + постоянное разрешение для Claude Code запускать мультиагентные рабочие процессы, выдаваемое через системные сообщения посреди разговора. API принимает пять значений.

Структура поля, которую путает большинство статей​

В обзорах начала 2026 года параметр effort показан как поле верхнего уровня:

# WRONG on current models — silently ignored or 400
client.messages.create(
model="claude-opus-4-8",
effort="medium",
...
)

Текущий API помещает effort внутрь объекта output_config и передаёт его на одном уровне с messages/model:

Правильное размещение effort — Messages API

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
  model="claude-opus-4-8",
  max_tokens=4096,
  output_config={"effort": "medium"},
  messages=[{
      "role": "user",
      "content": "Analyse the trade-offs between microservices and monoliths."
  }],
)

print(response.content[0].text)

В Claude Managed Agents (изменение от 22 июля 2026 года) effort указывается внутри объекта model агента при создании. Сессия его не задаёт — его задаёт версия агента.

Правильное размещение effort — Managed Agents (POST /v1/agents)

# Effort travels with the versioned agent config,
# not the per-run session. Every session pinned to
# this agent version runs at xhigh.

POST https://api.anthropic.com/v1/agents
{
"name": "code-reviewer",
"model": {
  "id": "claude-opus-4-8",
  "effort": "xhigh"
},
"system_prompt": "You review pull requests for security issues.",
"tools": [...],
"mcp_servers": [...]
}

Effort — это не управление рассуждением​

Это второе большое заблуждение. Effort работает независимо от того, включено ли рассуждение, и меняет токены, которые Claude тратит на части ответа, не являющиеся рассуждением:

  • Вызовы инструментов. Ниже effort → меньше вызовов. Claude объединяет операции в один вызов, пропускает необязательную разведку и переходит к действию без вступления.
  • Длина текста. Ниже effort → короче вывод. Краткие подтверждения после вызовов инструментов вместо подробных резюме. Меньше комментариев в коде.
  • Глубина рассуждения (когда оно включено). Ниже effort → на простых промптах рассуждение пропускается полностью; на действительно сложных Claude всё равно думает, но меньше.

Последний пункт важен: при low Claude всё равно будет рассуждать над задачей на доказательство, потому что этого требует задача. Effort — это поведенческий сигнал, а не жёсткий бюджет токенов. Не ждите жёсткого предела.

Параметры thinking и effort отвечают на разные вопросы. thinking решает, производит ли Claude блоки рассуждения вообще. effort определяет, сколько усилий вкладывается во весь ответ — включая то, как часто и насколько глубоко Claude рассуждает при включённом адаптивном рассуждении. Передавать effort="adaptive" — частая ошибка; adaptive — это режим рассуждения, а не уровень effort.

Pro tip

На Opus 4.5 — единственной модели только с расширенным рассуждением, поддерживающей effort, — вы задаёте effort и budget_tokens вместе. Выберите уровень effort под вашу задачу, затем подберите бюджет токенов рассуждения под нужную глубину. Все остальные модели с поддержкой effort используют адаптивное рассуждение и не принимают budget_tokens.

Стартовые точки по моделям, которые удивляют команды​

Значение API по умолчанию — high на большинстве моделей с поддержкой effort — но не на всех. У Opus 5.5 и Haiku 5.5 по умолчанию medium. Вдобавок рекомендуемый Anthropic стартовый effort различается по моделям, и именно в этом несоответствии команды перерасходуют или недорасходуют.

Guided walkthrough1 of 9
  1. Opus 5.5 — единственный Opus с medium по умолчанию, поэтому запрос без effort работает на уровень НИЖЕ, чем тот же код на Opus 5. Если после миграции качество упало, проверьте это в первую очередь. Адаптивное рассуждение всегда включено и не отключается (thinking: {type: 'disabled'} возвращает 400 на любом уровне), поэтому effort — ваш единственный рычаг над тем, сколько модель рассуждает и во сколько обходится запрос. Проведите новый перебор уровней вместо переноса настроек — на одном и том же уровне она думает за ход больше, чем Opus 5.

Ловушка кэша — та, что незаметно удваивает счёт​

Кэширование промптов даёт чтение из кэша за долю стандартной цены входа (десятую часть на большинстве моделей, меньше на новейших — см. Pricing). Изменение верхнеуровневого output_config.effort между запросами одного разговора сбрасывает кэш, как и смена модели: верхнеуровневый effort формирует отрисованный промпт, поэтому новое значение означает, что ни один закэшированный префикс не совпадает. На длинном контексте это перечитывание всей вашей истории по полной цене на каждом следующем ходе.

Лазейка: effort на уровне сообщения (бета)​

Новейшие модели позволяют менять effort без потери кэша. Добавьте сообщение role: "system" с пустым content, несущее новый уровень в output_config.effort, и всё, что было до него, остаётся побайтово идентичным — закэшированный префикс по-прежнему совпадает.

Смена effort посреди разговора без промаха кэша

# Beta header required:
#   anthropic-beta: mid-conversation-output-config-2026-07-01

{
"model": "claude-fable-5-1",
"max_tokens": 4096,
"output_config": {"effort": "high"},
"messages": [
  {"role": "user", "content": "Plan a migration from SQLite to PostgreSQL."},
  {"role": "assistant", "content": "1. Export... 2. Create schema... 3. Import."},
  {"role": "system", "content": [], "output_config": {"effort": "low"}},
  {"role": "user", "content": "Summarize the plan in one sentence."}
]
}

Доступность на 19 октября 2026 года: в Claude API и Google Cloud это работает на Fable 5.1, Mythos 5.1, Opus 5.5, Opus 5, Sonnet 5.5 и Haiku 5.5; в Amazon Bedrock — только на Fable 5.1, Mythos 5.1 и Opus 5.5. Нужен бета-заголовок mid-conversation-output-config-2026-07-01 — без него output_config на уровне сообщения возвращает 400 messages.N.output_config: Extra inputs are not permitted. С заголовком, но на неподдерживаемой модели (включая Fable 5), вы получите 400 output_config.effort requires a model that supports per-turn effort; this model does not.

Две модели отказываются менять effort по ходам, когда рассуждение зафиксировано: Sonnet 5.5 с thinking: {"type": "between_tools"} и Haiku 5.5 с thinking: {"type": "disabled"} возвращают 400, если уровень на уровне сообщения отличается от действующего. Чтобы менять effort там, используйте адаптивное рассуждение.

Для всего остального по-прежнему действует старое правило — выберите уровень и держите его:

Pro tip
  • На моделях без effort на уровне сообщения меняйте effort МЕЖДУ нагрузками, а не ВНУТРИ кэшируемого разговора. Выберите уровень в начале разговора и держите его постоянным до /clear.
  • Предпочитайте effort на уровне сообщения верхнеуровневой смене, даже когда работают оба: на Fable 5.1 верхнеуровневое переключение к тому же хуже направляет модель, потому что её прежние ответы были написаны на старом уровне, и она склонна оставаться с ними согласованной.
  • В Claude Code /effort посреди сессии равносилен смене модели — ждите большого промаха кэша на следующем ходу.
  • Если нужно усилить глубину только на один ход, используйте в Claude Code 'ultrathink' (усиление рассуждения на один ход), а не /effort xhigh — так конфигурация сессии не меняется.
  • Если нужно усилить на остаток сессии, делайте это рано. Переключение на 3-м ходу обходится дёшево; на 30-м — перечитывает 30 ходов контекста по полной цене.

Следствие: явное указание effort="high" в одних закэшированных запросах и его отсутствие в других сбрасывает кэш так же — ведь они по поведению эквивалентны, но по тексту различаются. Выберите одно соглашение (всегда задавать или всегда опускать) и придерживайтесь его.

Claude Code — поверхность в CLI​

Claude Code даёт effort как интерактивную команду, флаг запуска и переменную окружения (побеждает наивысший приоритет, в обратном порядке):

# In-session (interactive slider, or direct)
/effort
/effort xhigh
/effort auto # reset to model default

# At launch
claude --effort low

# Environment (overrides everything else)
CLAUDE_CODE_EFFORT_LEVEL=high claude

Две смежные команды стоит знать, потому что это не уровни effort, но ведут себя рядом с ними:

  • ultrathink — усиление более глубокого рассуждения на один ход, которое не меняет effort сессии. Используйте, когда хотите, чтобы следующий ход думал усерднее, не сбрасывая кэш на всех последующих ходах.
  • ultracode — задаёт xhigh на всю сессию и даёт Claude Code постоянное разрешение запускать мультиагентные рабочие процессы (через системные сообщения посреди разговора). В API значения ultracode нет — это удобство CLI, которое сочетает xhigh с разрешением на оркестрацию.

Правила сохранения, которые стоит помнить: low, medium, high и xhigh сохраняются между сессиями Claude Code после установки. max действует только в текущей сессии — его нужно применять заново в следующий раз.

Разбор настройки — один промпт, три effort​

Чтобы откалибровать интуицию, запустите один и тот же промпт на трёх уровнях и сравните форму вывода:

Промпт для калибровки (запустить на low, high, xhigh)

Task: Review this pull request for security issues.

<pr_diff>
[paste a real diff — 300+ lines, multi-file, at least one auth-touching change]
</pr_diff>

Report: severity-tagged findings + a one-line fix per finding.
Do not restate what the diff does.

Ожидайте примерно следующее:

  • low — находит очевидные проблемы высокой серьёзности (конкатенация SQL-строк, непроверенный пользовательский ввод в заголовке). Пропускает тонкие логические ошибки. 1–2 вызова инструментов, если они доступны. Короткий вывод. Быстро.
  • high — полный анализ. Находит большинство уязвимостей, включая тонкие. Несколько точечных вызовов инструментов для чтения связанных файлов. Структурированные находки. Здесь останавливается большинство команд.
  • xhigh — исчерпывающий. Рассматривает новые векторы атак и эшелонированную защиту. Читает соседние файлы, которых low/high не касались. Намного больше вызовов инструментов. Заметно выше расход токенов.

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

Sonnet 5 сдвинул калибровку — не переносите уровни вслепую​

Если вы запускали Sonnet 4.6 на high и перешли на Sonnet 5, то при том же уровне Sonnet 5 тратит ближе к тому, что Sonnet 4.6 тратил на max — шкала effort у Sonnet 5 сдвинута. Собственная рекомендация Anthropic: Sonnet 5 medium ≈ Sonnet 4.6 high. Это разница в стоимости запроса, которую стоит проверить, если вы воспроизводили трафик без корректировки effort. Полную историю миграции см. в полевом руководстве по Sonnet 5.

Закрепите​

Нажмите Enter или пробел, чтобы перевернуть карточку. Используйте стрелки влево и вправо для перехода между карточками.Показан термин.
1 / 9

Проверьте себя

0/7
  1. Какое из этих значений НЕ является допустимым значением effort в Messages API?
  2. Вы ведёте закэшированный разговор из 20 ходов и на 21-м ходу меняете ВЕРХНЕУРОВНЕВЫЙ effort с high на xhigh. Что произойдёт?
  3. Вы на Opus 5.5 и полностью опускаете параметр effort. Какой уровень будет работать?
  4. Вы в Claude Code и хотите, чтобы только СЛЕДУЮЩИЙ ход рассуждал усерднее, не трогая настройку effort сессии. Лучший ход?
  5. На Opus 4.8 при effort='xhigh' ваши ответы продолжают обрезаться со stop_reason='max_tokens' после долгого рассуждения. Наиболее вероятное исправление?
  6. Куда идёт effort при создании агента Claude Managed Agents (обновление июля 2026)?
  7. Какое изменение делает так, что Sonnet 5 'medium' ведёт себя ближе всего к Sonnet 4.6 на 'high'?

Источники и дополнительное чтение​

Далее​