Обычно считается, что дешевле — значит хуже: хочешь сэкономить, готовься к более слабым ответам. Anthropic решила проверить это на практике и разобрала реальные случаи использования Claude Platform (API-платформы Claude для разработчиков). Вывод оказался неожиданным: во многих приложениях можно снизить стоимость запросов, вообще не жертвуя качеством — если правильно настроить три вещи: кэш промптов, формулировки инструкций и параметр «усилия» модели.
Все эти рекомендации Anthropic собрала в специальный skill (навык) claude-api, который можно подключить прямо в Claude Code. Дальше — что именно там разобрано и какие цифры получились в тестах.
Кэш промптов: почему это первый рычаг экономии
Перед тем как Claude сгенерирует ответ, он сначала «переваривает» твой промпт во внутреннее рабочее состояние — этот этап называется prefill, и именно он самый дорогой по вычислениям. Prompt caching (кэширование промпта) сохраняет это состояние: если следующий запрос начинается с того же самого префикса, Claude читает готовый результат вместо того, чтобы пересчитывать его заново. Чтение из кэша стоит в разы дешевле полной обработки входных токенов.
Но у кэша есть строгие условия. Он привязан к конкретной модели, требует байт-точного совпадения всего префикса запроса и живёт ограниченное время (TTL — time-to-live). Если хоть один символ в начале промпта изменился — кэш «промахивается», и ты платишь по полной цене, а иногда и дороже: перезапись кэша стоит в 1.25 раза дороже обычного входа (и в 2 раза — для часового кэша).
Как не сломать кэш: практические правила
Anthropic выделила несколько типичных ошибок, которые незаметно ломают кэш-хиты:
| Что происходит | Почему это ломает кэш |
|---|---|
| Меняешь effort или thinking посреди диалога | Эти настройки «зашиты» в начало промпта — часть кэшируемого префикса |
| В системном промпте есть timestamp или ID | Значение меняется от запроса к запросу |
| Описания инструментов переупорядочиваются | Любое изменение в блоке tool definitions рвёт кэш |
| Форкаешь диалог для сабагента | Кэш родителя наследуется только при полном совпадении префикса, модели и effort |
| Синхронный вызов инструмента длится дольше TTL | Кэш истекает, пока агент ждёт результат |
Хорошая новость — с Claude Opus 5 и Fable 5.1 effort можно менять на ходу без разрыва кэша, это уже исключение из общего правила.

Чтобы держать кэш-хиты высокими, в Anthropic советуют: следить за hit rate через диагностику в Claude Console (она показывает, где именно разошлись два запроса), откладывать редко используемые инструменты через флаг defer_loading — тогда они не занимают место в кэшируемом префиксе, а подгружаются только когда реально нужны. Системные обновления лучше добавлять как отдельное сообщение посреди диалога, а не редактировать сам системный промпт — так кэш не сбрасывается.

Ключевая идея тут — держать стабильную часть промпта (инструменты, системные инструкции) впереди, а растущий диалог — позади неё. Если предстоит операция, которая всё равно перезапишет кэш (например, компактификация длинного диалога), это удачный момент, чтобы одновременно сменить модель или effort — платить за промах всё равно придётся. А если хочешь снизить задержку в начале сессии, можно «прогреть» кэш заранее: отправить запрос с max_tokens: 0 и явной точкой кэширования, пока пользователь ещё печатает свой первый вопрос.
Совет
Если твой агент часто ждёт долгие вызовы инструментов дольше 5 минут — стандартный TTL кэша не спасёт. В таких случаях стоит выставлять часовой TTL на префиксе.
Инструкции-анахронизмы: старые заклинания против новых моделей
Со временем в промптах накапливаются инструкции, которые «латают» слабости старых моделей — но новые модели этих слабостей уже не имеют, а инструкции остаются и начинают мешать. Anthropic называет это анти-паттернами промптинга:
| Анти-паттерн | Что происходит с топовой моделью |
|---|---|
| «Дважды проверь себя», «убедись перед ответом» | Модель буквально выполняет это, тратя лишние токены |
| «Будь максимально дотошным», «КРИТИЧЕСКИ ВАЖНО…» | Приводит к избыточной подробности и лишним вызовам инструментов |
| Обязательный scratchpad, «думай по шагам» шаблоны | Накладывается на встроенное мышление модели, тратит токены впустую |
| Устаревшие few-shot примеры | Учат новую модель имитировать длинные цепочки рассуждений там, где это не нужно |
| Противоречивые правила | Топовые модели лучше следуют инструкциям буквально — и застревают на противоречии |
| Настройки для старой версии модели | Платформа может просто отвергать устаревшие параметры (например, ручной thinking budget) |
Команда prompt-audit: как найти анти-паттерны автоматически
В skill claude-api появилась команда, которая ищет эти анти-паттерны за тебя. В Claude Code достаточно запустить /claude-api prompt-audit — она проверит всё в рабочей директории: промпты, конфигурацию Claude Code (например, CLAUDE.md) и даже код приложения, который обращается к Claude API.
Anthropic протестировала это на миграции с Opus 4.8 на Opus 5 на бенчмарке поддержки клиентов. Взяли чистый промпт и по одному добавляли анти-паттерн: устаревшую настройку thinking, пару противоречивых правил про возврат средств, ручной scratchpad, «проверь дважды», «будь максимально дотошным» и обязательную процедуру из шести шагов — получилось шесть «испорченных» промптов.

Каждый прогнали на Opus 4.8, затем на Opus 5 с той же самой инструкцией (только модель сменили), и на Opus 5 после прогона /claude-api prompt-audit. Результат: прогон аудита снизил расходы на 14.6% и одновременно поднял точность на 5.3% в среднем. Причина падения точности без аудита была тройная: устаревшая настройка thinking просто отвергалась API на каждом запросе роутинга; противоречивые правила про возврат заставляли Opus 5 придерживать четыре законных возврата, ожидая подтверждения от клиента; а ручной scratchpad конфликтовал со встроенным мышлением модели — в трёх тикетах вызов инструмента написался внутри рассуждения, но так и не выполнился.
Effort: сколько «думать» должна модель
Effort (усилие) — это параметр, который говорит Claude, насколько усердно решать задачу. На низком effort модель быстрее приходит к выводу. На высоком — обдумывает варианты, проверяет себя, исследует альтернативы перед ответом. Соотношение цены и качества между этими уровнями может сильно отличаться от задачи к задаче.
Вот конкретные цифры из тестов Anthropic на бенчмарке FrontierCode Diamond (50 самых сложных задач) для модели Fable 5:
| Effort | Точность | Цена за задачу |
|---|---|---|
| Низкий | 11.5% | $5.35 |
| Максимальный | 30.9% | $19.00 |
Рост effort почти втрое поднимает точность (+19 пунктов) за 3.5-кратную цену — тут повышение явно оправдано. А вот на Humanity's Last Exam (без инструментов) для Fable 5.1 картина иная: 53% точности за $0.30 на низком effort против 61% за $2.23 на максимальном — последний шаг добавляет пол-балла за 46% доплаты, и этот выигрыш укладывается в обычный разброс шума бенчмарка. Иными словами, платишь больше — а измеримой выгоды нет.
Важно
Effort можно промахнуться в обе стороны: слишком высокий — Claude «пережёвывает» задачу дольше, чем она того требует; слишком низкий — модель останавливается раньше, чем собрала достаточно доказательств, и отвечает по первому найденному результату вместо третьего, более надёжного.
Как правильно откалибровать effort
Один из самых интересных выводов Anthropic: более сильная модель на низком effort может быть дешевле слабой модели, которая работает на пределе. На бенчмарке CursorBench 3.2 Fable 5.1 на низком effort показывает тот же результат, что Fable 5 на максимальном — но за треть цены. Причина двойная: на низком effort новая модель делает меньше работы на задачу, а чтение из её кэша стоит $0.25 за миллион токенов против $1.00 у Fable 5.
Практический совет — измерять производительность приложения по всей шкале effort. Если график «цена-качество» получается плоским (то есть увеличение effort почти не поднимает точность), значит задача не привязана к глубине рассуждений, и платить за максимальный effort просто нет смысла.
Автоматизация: hillclimb ищет оптимум сам
Ручной перебор моделей и уровней effort — трудоёмкое занятие, поэтому в claude-api добавили команду /claude-api hillclimb. Она делит твой набор тестовых примеров на тренировочную и проверочную части, сама предлагает изменения конфигурации и читает проваленные примеры, чтобы понять, что именно нужно исправить в промпте.
Anthropic прогнала hillclimb на бенчмарке поддержки клиентов, начав с Opus 4.8 на стандартном (высоком) effort. Сначала алгоритм попробовал Opus 5 на низком effort и применил prompt-audit — убрал обязательные ритуалы вызова инструментов, scratchpad-шаги и противоречивые правила. Это превысило точность базовой линии Opus 4.8 — 98.9% на тренировочных данных — и снизило цену до 2.6 цента за тикет. Дальше hillclimb попробовал спуститься до Sonnet 5 на низком effort — цена упала до 1 цента за тикет, но точность просела до 88.9%. Разобрав проваленные тикеты, система добавила правила роутинга и сверку с лимитом возврата — точность вернулась к 98.9% при той же цене.
На 14 отложенных тикетах, которые алгоритм не видел вовсе, финальная конфигурация показала 90.5% против 78.6% у исходной настройки — и это примерно в пять раз дешевле.
Что с этим делать тебе
Если ты только осваиваешь работу с API моделей — не обязательно сразу гнаться за автоматизацией такого уровня, начать стоит с простых вещей. Понять, как вообще работает передача данных между твоим кодом и внешним сервисом, поможет бесплатный курс zero2claude — там разбираются базовые механики терминала и работы с Claude Code, на которых строится всё остальное.
Главный вывод из статьи Anthropic простой: цена и качество не обязаны быть противниками. Часто дорогой ответ получается не потому, что задача сложная, а потому что промпт написан для устаревшей модели, кэш ломается на пустяках, а effort выставлен «на всякий случай» на максимум. Разберись с этими тремя рычагами — и экономия придёт сама, без потери качества.
Частые вопросы
Что такое prompt caching и зачем он нужен?
Это механизм, который сохраняет промежуточное состояние обработки промпта (KV-кэш), чтобы не пересчитывать его заново при похожих запросах. Чтение из кэша стоит в разы дешевле полной обработки — это самый прямой способ снизить счёт за API.
Почему кэш промпта вдруг перестаёт работать?
Чаще всего из-за мелких изменений в начале запроса: динамического timestamp в системном промпте, смены effort посреди диалога, переупорядоченных описаний инструментов или превышения времени жизни кэша (TTL). Claude Console показывает диагностику, в каком именно месте разошлись два запроса.
Что такое анти-паттерны в промптах?
Это инструкции, добавленные когда-то, чтобы «подлатать» слабости старой модели — например, «проверь дважды» или обязательный scratchpad. На новых моделях они лишние: модель выполняет их буквально, тратя токены и время без пользы, а иногда даже мешая собственному встроенному мышлению.
Как понять, какой уровень effort нужен моей задаче?
Лучший способ — прогнать одну и ту же задачу на нескольких уровнях effort и посмотреть на график цена/качество. Если кривая почти плоская, задача не завязана на глубину размышлений, и платить за максимальный effort бессмысленно.
Нужно ли мне быть разработчиком, чтобы применить эти советы?
Большинство рекомендаций касаются людей, которые пишут код, обращающийся к Claude API напрямую. Но если ты только учишься работать с Claude Code и терминалом, разобраться в базовых механиках стоит начать с более простых материалов — например, курса zero2claude.
Если хочешь попробовать всё это руками — начни с бесплатного курса «Claude с нуля».
Источник
По мотивам статьи Anthropic «Reducing cost and improving performance with Claude Platform». Пересказали по-русски для новичков.