Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Claude Fable 5.1: миграция и исправление ошибок инструментов
2026/09/07

Claude Fable 5.1: миграция и исправление ошибок инструментов

Мигрируйте с Claude Fable 5 без сбоев вызовов инструментов и истории диалога. Решение для принудительного выбора инструментов, блоков размышлений и fallback.

Миграция с Claude Fable 5 на Claude Fable 5.1 — не просто изменение имени модели в одной строке. Новая модель отклоняет принудительный выбор инструментов, связывает сохранённые блоки размышлений с префиксом разговора, который их породил, и не может отправлять свои блоки размышлений обратно в более старые модели Claude. Поэтому интеграция может пройти тест на одиночный запрос и все ещё сломаться при первом запросе со структурированным выводом, сжатой историей или fallback.

Безопасная миграция состоит из трёх частей: замена принудительных вызовов инструментов на автоматический выбор со строгой валидацией схемы, сохранение истории многоступенчатого диалога в режиме append-only и тестирование каждого маршрута, который может переключить разговор на более старую модель. Если вы используете OpenAI-совместимый маршрут, начните с руководства по запросам Claude Fable 5.1; примеры ниже используют нативный API Messages от Anthropic, чтобы каждое критическое изменение было видно.

Краткий ответ

  • Измените нативный ID модели на claude-fable-5-1, затем удалите режимы принудительного tool_choice; any и именованные инструменты возвращают HTTP 400.[1]
  • Сохраняйте системный prompt, инструменты и ранний префикс сообщений без изменений после блока размышлений Fable 5.1. Добавляйте новые инструкции вместо переписывания истории.[1]
  • Проверьте каждый fallback: старые модели Claude не могут читать блоки размышлений Fable 5.1, поэтому API удаляет их перед продолжением.[1]
  • Адаптивное размышление остаётся включённым. Замените ручные бюджеты токенов на effort и проверьте несовпадения префиксов в CI перед развёртыванием.[1]

Сначала сделайте инвентарь кодового пути, который вы действительно мигрируете

Ищите шире, чем просто буквальный ID модели. Обёртка может транслировать общее "требуется инструмент" в Anthropic-представление tool_choice: {"type":"any"}, сохранять блоки размышлений в хранилище разговора или изменять системный prompt при каждом запросе. Проблема OpenCode, обнаруженная вскоре после выпуска — полезный пример: её адаптер структурированного вывода выбрал использование требуемого инструмента, что превратилось в неподдерживаемый Anthropic режим any и выдало 400.[6] Эта проблема демонстрирует реальный паттерн интеграции; руководство по миграции Anthropic — авторитет для поведения API.

Проверьте эти компоненты перед редактированием:

КомпонентЧто искатьОжидаемый сбой
Выбор моделиclaude-fable-5, псевдонимы, списки fallbackСтарая модель всё ещё получает трафик
Адаптер инструментовtool_choice, required, any, именованные инструменты400 invalid_request_error
Структурированный выводсинтетические инструменты, обёртки схемОбёртка молча принуждает инструмент
Хранилище разговораthinking, redacted_thinking, подписиНедействительная подпись размышления после редактирования
Сжатиеинъекция итоговых сообщений, сохранение хвоста, удаление сообщенийПоздние блоки связаны со старым префиксом
Динамические promptsтекущая дата, разрешения, включённые инструментыСистема или префикс инструмента меняются каждый ход
Retry и fallbackстарые ID модели ClaudeРазмышления Fable 5.1 удаляются при переключении
Политика хранениярабочее пространство ZDR или организацияЗапрос отклонён до генерации

Делайте инвентарь на границе сериализованного запроса, если возможно. Объекты приложения могут выглядеть неизменёнными, даже если SDK или адаптер провайдера их переписывает.

Шаг 1: обновите ID модели, но сохраняйте остальное наблюдаемым

Нативный ID — claude-fable-5-1. Fable 5.1 сохраняет окно контекста из одного миллиона токенов, поддерживает до 128 000 выходных токенов и использует постоянно включённое адаптивное размышление.[2] Начните с той же формы производственного трафика и логируйте ID запросов, коды статуса, причины остановки, использование токенов, вызовы инструментов и fallback.

Не используйте эту миграцию для одновременного изменения effort, сжатия, формулировок prompt и всей системы инструментов. Узкое первое развёртывание делает 400 или смену поведения атрибутивной. После установления совместимости пройдитесь по low, medium, high, xhigh и max на рабочей нагрузке вместо предположения о том, что старая настройка оптимальна. Anthropic документирует high как значение по умолчанию.[1]

Также удалите одну из этих конфигураций, если предыдущая интеграция их предоставляет:

# Обе недействительны для Claude Fable 5.1.
thinking={"type": "disabled"}

thinking={"type": "enabled", "budget_tokens": 12000}

Fable 5.1 сам решает, когда и сколько думать. Завершающее сообщение ассистента, используемое как prefill, также возвращает 400, поэтому выражайте инструкции по выводу в системе или содержимом пользователя вместо этого.[1]

Шаг 2: замените принудительный выбор инструментов

Граница совместимости точна:

Значение tool_choiceFable 5Fable 5.1
{"type":"auto"}ПоддерживаетсяПоддерживается
{"type":"none"}ПоддерживаетсяПоддерживается
{"type":"any"}ПоддерживаетсяHTTP 400
{"type":"tool","name":"record_summary"}ПоддерживаетсяHTTP 400

Проверка применяется к Messages, Message Batches и подсчёту токенов. Сообщение об ошибке говорит, что типы tool-choice tool и any не поддерживаются для этой модели.[1] Повторная отправка того же тела не поможет.

Вот обычный паттерн до миграции:

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=4096,
    tools=[record_summary_tool],
    tool_choice={"type": "tool", "name": "record_summary"},
    messages=[
        {"role": "user", "content": "Summarize the meeting notes."}
    ],
)

Для Fable 5.1 используйте автоматический выбор, поместите требование в текущую инструкцию и сделайте инструмент строгим:

record_summary_tool = {
    "name": "record_summary",
    "description": "Record the structured meeting summary.",
    "strict": True,
    "input_schema": {
        "type": "object",
        "properties": {
            "summary": {"type": "string"},
            "action_items": {
                "type": "array",
                "items": {"type": "string"},
            },
        },
        "required": ["summary", "action_items"],
        "additionalProperties": False,
    },
}

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    tools=[record_summary_tool],
    tool_choice={"type": "auto"},
    messages=[{
        "role": "user",
        "content": (
            "Summarize the meeting notes, then call record_summary "
            "with the summary and action items."
        ),
    }],
)

strict: true ограничивает аргументы, если модель вызывает инструмент; это не воссоздаёт гарантию уровня транспорта, что инструмент должен быть вызван. Ваше приложение всё ещё должно убедиться, что ответ содержит требуемый блок tool-use. Anthropic также рекомендует JSON выводы через output_config.format, когда принудительный инструмент существовал только для получения JSON с валидной схемой.[1]

Если приложение должно требовать один именованный инструмент на полпути в разговор, добавьте сообщение role: "system" после последнего сообщения пользователя. Назовите инструмент, заявьте, что он требуется для этого хода, и скажите модели начать с вызова. Сохраняйте то системное сообщение в последующей истории. Это сохраняет ранний префикс; переписывание верхнего системного prompt не сработает.[1]

Рассматривайте "модель проигнорировала инструкцию" как обработанный результат. Отклоните ход, повторите попытку при ограниченной политике или безопасно сломайтесь. Не описывайте prompting как абсолютный механизм обеспечения.

Шаг 3: сохраняйте размышления в направлении, которое поддерживает API

Каждый блок размышлений Fable 5.1 содержит информацию о связывании модели и разговора. Совместимость односторонняя:

Размышления Fable 5  ───────► Fable 5.1 может их читать
Размышления Opus 5   ───────► Fable 5.1 может их читать

Размышления Fable 5.1 ──X──► Fable 5 не может их читать
Размышления Fable 5.1 ──X──► Opus 5 не может их читать

Claude Mythos 5.1 — документированное исключение, которое может читать блоки Fable 5.1. Когда маршрутизатор, fallback отказа или retry клиента отправляет разговор на более старую модель, API удаляет блоки, которые цель не может прочитать. Запрос может всё ещё успешно завершиться, и удалённые входные токены не будут выставлены счётом, но цель должна снова спланировать без этого рассуждения.[1]

Это имеет значение для оценки fallback. Первый запрос на Fable 5 и первый запрос на Fable 5.1 не эквивалентны переключению середины разговора с 5.1 на 5. Измерьте оба. Логируйте input_transformations с включённой бета-версией привязки размышлений; model_binding_mismatch обозначает блоки, удалённые, потому что модель изменилась.

Шаг 4: сделайте префикс разговора append-only

Блок размышлений Fable 5.1 действителен относительно точного системного prompt, набора инструментов и истории сообщений, которые его предшествовали. Изменение любого из них перед повторным использованием блока может дать 400 для недействительной подписи размышления.[1]

Обычные случайные редактирования включают:

  • перестроение системного prompt с новой меткой времени;
  • добавление или удаление инструмента из верхнего массива tools;
  • удаление старого результата инструмента для экономии токенов;
  • вставку итогового сообщения перед недавними ходами при сохранении их блоков размышлений;
  • удаление напоминания за ход при следующем запросе;
  • получение разных байтов изображения или документа из того же URL.

Последний случай легко упустить: привязка охватывает байты файла, а не только строку URL. Для файла, переиспользуемого в ходах, Anthropic рекомендует стабильный Files API file_id или содержимое base64.[1]

Предпочитайте эти паттерны:

  • добавляйте новые ходы без изменения ранних байтов;
  • добавляйте системные сообщения середины разговора для изменённых инструкций;
  • используйте поддерживаемые блоки добавления инструментов и удаления инструментов для изменений инструментов;
  • используйте сжатие на стороне сервера или редактирование контекста;
  • если сжимаете на клиенте, замените всю историю на одно итоговое сообщение и новый ход пользователя, не несущие старые блоки размышлений.

Эта окончательная форма на стороне клиента намеренно проста. Сохранение недавних ходов позади нового итогового сообщения безопасно только если их блоки thinking и redacted_thinking удалены, потому что эти блоки были созданы против истории до итогового сообщения.[1]

Диагностируйте несовпадения префиксов до того, как это сделают пользователи

Anthropic по умолчанию применяет проверку префикса разговора для учётных записей, созданных с 31 августа 2026 года или позже. Старые учётные записи могут не сломаться, если они не включат управление, что создаёт опасный разрыв тестирования "работает с нашим ключом" для библиотек, используемых с ключами клиентов.[1]

Используйте управление бета-версией в сеансе staging:

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    thinking={
        "type": "adaptive",
        "block_binding": {
            "prefix_mismatch_behavior": "drop_block"
        },
    },
    messages=conversation,
    betas=["thinking-binding-controls-2026-08-01"],
)

for change in response.input_transformations or []:
    print(change.path, change.reason)

С drop_block API удаляет первый несоответствующий блок размышления и каждый более поздний блок размышления, затем сообщает prefix_binding_mismatch. С умолчанием error он отклоняет запрос. Используйте drop_block когда деградированное продолжение предпочтительнее сбоя; используйте error в CI, чтобы немедленно выявить мутацию истории.[1]

Автоматический retry идентичного недействительного тела не может исправить несовпадение. Либо восстановите исходный префикс, удалите затронутые блоки размышления, либо явно запросите drop-поведение один раз.

Перепроверьте поведение, которое не выдаёт 400

Тесты совместимости должны также охватывать более тихие изменения. Anthropic говорит, что Fable 5.1 может издавать меньше параллельных вызовов инструментов в длинных циклах агента, выпускать меньше сообщений о прогрессе и вызывать поиск или получение реже при low effort.[3] Ни один из них не обязательно указывает на дефект, но каждый может изменить задержку или поведение продукта.

Создавайте утверждения вокруг того, что приложению нужно:

  • Для параллелизуемых чтений запишите вызовы за ход и всего раундов.
  • Для пользовательского интерфейса прогресса требуйте обновления, видимые пользователю в определённых интервалах, а не предполагайте их появление.
  • Для ответов, основанных на получении, сделайте критерии получения явными и отклоняйте ответы, в которых отсутствуют требуемые доказательства.
  • Для агентов редактирования проверьте список изменённых файлов и отговаривайте полные переписи файлов, когда требуется небольшой патч.[4]

Сохраняйте обработку отказа тоже. Fable 5.1 может возвращать stop_reason: "refusal" с stop_details.category; не рассматривайте пустой текст ответа как сбой транспорта. Любой fallback должен учитывать одностороннюю совместимость размышлений.[2]

FAQ

Почему Fable 5.1 возвращает 400 для моего запроса структурированного вывода?

Проверьте сериализованный запрос Anthropic. Фреймворк может реализовать структурированный вывод, заставляя синтетический инструмент с tool_choice: any. Fable 5.1 отклоняет и any и именованный выбор tool. Переключитесь на автоматический выбор инструмента плюс строгую схему и явную инструкцию, или используйте механизм JSON-вывода Anthropic.

Гарантирует ли strict: true, что Claude вызовет инструмент?

Нет. Это гарантирует соответствие схеме аргументов, когда инструмент вызывается. Инструкция может требовать вызова, но ваше приложение всё ещё должно подтвердить, что требуемый блок tool-use существует и обработать его отсутствие.

Может ли Fable 5.1 продолжить разговор Fable 5?

Да. Fable 5.1 может читать сохранённые размышления из Fable 5 и других задокументированных более ранних моделей Claude. Обратное направление не совместимо: старая цель получает разговор после удаления блоков размышлений Fable 5.1.

Могу ли я изменить системный prompt между ходами?

Не переписывая префикс при повторе более поздних блоков размышлений Fable 5.1. Добавьте системное сообщение середины разговора и сохраняйте его в истории. Если приложение намеренно начинает новый разговор, оно может использовать новый системный prompt, потому что нет старых блоков размышления, которые нужно сохранять.

Какая самая безопасная стратегия сжатия на клиенте?

Замените всю ранню историю на одно итоговое сообщение плюс новый ход пользователя и не повторяйте старые блоки размышления. Если вы сохраняете недавний хвост, удалите блоки thinking и redacted-thinking из этого хвоста или используйте задокументированное drop-поведение.

Снижает ли миграция каждый счёт API?

Нет. Входные и выходные цены остаются $10 и $50 за миллион токенов. Чтения кэша дешевле, но стоимость задачи также зависит от вывода, количества ходов, effort, retry и от того, остаётся ли кэш действительным.[5] Разбор стоимости Fable 5.1 обрабатывает этот расчёт отдельно.

Шлюз выпуска: не развёртывайте, пока каждая строка не пройдёт

ШлюзУсловие прохождения
Маршрут моделиКаждый производственный псевдоним преобразуется в claude-fable-5-1 где намеревалось
Принудительные инструментыНи один сериализованный запрос не содержит tool_choice: any или именованный принудительный инструмент
Требуемый выводОтсутствующие вызовы инструментов и недействительные данные безопасно сломаются в коде приложения
История размышленийМногоходовые, tool-change и сжатие тестов показывают несоответствие префикса без объяснения
FallbackТесты понижения допускают удалённые размышления 5.1 и не двойно выполняют побочные эффекты
ХранениеЦелевое рабочее пространство разрешает требуемую политику хранения модели
Поведенческие проверкиПолучение, прогресс, пакетирование инструментов, отказы и область редактирования файлов соответствуют рубрике продукта

Зелёный одиночный ход доказывает только, что ID модели и учётные данные работают. Зелёная миграция тренирует разговор после вызова инструмента, после изменения истории и после fallback, который обычно запускается только когда производство уже находится под стрессом.

References

  1. Anthropic, Migrating to Claude Fable 5.1 and Claude Mythos 5.1, accessed September 7, 2026.
  2. Anthropic, Claude Fable 5.1 overview, accessed September 7, 2026.
  3. Anthropic, What's new in Claude Fable 5.1, accessed September 7, 2026.
  4. Anthropic, Prompting Claude Fable 5.1, accessed September 7, 2026.
  5. Anthropic, API pricing, accessed September 7, 2026.
  6. OpenCode, Issue #46735: Claude Fable 5.1 structured output tool-choice error, accessed September 7, 2026. The issue is cited as an integration example; API behavior is sourced from Anthropic.

Автор

avatar for reAPI Team
reAPI Team

Категории