Claude Fable 5.1: управление effort по сообщениям и изменение инструментов в середине сессии без сброса кэша

Обновление Anthropic API от 1 сентября добавило три beta-функции — per-message effort, turn-scoped system-сообщения и mid-conversation tool changes — позволяющие менять поведение модели в длинной сессии без инвалидации кэш-префикса.

Опубликовано источник Anthropic

Архивный материал, подготовленный с помощью ИИ по указанному источнику и опубликованный без индивидуальной проверки. Ответственный редактор: Joe Werner.

Абстрактная диаграмма роутинга: три канала динамического управления подключаются к закэшированному префиксу разговора, редакционный стиль
Машинный перевод с английского оригинала — читать оригинал

Операторы, запускающие длинные agentic-сессии на Claude, давно сталкиваются с одной конкретной проблемой: изменить поведение модели в середине разговора — без потери кэша. Если отредактировать верхнеуровневое поле system, чтобы добавить новое ограничение, кэш-префикс инвалидируется — следующий запрос переплатит за входные токены по стандартному тарифу. То же самое происходит при изменении массива tools на третьем ходу. Если нужно, чтобы модель тратила меньше токенов на быстрые запросы, но больше — на сложный анализ в той же сессии, приходится выбирать: зафиксировать один уровень effort на всю сессию или платить кэш-штраф каждый раз при реконфигурации.

Обновление Claude API от 1 сентября решает все три сценария с помощью beta-функций на Claude Fable 5.1, Mythos 5.1 и Opus 5. Общая идея: разрешить оператору менять то, что нужно, не трогая префикс, уже находящийся в кэше.

Три beta-функции, одна архитектурная цель

Per-message effort (beta header: mid-conversation-output-config-2026-07-01) позволяет задать output_config.effort внутри сообщения role: "system" в любой точке разговора. Изменение применяется с этого момента вперёд. Всё, что было до этой точки — system prompt, определения инструментов, ранние ходы разговора — остаётся в кэше. Пример запроса:

messages = [
    {"role": "user", "content": "Кратко резюмируй этот репозиторий."},
    {"role": "system", "content": [{"type": "output_config", "output_config": {"effort": "low"}}]},
    {"role": "assistant", "content": "..."},
    {"role": "user", "content": "Теперь проведи полный security-аудит модуля аутентификации."},
    {"role": "system", "content": [{"type": "output_config", "output_config": {"effort": "high"}}]},
]

Без этой функции операторы либо фиксируют один уровень effort на всю сессию, либо открывают новую сессию для каждого уровня — теряя кэш-хиты от общего длинного префикса.

Turn-scoped system messages (beta header: mid-conversation-system-clear-at-2026-08-21) решают смежную задачу: напоминания, которые вставляются каждый ход, накапливаются в истории. Типичный agentic-паттерн добавляет короткое напоминание на каждый ход — например, «Ты проверяешь файл X, сосредоточься на auth». С обычным mid-conversation system message эти напоминания остаются в истории и учитываются в токенах каждого следующего запроса. При clear_at: "next_user_message" сообщение показывается модели только в текущем ходу, а затем остаётся в истории с нулевой токен-стоимостью. Кэш не инвалидируется, напоминания не накапливаются.

Mid-conversation tool changes (beta header: mid-conversation-tool-changes-2026-07-01) — аналог для инструментов. Массив tools находится в самом начале хэшируемого префикса запроса, поэтому его изменение инвалидирует кэш для всего разговора. Beta позволяет задекларировать все инструменты в tools при старте сессии, пометить часть из них defer_loading: true, чтобы временно скрыть их от модели, а потом добавлять и убирать инструменты через блоки tool_addition и tool_removal внутри сообщений role: "system". Массив tools при этом не меняется — префикс остаётся валидным.

tools = [
    {"name": "read_file", ...},
    {"name": "write_file", ..., "defer_loading": True},  # скрыт до явного добавления
]

# Позже, когда агенту нужно писать файлы:
messages.append({
    "role": "system",
    "content": [
        {"type": "tool_addition", "tool": {"type": "tool_reference", "name": "write_file"}}
    ]
})

Что это меняет для операторов

Эти три функции наиболее важны для операторов с длинными общими префиксами — большая кодовая база в контексте, многоходовой multi-agent workflow, корпоративная сессия с развёрнутым system prompt. При кэш-хите на Fable 5.1 читать токены стоит $0.25/MTok — это 0.025× от базовой цены input в $10/MTok. Сохранить префикс в кэше на десятках ходов — это конкретная экономия, а не абстрактная.

До этих beta-функций оператор, которому нужно было менять поведение в середине сессии, рисковал инвалидировать кэш на каждом таком шаге. Для system prompt в 500k токенов один промах по кэшу стоит $5.00 входных токенов — вместо $0.125 при кэш-хите. Десять случайных инвалидаций за сессию — это $48.75 лишних расходов.

По поддерживаемым платформам: Amazon Bedrock и Google Cloud поддерживают все три beta-функции на тех же моделях. Azure Foundry в текущей документации не упомянут — стоит проверить поддержку перед использованием beta headers там.

Для gateway-операторов есть отдельный момент: beta headers должны проходить через proxy без изменений. Если прокси фильтрует неизвестные заголовки anthropic-beta, beta-функции тихо перестают работать — запрос по-прежнему возвращает 200, но per-message effort игнорируется, turn-scoped сообщения накапливаются, deferred инструменты никогда не появляются. Это поведенческий сбой, а не HTTP-ошибка, поэтому мониторинг может его не поймать. Убедитесь, что ваш gateway пробрасывает все заголовки anthropic-beta от клиента до Anthropic API без изменений.

Как меняется структура запросов

До этих beta-функций gateway или оркестрационный слой, которому нужно было менять effort или инструменты между ходами, имел три варианта: открыть новую сессию, принять кэш-штраф или городить временные обходные решения. Теперь есть четвёртый вариант, бесплатный с точки зрения кэша.

Для effort миграция прямолинейная: убрать верхнеуровневый output_config.effort из корня запроса и вместо этого вставить mid-conversation role: "system" сообщение перед первым ходом пользователя, а дальше добавлять новые значения effort по ходу сессии. Верхнеуровневый параметр остаётся рабочим — per-message effort добавляется поверх, а не заменяет его.

Для инструментов перестройка чуть серьёзнее. Нужно задекларировать полный набор инструментов в tools при старте, пометить defer_loading: true всё, что не нужно сразу, а оркестрационный слой должен отслеживать, какие инструменты активны, и вставлять tool_addition/tool_removal в нужные ходы. Если текущая архитектура модифицирует tools между запросами, путь миграции — перейти к однократному объявлению и block-операциям; результат поведения тот же, но префикс сохраняется.

Все три функции требуют соответствующего beta header. При использовании SDK-обёрток проверьте, что версия SDK корректно пробрасывает beta headers — старые закреплённые версии могут не поддерживать это. Заголовок anthropic-beta принимает список через запятую, так что можно включить несколько beta за один запрос.

На что обратить внимание

Функции пока в beta-статусе, и Anthropic не давала обязательств по стабильности формата запросов до GA. Суффикс с датой в имени header (mid-conversation-output-config-2026-07-01) следует паттерну предыдущих beta, которые при GA иногда меняли header, иногда переставали его требовать. Следите за platform release notes на предмет перехода в GA.

Для multi-provider routing layers есть конкретный риск: если сессия переключится на fallback-провайдера в середине разговора (например, с прямого Anthropic API на Bedrock), а у Bedrock другая версия SDK или другой темп rollout бета-функций, per-message effort и deferred инструменты могут повести себя иначе — и это будет сложно поймать в мониторинге. До GA лучше держать сессии с этими beta-функциями на одном провайдере или как минимум протестировать поведение fallback-провайдера заранее.

Для пользователей Claude Code через gateway, смотрящий на Anthropic API: внутренняя оркестрация Claude Code сама использует prompt caching и mid-conversation system messages. Новые beta-функции — это API-level контролы для разработчиков, которые строят собственный оркестрационный слой, а не для управляемых сессий Claude Code. Два уровня не конфликтуют, но работают независимо.

Абстрактная архитектурная диаграмма, показывающая трансформацию формы API-запросов при прохождении через шлюз, иллюстрирующая четыре ломающих изменения Claude Opus 5.5

Claude Opus 5.5: четыре ломающих изменения API и их влияние на маршрутизацию

Claude Opus 5.5: четыре ломающих изменения — thinking нельзя отключить, tool_choice типы any/tool возвращают 400, thinking-блоки не читаются не-Fable/Mythos моделями, computer_20251124 удалён. Конкретные исправления и влияние на резервную маршрутизацию.

источник Anthropic
Claude API компакция по требованию и режим auto для разрешений: диаграмма пайплайна с фоновой суммаризацией и серверной оценкой доверия

Claude API: компакция по требованию и режим `auto` для разрешений меняют архитектуру агентных циклов

Два новых бета-обновления Claude API: `compact-2026-09-04` выносит суммаризацию в фоновый вызов, а режим `auto` передаёт оценку доверия к инструментам на сторону сервера. Оба меняют проектирование агентных циклов.

источник Anthropic
Абстрактная схема маршрутизации с инъекцией system message в середину диалога

Mid-Conversation System Messages в Claude API получили статус GA: контрольный список для операторов gateway и прокси

15 июля Anthropic убрала требование beta-заголовка для mid-conversation system messages на API, Bedrock и Vertex AI. Если ваш gateway фильтрует role:system в массиве messages при проксировании Claude, agentic-сессии уже молча сломаны.

источник Anthropic
Помощь и контакты