Ошибка 400 после перехода на Sonnet 5.5: что изменить в API-запросе
Проверьте thinking disabled, принудительные вызовы инструментов, историю диалога и computer use при миграции на Sonnet 5.5. Включён минимальный пример запроса.
Даже простая замена ID модели может нарушить работу существующей интеграции Sonnet 5. В Sonnet 5.5 изменились допустимые параметры рассуждений, принудительный выбор инструментов, обработка истории рассуждений и совместимость некоторых инструментов. Если после обновления появился HTTP 400, сначала изучите тело ошибки и фактически отправленный запрос, а не меняйте авторизацию и не повторяйте тот же payload.
Основа статьи — руководство по миграции Sonnet 5.5 и описание изменений, проверенные 29 сентября 2026 года. Примеры показывают структуру запросов по документации. Это не утверждение, что Ofox воспроизвёл каждую ошибку на работающем API. Для 401, 429 и специфического для провайдера 404 нужна другая диагностика.
Найдите несовместимое поле
| Старая конфигурация | Изменение в Sonnet 5.5 | Первое действие |
|---|---|---|
thinking.type: disabled | Отклоняется | Использовать between_tools с effort не выше high |
Ручной enabled с budget_tokens | Отклоняется | Перейти на поддерживаемый adaptive thinking или between_tools |
tool_choice.type: any или tool | Отклоняется | Использовать auto и проверять выбор в приложении |
| Изменённая история с повторной передачей блоков рассуждений | Может нарушить привязку диалога | Только дополнять историю либо следовать документированному удалению блоков |
computer_20251124 в Claude API/Google Cloud | Отклоняется | Перейти на поддерживаемый набор computer-инструментов и обновить цикл |
| Старое сочетание с advisor-моделью | Некоторые сочетания отклоняются | Проверить список поддерживаемых advisor-моделей |
Не распространяйте строку computer use на всех провайдеров. На той же официальной странице указано, что Amazon Bedrock принимает старый инструмент computer_20251124. Платформа — часть условий исправления.
Как заменить disabled
Для минимального текстового запроса без инструментов документация допускает такое тело POST /v1/messages в нативном Claude API:
{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"thinking": {"type": "between_tools"},
"output_config": {"effort": "high"},
"messages": [{"role": "user", "content": "Return a one-sentence summary of this task: verify a CSV total."}]
}
Тело запроса — не полный HTTP-клиент. Добавьте заголовки авторизации и версии API согласно Messages API. Храните учётные данные в своём окружении, а не в копируемых примерах или логах.
between_tools отключает рассуждения перед началом работы, но не гарантирует отсутствие таких блоков во всех сценариях с инструментами. Заметки о ходе работы между инструментами всё ещё могут использовать этот тип блока. Режим поддерживает low, medium и high, но не xhigh и max; дополнительные поля вроде display и budget_tokens не принимаются. Для xhigh или max нужен adaptive thinking. Повтор запроса с несовместимыми параметрами не исправит ошибку валидации.
После отказа от принудительного вызова проверьте поведение
Переход на tool_choice: auto меняет поведение: модель может решать, вызывать ли инструмент. Параметр strict: true в поддерживаемом определении проверяет структуру входных данных инструмента, но не принуждает выбрать его. Приложение должно проверить, произошёл ли ожидаемый вызов. Возможности схем зависят от платформы: согласно руководству, Sonnet 5.5 в Amazon Bedrock не поддерживает structured outputs, включая strict tool use.
Для сервиса извлечения данных сначала решите, нужен ли вызов инструмента вообще. Если результат — данные, а не действие, может подойти структурированный вывод. Проверьте корректный результат, отсутствие обязательных данных, отказ и неожиданную реплику обычным текстом. Исчезновение 400 ещё не означает завершения миграции.
Сохраняйте историю диалога
Sonnet 5.5 привязывает блоки рассуждений к модели и разговору. Изменение раннего системного промпта, описания инструмента или сообщения при повторной передаче более позднего блока может вызвать ошибку привязки. По умолчанию контроль применяется на указанных платформах к аккаунтам, созданным 31 августа 2026 года в 00:00 UTC или позже. Старые аккаунты и явное включение этой настройки нужно проверять отдельно.
Самый простой подход — история только с добавлением новых сообщений. Сохраняйте возвращённые блоки без изменений и применяйте документированные механизмы для изменений внутри диалога. При намеренном редактировании истории следуйте правилам обработки затронутых блоков и beta-параметров. Не удаляйте все блоки рассуждений из каждого запроса как универсальное исправление: это меняет диалог и может привести к потере полезного контекста.
Переключение моделей имеет отдельные правила. Блок, который целевая модель не может прочитать, может быть отброшен; это не то же самое, что ошибка привязки из-за изменённого префикса. Записывайте конкретную ошибку или метаданные преобразования, а не называйте любую проблему «invalid signature». Для прежних случаев есть руководство по ошибке подписи thinking block.
Проверяйте и успешные HTTP-ответы
Некоторые регрессии не возвращают HTTP-ошибку. Длинные заметки между вызовами инструментов могут поступать в блоках рассуждений, текст которых скрыт при стандартном отображении adaptive. Интерфейс, показывающий только текстовые блоки, выглядит молчащим, хотя запрос допустим. Проверьте поведение thinking.display для adaptive thinking либо поддерживаемый режим between_tools.
Отказ также отличается от транспортной ошибки. Документация описывает HTTP 200 с stop_reason: refusal и дополнительными деталями. Успешный HTTP-статус не доказывает, что задача выполнена. Обрабатывайте результат явно вместо повторной отправки того же отклонённого задания.
Проверка перед production
Подготовьте небольшой набор сценариев: обычный текст, вызов инструмента, многоходовой диалог, изменённая история, потоковые обновления и обработка отказа. Проверьте схему запроса, парсер ответа, соответствие результатов вызовам инструментов и видимый пользователю вывод. Сохраняйте версию клиента и точный ID модели для каждого результата. Пока разбираете ошибки, держите конфигурацию отката на прежнюю интеграцию.
Общий план развёртывания — в руководстве по переходу с Sonnet 5, выбор модели в CLI — в настройке Claude Code. Здесь разобраны изменения нативного API; сторонний шлюз может добавлять собственный слой преобразования и ошибки.
Часто задаваемые вопросы
- Можно оставить disabled?
- Это значение не поддерживается Sonnet 5.5. Документированная замена —
between_toolsс high или ниже. Для более высоких уровней effort используйте adaptive thinking. - Strict tool use гарантирует вызов инструмента?
- Нет. Проверка схемы и выбор инструмента — разные требования. Приложение должно обработать ответ без нужного вызова.
- Любой 400 означает проблему обновления модели?
- Нет. Прочитайте точную ошибку и изолируйте изменённое поле. Некорректные сообщения, адаптация провайдера и другие недопустимые параметры тоже могут давать 400.


