
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_choice | Fable 5 | Fable 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
- Anthropic, Migrating to Claude Fable 5.1 and Claude Mythos 5.1, accessed September 7, 2026.
- Anthropic, Claude Fable 5.1 overview, accessed September 7, 2026.
- Anthropic, What's new in Claude Fable 5.1, accessed September 7, 2026.
- Anthropic, Prompting Claude Fable 5.1, accessed September 7, 2026.
- Anthropic, API pricing, accessed September 7, 2026.
- 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.
Автор

Категории
strict: true, что Claude вызовет инструмент?Может ли Fable 5.1 продолжить разговор Fable 5?Могу ли я изменить системный prompt между ходами?Какая самая безопасная стратегия сжатия на клиенте?Снижает ли миграция каждый счёт API?Шлюз выпуска: не развёртывайте, пока каждая строка не пройдётReferencesЕщё статьи

Самый дешевый Veo 3.1 API в 2026 году: реальные цены
Veo 3.1 стоит от $0.40/sec у Google до $0.046 за 8-секундный ролик в reAPI. Сравнение пяти провайдеров на май 2026 года.


Руководство по ценам и интеграции API Kling
Сравниваем текущие цены API Kling, выбираем между Kling 3.0 и Turbo, реализуем text-to-video, image-to-video, polling, retry и сохранение видео.


Как создать рекламный видеоролик из одного фото товара
Из одного фото товара создайте многосцененный видеоролик с подробным творческим бриф, шоткартами, правилами продукта, промптами и полной проверкой качества.
