Перейти к содержанию

Anthropic

API Claude 2026-10-21 убирает temperature, top_p и top_k

8 мин чтения

Наш ИИ-аналитик сам проверил эту историю: запускал, считал, сверял с оригиналами. Что мы проверили

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Изображение: pexels.com

Anthropic 21 октября ввела версию Claude API 2026-10-21, первую официальную с 2023 года. Из Messages API убраны temperature, top_p и top_k: запрос с любым из них получает ошибку 400, даже если значение стоит по умолчанию. В тот же день вышли новые мажорные версии SDK и CLI ant. Они по умолчанию работают с новой версией и передают ключ в заголовке Authorization: Bearer.

Полный список изменений собран в руководстве по миграции от Anthropic. Устаревшей версию 2023-06-01 не объявили: на ней можно остаться целиком или держать на ней отдельные запросы. Мы поставили рядом старые и новые SDK и посмотрели, что они на самом деле отправляют. Выяснилось, что удалённые параметры новые клиенты убрали только из типов, а в сам запрос их по-прежнему можно передать.

Зачем понадобилась новая версия

Версия API передаётся в каждом запросе в заголовке anthropic-version, SDK подставляют его сами. Как сказано в документации по версиям, внутри одной версии Anthropic сохраняет существующие входные и выходные параметры. Добавлять компания может необязательные параметры, новые поля в ответе и новые значения в полях-перечислениях вроде типов событий стриминга, а ещё может менять условия, при которых возникают отдельные ошибки. Всё, что ломает уже написанный код, требует новой версии. До 21 октября в истории версий было всего две записи: 2023-01-01, первый релиз, и 2023-06-01. Вторая переделала SSE-стриминг: ответы стали приходить по частям, все события получили имена, пропало лишнее событие data: [DONE].

В аккаунте ClaudeDevs объяснили, почему пауза кончилась: «Claude API сильно изменился, но это наш первый официальный релиз версии с 2023 года». И пообещали дальше выпускать версии чаще, «чтобы вы могли разобраться с ломающими изменениями до того, как их потребует новая модель».

Версия 2026-10-21 доступна в Claude API, Claude Platform on AWS, Microsoft Foundry и Google Cloud. В Amazon Bedrock она работает только с Claude 4.7 и более новыми моделями, а для остальных моделей Bedrock документация отсылает к руководству по миграции.

Порядок перехода зависит от того, как вы вызываете API. Без SDK достаточно поставить в заголовок anthropic-version значение 2026-10-21. С SDK версия привязана к мажорному релизу библиотеки: каждый клиент отправляет ту версию API, которая была актуальной на момент выхода его мажора. Anthropic советует выкатывать обновление SDK одним релизом вместе с правками под ломающие изменения и до релиза прогнать тесты на 2026-10-21. В Claude Code переход можно поручить навыку /claude-api.

Temperature уходит

Новые правила действуют для Messages API (POST /v1/messages), для подсчёта токенов и для каждого запроса в Message Batch, созданном с версией 2026-10-21. Первое изменение касается трёх параметров сэмплинга, которые управляют случайностью при выборе следующего токена. В 2026-10-21 они вызывают 400 на любой модели, даже если передать значение по умолчанию.

Запрос без этих параметров сэмплирует с настройками по умолчанию, температура в них равна 1.0. Так же вёл себя и запрос на 2023-06-01, который их не передавал. Модели, которые и так принимают только значения по умолчанию, по формулировке руководства Claude 4.7 и более поздние, работают как раньше. Иначе обстоит дело с моделями, которые принимают другие значения, например с Claude Sonnet 4.6. Если запрос понижал температуру, чтобы ответы были стабильнее, этот эффект пропадёт.

Никакая другая настройка её не заменяет.

Руководство оставляет два варианта для запросов, которым нужно нестандартное значение: перестать передавать параметр или оставить такой запрос на 2023-06-01.

Документы, цитаты и переименованные поля

Ещё две ошибки 400 касаются структуры диалога. Блок документа, положенный прямо в сообщение ассистента, отклоняется, и документы нужно отправлять в сообщениях пользователя. Документ, вложенный в другой блок, проходит: например, внутри результата инструмента web fetch, который вернул сам Claude. Текстовый блок с непустым массивом citations в сообщении пользователя тоже даёт 400, в том числе внутри блоков search_result. Цитаты в сообщениях ассистента принимаются как раньше, например в прежних ответах Claude, которые вы отправляете обратно. Настройка "citations": {"enabled": true} на документах и результатах поиска тоже работает.

В ответах Admin API и Claude Enterprise Analytics API больше нет старых имён переименованных полей:

  • группы RBAC: roles → role_ids;
  • участники групп RBAC: group_id → rbac_group_id;
  • роли RBAC: name → display_name;
  • лимиты организации и рабочих пространств: group_type → group.type;
  • API-ключи: workspace_id → scope (значения другие);
  • отчёты по использованию и стоимости в Enterprise Analytics: actor.email → actor.email_address;
  • сводки активности: summaries → data.

Параметр запроса group_type в списках лимитов и фильтр workspace_id в списке ключей остались прежними.

У замены workspace_id на ключах меняются и сами значения. На 2023-06-01 это поле равнялось null сразу в двух случаях: у ключа Default Workspace и у ключа, который действует во всех рабочих пространствах. В scope эти случаи разведены. У ключа, привязанного к пространству, включая Default Workspace, в scope.workspace_id лежит настоящий ID. У ключа на всю организацию scope равен {"type": "organization"} и workspace_id в нём нет. Если ваш код считал null признаком Default Workspace, сравнивайте scope.workspace_id с ID этого пространства. Узнать ID можно через List Workspaces с include_default=true: нужно пространство с именем «Default».

Что ломается в SDK и CLI

Ломающие изменения API перенесены в новые SDK и CLI: удалённых параметров и старых имён полей нет ни в типах SDK, ни во флагах и выводе CLI. На 2026-10-21 переключились и клиенты для Amazon Bedrock и Google Cloud. Сверх этого у библиотек есть свои изменения.

SDK и CLI теперь отправляют ключ в Authorization: Bearer <key> вместо X-Api-Key. Claude API принимает ключ в любом из двух заголовков, поэтому код, который обращается к API напрямую, менять не нужно. Прокси или шлюз, который читает или подставляет X-Api-Key, придётся перевести на Authorization, либо можно самому отправлять ключ в X-Api-Key. Исключения описаны во вкладке Python: AnthropicFoundry по-прежнему шлёт ключ в x-api-key, а AnthropicBedrockMantle передавал bearer-токен и раньше.

Для Python, TypeScript, Go, PHP и Ruby SDK руководство отдельно разбирает код, который сам ставил или удалял X-Api-Key. Если ваш код удалял этот заголовок, чтобы запрос уходил только с токеном авторизации, такой код нужно удалить, а не переписывать: удаление Authorization сотрёт сам токен. Ключ и токен теперь делят один заголовок, поэтому клиент держит одну учётную запись. Если в коде ничего не передано, а заданы и ANTHROPIC_API_KEY, и ANTHROPIC_AUTH_TOKEN, клиент возьмёт ключ.

Остальные изменения затрагивают типы и устаревшие возможности:

  • MessageParam разделён по ролям на UserMessageParam, AssistantMessageParam и SystemMessageParam, бета-варианты разделены так же. Поля в отправляемых запросах прежние.
  • В C#, Go, Java, PHP и Ruby обязательные поля с единственным допустимым значением стали константами, а enum-типы из одного члена удалены. JSON на проводе тот же.
  • В TypeScript и Ruby из tool runner убрали клиентскую компакцию. Вместо неё предлагается серверная: API сам сжимает переписку в краткое изложение без лишнего запроса от клиента. Порог срабатывания должен быть не меньше 50 000 токенов.
  • Legacy Text Completions API удалён из TypeScript, Go, Java и Ruby SDK и из CLI.
  • Обычные методы Models не принимают betas, а у ant models убран --beta. Бета-заголовки передаются через client.beta.models или ant beta:models, а эти методы возвращают BetaModelInfo.

В CLI удалены флаги --api-key и --auth-token: значение в командной строке видно в истории оболочки и в списке процессов. Предупреждение об устаревании они печатали начиная с v1.27.0, а теперь команда с ними падает с flag provided but not defined. На замену предложены переменные окружения, ant auth login или флаги --api-key-stdin и --auth-token-stdin. Эти флаги читают весь стандартный ввод, поэтому тело запроса в такой команде придётся собирать из флагов.

Сменилась и лицензия: новые SDK и CLI выходят под Apache 2.0, старые версии остаются под MIT. Код менять не нужно, но если вы ведёте учёт лицензий зависимостей, записи придётся обновить.

Авторский разбор

Что мы проверили

22 октября мы поставили последние SDK, которые отправляли 2023-06-01 (TypeScript 0.137.0 и Python 1.17.0), новые TypeScript 1.1.0 и Python 2.1.0, платформенные пакеты и ant v2.0.0. Запросы мы направляли в заглушку и на локальный сервер, который записывает заголовки и тело, а к настоящему API не обращались.

Как мы проверяем истории

Заголовки совпали с документацией: в одном и том же запросе меняются и версия, и способ передачи ключа. Но удалённые параметры новые SDK отсекают только на уровне типов: переданная в обход temperature уйдёт в API и, по документации, получит там 400. Руководство связывает исчезновение этих параметров с новыми мажорами, однако из Python-клиента они пропали на два месяца раньше.

  • Python 2.0.0 вышел 21 октября в 15:51 UTC, TypeScript 1.0.0 в 16:00, CLI v2.0.0 в 17:30. Последние релизы на 2023-06-01 вышли накануне вечером.
  • Python 2.1.0 на temperature=0.0 бросает TypeError ещё до запроса, а через extra_body отправляет её с заголовком 2026-10-21. TypeScript 1.1.0, вызванный из обычного JS, отправляет temperature: 0 без изменений.
  • Именованные аргументы сэмплинга исчезли из Python SDK в версии 1.0.0 от 20 августа. В TypeScript 0.137.0 они ещё были, с пометкой @deprecated.
  • Комментарии в TypeScript 0.137.0 описывают правило для моделей новее Opus 4.6 точнее, чем руководство (по документации, без замера): temperature принимается только со значением 1.0, top_p при значении от 0,99, top_k не принимается вовсе.
  • Для Bedrock и Vertex версия передаётся полем anthropic_version в теле запроса. Раньше там были зашитые строки bedrock-2023-05-31 и vertex-2023-10-16, теперь берётся значение из ядра SDK, по константе 2026-10-21 (в AWS и GCP мы не отправляли). Новые платформенные пакеты требуют ядро >=1.0.0 <2.
  • В справке ant v2.0.0 мы не нашли флага для своего заголовка или версии API. В Python 2.1.0 extra_headers={"anthropic-version": "2023-06-01"} переопределяет версию для отдельного запроса, и так можно оставить на старой версии запросы с нестандартной температурой.

Anthropic

Claude Duet сам приносит дела и спрашивает перед действием, Видео

Пока вы отошли, Claude Duet продолжает работу и сам приходит с тем, что требует внимания, а перед действием от вашего имени спрашивает. Anthropic признаёт, что агент может ошибиться в том, что срочно. Бывало, что вы пропустили срочное, пока были не за компьютером?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.