# Claude Code показывает top_p deprecated? Не меняйте route слишком рано, сначала проверьте контракт Opus 4.7

> Ошибка top_p deprecated на Opus 4.7 требует убрать параметры выборки там, где формируется конечный запрос. Для Native API и Bedrock Converse это разные поля; исправление проверяют на той же модели и исходной задаче.

- URL: https://blog.laozhang.ai/ru/posts/claude-code-top-p-deprecated
- Published: 2026-04-17
- Updated: 2026-10-07
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Claude Code
- Tags: Claude Code, Opus 4.7, top_p deprecated, Anthropic, Устранение неполадок

---
Если Claude Code показывает `top_p deprecated` при обращении к Opus 4.7, **уберите `top_p`, `temperature` и `top_k` из параметров генерации конечного запроса**. Исправлять нужно тот компонент, который добавляет их перед отправкой: сам клиент, адаптер, обёртку или шлюз. Удаление строки из видимых настроек ещё не означает, что поле исчезло из запроса.

Сначала установите, какой клиент отправляет запрос, куда он обращается и какую модель выбирает. Затем очистите параметры в формате именно этого API и повторите исходную задачу. В Anthropic Messages поля находятся на верхнем уровне JSON; в Bedrock Converse используются `inferenceConfig.topP` и `inferenceConfig.temperature`, а дополнительные параметры модели передаются отдельно. Не удаляйте одноимённые свойства из схем инструментов или пользовательских данных.

По состоянию на 6 октября 2026 года [Anthropic указывает](https://platform.claude.com/docs/es/build-with-claude/working-with-messages), что для Opus 4.7 и более новых моделей, а также Mythos Preview, нестандартные значения этих параметров приводят к `400`; рекомендуемый переход — не передавать их. В [карточке Opus 4.7 для Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-7.html) параметры выборки прямо обозначены как неподдерживаемые. Поэтому поиск «правильного» числа здесь уступает место удалению ключа.

## Сначала выберите ветку: где именно вы застряли?

Полезнее начать с полного текста ошибки, чем с общего совета «обновите Claude». Код `400` означает некорректный запрос, но сам по себе не указывает на `top_p`.

| Что произошло | Что проверить | Следующее действие |
| --- | --- | --- |
| Сервер ответил `400` и указал параметр выборки | Конечную модель, формат API и наличие поля после всех преобразований | Удалить отвергаемые параметры в сборщике запроса |
| Python завершился с `TypeError` из-за неожиданного аргумента | Аргументы вызова SDK, а не серверный ответ | Убрать неподдерживаемый аргумент до вызова метода |
| Клиент сообщает `claude_code_version_too_old` | Версию реально запущенного клиента и минимум из сообщения | Исправить совместимость клиента с выбранной моделью |
| В интерфейсе написано `opus`, но точная модель неизвестна | Поставщика и разрешение псевдонима | Установить фактический идентификатор модели до изменения параметров |
| После очистки появилась ошибка другого поля | Новый текст ошибки и соответствующую схему | Разбирать новое условие отдельно, сохранив нужные функции запроса |

В [справочнике ошибок Claude Code](https://code.claude.com/docs/ru/errors) несовместимая версия клиента выделена в отдельную ошибку. А [документация Anthropic об устаревших параметрах](https://platform.claude.com/docs/zh-CN/about-claude/model-deprecations) предупреждает, что в Python SDK v1 удалённые аргументы могут вызвать `TypeError` ещё до HTTP-запроса. Это разные места отказа: повторная отправка на сервер не исправит локальную ошибку вызова метода. Здесь описано поведение из документации; оно не подтверждает версию SDK, установленную у вас.

## Проверьте текущую модель, а не апрельское значение `opus`

`opus` — псевдоним, а не неизменный идентификатор Opus 4.7. Его значение зависит от поставщика и меняется со временем. Нельзя продолжать диагностику с предположением «Anthropic всегда выбирает 4.7, а все облачные платформы — 4.6»: такая таблица быстро устаревает. [Текущая документация выбора модели](https://code.claude.com/docs/en/model-config) различает псевдонимы и точные имена для каждого поставщика.

Для проверки запишите без секретов:

- клиент и его версию: терминальный Claude Code, расширение, SDK или другое приложение;
- адрес сервиса и используемый API: Anthropic Messages, Bedrock InvokeModel, Converse или преобразующий шлюз;
- фактический идентификатор модели, профиля вывода или развёртывания;
- место ошибки: локальный вызов метода либо ответ сервера, включая код и идентификатор запроса, если он есть.

Если ошибка возникла в терминале, локальная команда `claude --version` помогает узнать версию этого запуска. Она не доказывает, что расширение или фоновый процесс использует тот же исполняемый файл. Версию отправляющего компонента нужно проверять отдельно.

В активной сессии выбор через `/model` имеет приоритет над начальным `--model`, переменной `ANTHROPIC_MODEL` и настройкой `model`; подробные условия приведены в [официальном описании](https://code.claude.com/docs/en/model-config). Есть и практическая деталь: подтверждение через Enter или непосредственный выбор имени сохраняет пользовательский вариант по умолчанию, а клавиша `s` в списке предназначена для выбора только в этой сессии. Не меняйте сохранённую модель лишь ради выяснения, какая сейчас используется.

Указание `v2.1.111+` относилось к ранней поддержке Opus 4.7 и не служит универсальным минимумом на октябрь 2026 года. Проверяйте требование выбранной модели и сообщение текущего клиента. Если версия действительно неподдерживаемая, обновление решает эту ветку; оно ещё не доказывает, что сторонний адаптер перестал добавлять `top_p`.

## Уберите параметры в конечном запросе Native API

![Иллюстрация трёх параметров выборки, которые нужно убрать из запроса к Opus 4.7](https://blog.laozhang.ai/posts/ru/claude-code-top-p-deprecated/img/request-parameters.webp)

Для подтверждённого запроса к Opus 4.7 через Anthropic Messages удаляются верхнеуровневые `top_p`, `temperature` и `top_k`. Для нативного формата Anthropic в Bedrock InvokeModel имена параметров такие же, но служебные поля и способ вызова отличаются. Не подменяйте один формат другим.

Проверьте путь сборки запроса в таком порядке:

1. Найдите объединение общих настроек генерации с настройками модели или агента.
2. Посмотрите результат после преобразования адаптером в Anthropic JSON, непосредственно перед отправкой.
3. Уберите три поля из настроек соответствующей модели или из точного места сборки её запроса.
4. Проверьте, что следующий этап не добавляет их снова из шаблона или значений по умолчанию.

Например, фрагмент с `"top_p": 0.9` исправляется удалением пары ключ–значение, а не заменой на `0`, `1` или `null`. Значение Python `None` тоже не означает удаления: важен результат сериализации, поскольку оно может превратиться в JSON `null`.

Следующее тело показывает короткий запрос Anthropic Messages без параметров выборки. Это пример JSON для уже выбранного нативного API, а не команда, которая обращается к сервису:

```json
{
  "model": "claude-opus-4-7",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "Ответь одним предложением: зачем нужен контроль версий?"
    }
  ]
}
```

Для вашей рабочей задачи сохраняйте её сообщения, системные инструкции, инструменты, ограничения ответа и поддерживаемые настройки обслуживания. Не заменяйте весь сложный запрос этим примером: короткий текст может пройти проверку, пока исходный вызов инструмента продолжает ломаться. Правило удаления следует из [документации Messages](https://platform.claude.com/docs/es/build-with-claude/working-with-messages); набор остальных полей проверяют по реальному API и модели.

Если вы управляете собственным сборщиком, точечное преобразование можно оформить так:

```python
from copy import deepcopy


def omit_opus47_native_sampling(body):
    result = deepcopy(body)
    for key in ("temperature", "top_p", "top_k"):
        result.pop(key, None)
    return result
```

Функция принимает уже собранный словарь нативного запроса и возвращает копию. Применяйте её **только в ветке подтверждённой модели и API с этим ограничением**, после объединения параметров. Она не определяет модель по имени `opus` и не предназначена для всех запросов к любому поставщику. Если ошибку выдаёт SDK до сериализации, аналогично уберите аргументы из словаря, который передаётся его методу.

Здесь намеренно нет рекурсивного обхода JSON. В `tools[].input_schema.properties` свойство `top_p` может быть обычным входным полем вашего инструмента; в сообщении — частью документа или данных. Такое содержимое должно сохраниться. Не меняйте также роли сообщений, пары вызовов и результатов инструментов или приоритет системных инструкций ради ошибки параметра выборки.

## В Bedrock Converse очистите `inferenceConfig`, а не ищите только `top_p`

Для Opus 4.7 в Bedrock параметры выборки не поддерживаются. Но общий формат Converse называет часть этих полей иначе:

| Назначение | Нативный формат Anthropic | Bedrock Converse |
| --- | --- | --- |
| Размер вероятностного набора | `top_p` | `inferenceConfig.topP` |
| Температура | `temperature` | `inferenceConfig.temperature` |
| Ограничение числа кандидатов | `top_k` | Дополнительное поле модели в `additionalModelRequestFields`, если адаптер его передаёт |
| Максимальный объём ответа | `max_tokens` | `inferenceConfig.maxTokens` — сохранить |
| Последовательности остановки | `stop_sequences` | `inferenceConfig.stopSequences` — сохранить, если используются |

Имена и расположение полей приведены в [справочнике Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html). Возможность указать `topP` в общей [схеме InferenceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_InferenceConfiguration.html) не означает, что Opus 4.7 его принимает: ограничение конкретной модели описано в [её карточке](https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-7.html).

Пример преобразования для собственного сборщика Converse:

```python
from copy import deepcopy


def omit_opus47_converse_sampling(request):
    result = deepcopy(request)
    inference = result.get("inferenceConfig")
    if isinstance(inference, dict):
        inference.pop("temperature", None)
        inference.pop("topP", None)
    additional = result.get("additionalModelRequestFields")
    if isinstance(additional, dict):
        for key in ("temperature", "top_p", "top_k"):
            additional.pop(key, None)
        if not additional:
            result.pop("additionalModelRequestFields")
    return result
```

Это тоже локальное преобразование словаря, которое не вызывает AWS. Оно рассчитано на подтверждённую ветку Opus 4.7 и явное расположение параметров Anthropic. `modelId`, сообщения, `toolConfig`, системные инструкции, `maxTokens` и `stopSequences` остаются на месте. В дополнительных полях сохраняются все остальные настройки; их совместимость проверяется отдельно.

Если фреймворк формирует `inferenceConfig` после этого преобразования, очистку нужно перенести в его сборщик или убрать соответствующие опции агента. Подмена на `temperature: 0` не решает запрет поля. Если же ваш запрос использует ресурс Prompt management, Converse [не допускает](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) эти настройки прямо в теле: изменять нужно определение соответствующего запроса в его собственном механизме, а не добавлять вторую конфигурацию поверх.

## Почему пустые настройки ещё не исключают адаптер

В [отчёте AWS sample № 304](https://github.com/aws-solutions-library-samples/accelerated-intelligent-document-processing-on-aws/issues/304) пользователь описал `top_p deprecated` в агентном пути Strands с ConverseStream, хотя в загруженной конфигурации параметра не было. Сопровождающий затем сообщил об исправлении в `0.5.10`: определение модели и удаление неподдерживаемых параметров согласовали между путями обработки.

Этот случай показывает, где искать: отсутствие поля в исходных настройках не исключает его появления позднее. Номер `0.5.10` относится к конкретному sample, а не к Claude Code, универсальному AWS SDK или обязательному исправлению любого шлюза.

Поэтому при работе через посредника сравнивайте настройки до преобразования с перечнем полей после него. Для диагностики обычно достаточно названий полей, идентификатора модели и ошибки; не публикуйте ключи доступа, заголовки авторизации, содержимое документов и полный журнал диалога. Если конечный запрос собирает провайдер, передайте ему безопасный пример без ключа и точное имя отвергаемого параметра — именно для того API, через который произошёл отказ.

## Как проверить исправление и когда переходить на другую модель

![Схема очистки параметров и повторной проверки исходной задачи на том же маршруте](https://blog.laozhang.ai/posts/ru/claude-code-top-p-deprecated/img/verification-flow.webp)

Сначала убедитесь локально, что очищаются только поля управления генерацией. Полезная проверка на синтетическом словаре: добавить `top_p` на верхний уровень, а одноимённое свойство — в схему инструмента. После преобразования первое должно исчезнуть, второе — сохраниться. Так же проверьте лимит ответа, остановки и исходные сообщения.

Оба Python-фрагмента выше проверены локально на синтетических данных, включая сохранение вложенных одноимённых свойств. В этой статье нет результата реального запроса к Anthropic или AWS; успешное преобразование JSON подтверждает форму данных, а не принятие их сервером.

Для проверки своего исправления выполните следующий цикл в разрешённой вам среде:

1. Сохраните того же поставщика, адрес API, модель и рабочую задачу. Зафиксируйте текущие ограничения ответа и необходимые инструменты.
2. Проверьте конечные поля после всех адаптеров. Для Native API должны отсутствовать три параметра выборки; для Converse — соответствующие поля в `inferenceConfig` и дополнительных параметрах модели.
3. Повторите исходную задачу. Успехом считайте не только исчезновение `top_p deprecated`, но и завершение нужного результата: текст ответа, разбор документа или полный цикл вызова инструмента.
4. Проверьте следующий запуск, чтобы параметры не вернулись из шаблона, настроек агента или фонового процесса.

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

Временно выбрать другую модель разумно, когда необходимая работа заблокирована, а текущий компонент пока нельзя исправить. Выбирайте модель с документированно подходящими параметрами, инструментами и форматом результата; заново проверьте ограничения, качество и стоимость вашей задачи. Переход на другой API, модель или адаптер меняет условия проверки. Он может восстановить работу, но не подтверждает исправление исходного запроса к Opus 4.7.

## Чем управлять ответом после удаления параметров выборки

Для тона, длины и формата задавайте явные требования в инструкции: например, «верни только JSON с этими полями» или «объясни решение в трёх предложениях». Проверяйте фактический результат и используйте поддерживаемые моделью средства ограничения ответа. Не увеличивайте автоматически `max_tokens` до 64 000 и не включайте thinking только потому, что исчез `top_p`: это отдельные решения, влияющие на работу и расход токенов.

Поддерживаемый `output_config.effort` позволяет регулировать тщательность ответа и затрачиваемую работу. По [описанию Anthropic](https://platform.claude.com/docs/en/build-with-claude/effort), это поведенческий сигнал, влияющий на использование токенов, а не строгий токеновый бюджет. Он не заменяет `top_p` числом «один к одному», не управляет тем же вероятностным порогом и не гарантирует одинаковый ответ при повторных вызовах.

## Частые вопросы

### `top_p deprecated` означает, что Opus 4.7 отключили?

Нет. Устаревший параметр и снятая с обслуживания модель — разные вещи. В [таблице Anthropic](https://platform.claude.com/docs/zh-CN/about-claude/model-deprecations), проверенной 6 октября 2026 года, Opus 4.7 и Opus 4.6 имеют статус активных. Это не подтверждает доступ конкретного аккаунта или поставщика, но ошибка параметра сама по себе не доказывает отключение модели.

### Можно оставить `top_p: 1`, `temperature: 0` или передать `null`?

Не используйте их как универсальный способ исправления. Anthropic рекомендует не передавать параметры выборки для моделей с этим ограничением; Bedrock отдельно указывает, что Opus 4.7 их не поддерживает. Удаление ключа отличается от передачи любого значения, в том числе `null`. Основания: [правило Messages](https://platform.claude.com/docs/es/build-with-claude/working-with-messages) и [карточка Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-7.html).

### Поможет новая сессия Claude Code?

Она полезна, если требуется проверить заново выбранную модель или параметры запуска. Но новая сессия не устраняет поле, которое адаптер или шлюз добавляет при каждом запросе. Критерий исправления — отсутствие отвергаемого параметра в конечном запросе и успешное выполнение исходной задачи.

### Почему SDK разрешает поле, а модель отвечает `400`?

Типы SDK или общий интерфейс могут обслуживать несколько моделей. Поле, допустимое в интерфейсе, не обязательно поддерживается выбранной моделью. Обратная ситуация — локальный `TypeError` до HTTP — требует исправить аргументы метода. Переустановка клиента или многократные повторы без изменения запроса не объясняют, на каком из этих этапов произошёл отказ.

### Если ошибка появилась в OpenCode, это тот же дефект Claude Code?

Сам текст ошибки этого не доказывает. OpenCode — другой клиент со своими настройками поставщика, модели и агента; в [его документации](https://opencode.ai/docs/models/) описаны также переопределения опций. Найдите фактический API и конечные параметры его адаптера. Из совпадения сообщения нельзя вывести единую причину или общую исправляющую версию двух клиентов.

## Источники

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2026-10-07.

- [Anthropic указывает](https://platform.claude.com/docs/es/build-with-claude/working-with-messages) (platform.claude.com)
- [карточке Opus 4.7 для Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-7.html) (docs.aws.amazon.com)
- [справочнике ошибок Claude Code](https://code.claude.com/docs/ru/errors) (code.claude.com)
- [документация Anthropic об устаревших параметрах](https://platform.claude.com/docs/zh-CN/about-claude/model-deprecations) (platform.claude.com)
- [Текущая документация выбора модели](https://code.claude.com/docs/en/model-config) (code.claude.com)
- [справочнике Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) (docs.aws.amazon.com)
- [схеме InferenceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_InferenceConfiguration.html) (docs.aws.amazon.com)
- [отчёте AWS sample № 304](https://github.com/aws-solutions-library-samples/accelerated-intelligent-document-processing-on-aws/issues/304) (github.com)
- [описанию Anthropic](https://platform.claude.com/docs/en/build-with-claude/effort) (platform.claude.com)
- [его документации](https://opencode.ai/docs/models/) (opencode.ai)
