Компакция в Claude Messages API: два беты, подписанный блок и учёт биллинга
сжатие само по себе не дешевле
2026-02-05 Anthropic вывела compaction API в бета (сводка по достижении порога), а 2026-09-14 добавила компакцию по требованию: верхнеуровневый параметр compaction возвращает подписанный блок compaction. Страница отвечает на четыре вопроса: как шлётся каждый путь, как возвращать блок (не то место — 400, это дословно у вендора), почему usage.iterations меняют картину расходов и как это связано с prompt caching.
Обновлено 2026-09-21
Четыре ключевых пункта
Разные beta-заголовки
Пороговая компакция идёт с compact-2026-01-12 и настраивается внутри context_management.edits с типом compact_20260112; по требованию — compact-2026-09-04 и верхнеуровневый compaction. Дословно: You can't send compaction and context_management on the same request.
Порог срабатывания по умолчанию
Таблица параметров: trigger по умолчанию {"type": "input_tokens", "value": 150000}, input_tokens — единственный поддерживаемый тип, value не меньше 50 000 токенов. После срабатывания API делает сводку, кладёт её в блок compaction и продолжает ответ уже на сжатом контексте.
Блок не на своём месте — 400
Компакция по требованию возвращает один подписанный блок. Дословно: Leaving the summarized messages in front of a signed block is a 400 error. Блок ставится первым в messages вместо резюмированных сообщений, и его надо вернуть без изменений, вместе с signature. Пороговый блок, наоборот, идёт после того, что он резюмировал.
Почему это тарифицируется отдельно
Формулировка вендора: Compaction requires an additional sampling step, which contributes to rate limits and billing. В usage.iterations появляется запись типа compaction; верхнеуровневые input_tokens и output_tokens её не включают, поэтому реальный расход — сумма по iterations.
Что это
Серверная компакция: когда запрос доходит до настроенного порога, Claude сам сворачивает диалог в сводку и возвращает её в блоке compaction; в последующих запросах API автоматически отбрасывает все блоки до этого блока и продолжает от сводки. Позиция в документации — замена клиентским суммаризаторам (Server-side compaction is the recommended strategy), а сценария два: длинный однопоточный чат и задачи с большим количеством продолжений (обычно вызовов инструментов), которые могут не влезть в контекстное окно.
Что произошло
Обе даты читаются дословно в официальных API release notes: 2026-02-05 — «We've launched the compaction API in beta, providing server-side context summarization for effectively infinite conversations. Available on Opus 4.6.»; в записи September 14, 2026 (перепроверено 2026-09-21) — «The Messages API can now compact a conversation on demand ... in beta with the compact-2026-09-04 beta header». Запрос по требованию отдаёт один подписанный блок и не даёт ответа (stop_reason — compaction); он может идти в фоне, пока диалог продолжается на полной истории, а последние реплики можно сохранить дословно после сводки.
Хронология
2026-02-05: в релизных заметках — «We've launched the compaction API in beta ... Available on Opus 4.6.», первое появление серверной компакции в бете.
2026-09-14: там же появляется компакция по требованию (beta-заголовок compact-2026-09-04): верхнеуровневый compaction, подписанный блок, фоновая сводка и дословно сохраняемые последние реплики.
2026-09-21: страница сняла обе официальные .md-документы и сверяла дословно каждый параметр, значение по умолчанию и код ошибки; каталог и 30-дневные оплаченные вызовы проверены в тот же день.
Подтверждено vs осторожно
Подтверждено документацией
Дословно в страницах, снятых 2026-09-21: trigger по умолчанию 150000 и value не менее 50 000; input_tokens — единственный тип триггера; непустые instructions полностью заменяют системную подсказку сводки (для compaction — до 16 384 символов); pause_after_compaction по умолчанию false; Compaction requires an additional sampling step, which contributes to rate limits and billing; верхнеуровневый usage не включает итерацию compaction — суммировать iterations; Leaving the summarized messages in front of a signed block is a 400 error; compaction и context_management нельзя в одном запросе; endpoint подсчёта токенов игнорирует compaction; изображения, документы, container_upload и загруженные URL из резюмированной части исчезают вместе с заменой.
⚠️ Осторожно
Расхожее «чем больше жмёшь, тем дороже» как факт писать нельзя. Вендор говорит и про лишнюю платную выборку, и — в разделе Prompt caching — что Compaction works well with prompt caching, показывая breakpoint cache_control на блоке и советуя ставить breakpoint в конце системного промпта, чтобы его кэш не сбрасывался; плюс повторное использование прежнего блока compaction дополнительно не тарифицируется. Точная формулировка: бесплатно не будет, а выигрыш зависит от расстановки breakpoint. Ещё: всё в бете; при неудачной сводке ответ всё равно 200 с пустым content, и вызов тарифицируется и виден в usage.iterations; временный сбой сервера даёт retryable 529 overloaded_error с error.details.error_code compaction_unavailable; поле remaining бюджета задачи вместе с compaction присылать нельзя — это 400.(все четыре пункта сверены с документацией 2026-09-21; если её поменяют — раздел переписать)
Общее и различия
Общее
Сводка делается на сервере, возвращается блок compaction, пишет её та же модель, что указана в запросе (в Current limitations прямо сказано: нельзя взять другую, например более дешёвую), добавляется выборка, идущая в rate limit и биллинг, и всё это ещё бета.
Различия
Разное в запуске: пороговый путь срабатывает посреди запроса и может сработать несколько раз за запрос (с server tools порог проверяется в начале каждой итерации), а compaction — это отдельный запрос, который тратится на сводку и не даёт ответа. Разное в расположении: пороговый блок идёт после резюмированного, подписанный — вместо него. Разные и платформы: по требованию — available on the Claude API but not on Amazon Bedrock or Google Cloud.
Как пользоваться
Пять шагов. 1) Выбрать путь: пороговый — если контекстом должен управлять API внутри обычных запросов; compaction — если момент сжатия нужен под вашим контролем, нельзя останавливаться на время сводки или надо сохранить последние реплики и их размышления. 2) Заголовок: compact-2026-09-04 обязателен и на запросе со сводкой, и на каждом последующем с подписанным блоком; в документации отмечено, что без него приходит общая ошибка валидации (compaction: Extra inputs are not permitted), про заголовок там не сказано. 3) Возврат: блок первым в messages, резюмированные сообщения убрать. 4) Учёт расходов: суммировать usage.iterations, а не смотреть два верхнеуровневых поля. 5) Если сводки нет: с tools модель иногда вызывает инструмент вместо сводки — тогда в блоке content: null; лечится instructions, прямо запрещающими вызов инструментов.
На QCode
Компакция — это параметр Messages API и beta-заголовок, а не переключатель на нашей стороне. Мы не отправляли реальный платный запрос через наш ретранслятор, чтобы это проверить (тестовые аккаунты у нас только для чтения), поэтому страница говорит лишь о том, чей это слой: параметр трактует Anthropic, и ничего от своего имени мы не обещаем. Сверка каталога 2026-09-19: claude-opus-5, claude-sonnet-5, claude-fable-5, claude-fable-5-1, claude-opus-4-8 и claude-sonnet-4-6 из списка поддержки беты есть в публичном списке /models, оплаченных вызовов за 30 дней — 59,161 / 222,137 / 12,904 / 15,728 / 22,007 / 151,645; claude-mythos-5 и claude-mythos-5-1 в списке тоже есть, за 30 дней 0. Бета меняется без предупреждения, поэтому страница ничего не обещает про стабильность этого интерфейса.
Частые вопросы
Можно включить обе беты сразу?
Нельзя. В разделе How it fits with the rest of the API сказано You can't send compaction and context_management on the same request, и там же — что пороговая компакция (compact_20260112) не работает на запросе с подписанным блоком. Выбирайте один путь.
Компакция экономит деньги?
Сама по себе — нет. Вендор говорит, что компакция требует лишнюю выборку, влияющую на лимиты и биллинг, и что верхнеуровневые input_tokens / output_tokens её не включают: надо суммировать usage.iterations. Меньше становится контекст последующих запросов; итог зависит от расстановки cache breakpoint и от того, что повторный прежний блок тарифицируется дополнительно в ноль.
Куда класть подписанный блок?
Первым в messages, удалив резюмированные сообщения, и сохранив блок ровно как полученный — вместе с signature. Оставить исходные сообщения перед подписанным блоком — 400 (дословно в документации). compact-2026-09-04 нужен и на всех последующих запросах с блоком.
Почему блок пришёл пустой?
Чаще всего из-за инструментов: в Current limitations сказано, что при наличии tools модель иногда вызывает инструмент вместо сводки, и тогда у compaction-блока content: null. Лечение — instructions, явно запрещающие вызов инструментов и требующие текст. Учтите: неудачная сводка — это всё равно 200 с пустым content, вызов тарифицируется и попадает в usage.iterations.
Какие модели можно попробовать на QCode?
Из списка поддержки беты на QCode в публичном /models есть claude-opus-5, claude-sonnet-5, claude-fable-5, claude-fable-5-1, claude-opus-4-8 и claude-sonnet-4-6 (проверка 2026-09-19; оплаченных вызовов за 30 дней 59,161 / 222,137 / 12,904 / 15,728 / 22,007 / 151,645). Компакция — параметр API, мы его не включаем за вас; бета может измениться, гарантий стабильности страница не даёт.
Можно поручить сводку более дешёвой модели?
Нет. Дословно: The model specified in your request is used for summarization. There is no option to use a different (for example, cheaper) model for the summary. Настроить можно только instructions (полная замена стандартной подсказки) и порог. Полный контроль — это отключить серверную компакцию и суммировать на клиенте, а это другой дизайн.
Источники
Anthropic, Compaction, https://platform.claude.com/docs/en/build-with-claude/compaction (снято 2026-09-21 в официальном .md-виде, HTTP 200; разделы Compatibility, Parameters, Understanding usage, Prompt caching, Current limitations, Compact on demand) и Claude release notes, https://platform.claude.com/docs/en/release-notes/overview (тот же способ; записи 2026-02-05 и September 14, 2026 цитируются дословно). Наличие в каталоге и оплаченные вызовы за 30 дней — наши внутренние проверки (снимок публичного /models плюс платная ведомость).
Сначала почините учёт расхода
Заголовки, расположение блока и формулировки биллинга соответствуют официальным документам, снятым 2026-09-21; параметр трактует выше по течению, и от своего имени мы ничего не обещаем. Цены — на /pricing, каталог — на /models.
Связанное
Полное руководство по Context Engineering 2026
Компакция — один из приёмов инженерии контекста; там методология, без параметров API.
Добавление и удаление инструментов посреди разговора
Как инструкции и смена инструментов в середине диалога переживают сводку — там.
effort is not supported when thinking is disabled
Семейство ошибок про блоки размышлений и изменение истории: сохранённым репликам тоже нужна согласованность.
Страница пересказывает открытую документацию Anthropic и не связана с компанией. Имена параметров, значения по умолчанию, коды ошибок и цитаты — по версии, снятой 2026-09-21; бета-интерфейсы меняются без предупреждения. Вывод «компакция выгоднее» страница не делает: вендор описывает только лишнюю тарифицируемую выборку и поведение кэш-брейкпоинтов. QCode предоставляет доступ к API и не меняет бета-статус интерфейсов выше по течению.