---
title: Руководство по миграции на Claude Opus 5.5
url: https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide
description: Перейдите на Claude Opus 5.5 с более ранних моделей Opus или Claude Sonnet 5 с помощью этого руководства по миграции. Рекомендации по переходу на Claude Opus 5.5 включают параметры запросов, которые возвращают ошибки, блоки размышлений в каждом ответе и контрольный список для каждой исходной модели.
---

<Note>
  В этом руководстве рассматривается миграция кода [Messages API](https://platform.claude.com/docs/ru/build-with-claude/working-with-messages). Если вы используете [Claude Managed Agents](https://platform.claude.com/docs/ru/managed-agents/overview), никаких изменений, кроме обновления названия модели, не требуется.
</Note>

Позвольте Claude Code выполнить миграцию вашего кода за вас

```text
/claude-api migrate этот проект на claude-opus-5-5
```

На этой странице перечислены изменения в коде, необходимые для перехода на Claude Opus 5.5 с [Claude Opus 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-5), [Claude Opus 4.8](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-4-8), [Claude Opus 4.7](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-47), [Claude Opus 4.6 и более ранних моделей Opus](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-46) или [Claude Sonnet 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-sonnet-5). Каждому читателю нужны разделы [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements) и [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response). Затем перейдите к разделу для вашей текущей модели: в его первом предложении перечислены другие разделы, которые относятся к вам. В [контрольном списке миграции](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migration-checklist) перечислены все изменения в зависимости от исходной модели.

Claude Opus 5.5 стоит дешевле, чем Claude Opus 5 ($4 / $20 USD за миллион входных / выходных токенов по сравнению с $5 / $25 USD; см. [цены на Claude](https://platform.claude.com/docs/ru/about-claude/pricing)). Сведения о поддержке функций см. в разделе [Что нового в Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#feature-support). О различиях в поведении и шаблонах подсказок для конкретной модели см. [Составление подсказок для Claude Opus 5.5](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5).

## Требования к каждому запросу к Claude Opus 5.5

С какой бы модели вы ни переходили, запрос к `claude-opus-5-5` должен соответствовать следующим требованиям. Если в пункте сказано, что параметр отклоняется, API возвращает ошибку 400.

* **Идентификатор модели:** используйте `claude-opus-5-5` — фиксированный идентификатор модели без суффикса даты. В Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed), Claude Models on Google Cloud (Google managed) и Microsoft Foundry используйте идентификатор модели соответствующей платформы; см. раздел [Доступность](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#availability).
* **Размышления:** не отправляйте поле `thinking` или отправьте `thinking: {"type": "adaptive"}`, что равнозначно: [адаптивные размышления](https://platform.claude.com/docs/ru/build-with-claude/thinking) («adaptive thinking») всегда включены. `thinking: {"type": "disabled"}` и ручные бюджеты размышлений (`thinking: {"type": "enabled", "budget_tokens": N}`) отклоняются. См. [сравнение «до и после» для размышлений](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-cant-be-disabled).
* **Уровень усилий:** управляйте глубиной размышлений с помощью [параметра effort](https://platform.claude.com/docs/ru/build-with-claude/effort) — единственного параметра запроса, который ею управляет. Поддерживаются все пять уровней (`low`, `medium`, `high`, `xhigh`, `max`), по умолчанию используется `medium`. См. [Рекомендуемые уровни effort для Claude Opus 5.5](https://platform.claude.com/docs/ru/build-with-claude/effort#recommended-effort-levels-for-claude-opus-5-5).
* **Выбор инструмента:** используйте `tool_choice` `{"type": "auto"}` (по умолчанию) или `{"type": "none"}`. Принудительный вызов инструмента с помощью `{"type": "any"}` или `{"type": "tool", "name": "..."}` отклоняется. См. [сравнение «до и после» для выбора инструмента](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#forced-tool-use).
* **Параметры сэмплирования:** не указывайте `temperature`, `top_p` и `top_k`. Для управления поведением модели используйте подсказки.
* **Предзаполнение:** не завершайте `messages` предзаполненной репликой ассистента: такой запрос отклоняется. Вместо этого используйте [структурированные выходные данные](https://platform.claude.com/docs/ru/build-with-claude/structured-outputs) или инструкции в системной подсказке.
* **Использование компьютера:** объявляйте «computer use» (использование компьютера) как набор инструментов `computer_toolset_20260801`. В Amazon Bedrock также работает `computer_20251124`. См. [критическое изменение для computer use](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#computer-use-toolset).
* **Контекстное окно:** бета-заголовок для «context window» (контекстное окно) не нужен. [Контекстное окно на 1M токенов](https://platform.claude.com/docs/ru/build-with-claude/context-windows) используется по умолчанию, а заголовок, отправляемый для более старых моделей, ни на что не влияет.

Следующий запрос удовлетворяет всем пунктам списка: уровень усилий задан, а поле `thinking` отсутствует. Там, где пример выводит текст, он находит текстовый блок по его типу, поскольку блоки `thinking` идут первыми.

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 4096,
      "messages": [{
        "role": "user",
        "content": "Analyze the trade-offs between microservices and monolithic architectures"
      }],
      "output_config": {
        "effort": "medium"
      }
    }'
  ```

  ```bash CLI
  ant messages create \
    --model claude-opus-5-5 \
    --max-tokens 4096 \
    --output-config '{effort: medium}' \
    --message '{role: user, content: "Analyze the trade-offs between microservices and monolithic architectures"}'
  ```

  ```python Python
  client = anthropic.Anthropic()

  response = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=4096,
      messages=[
          {
              "role": "user",
              "content": "Analyze the trade-offs between microservices and monolithic architectures",
          }
      ],
      output_config={"effort": "medium"},
  )

  for block in response.content:
      if block.type == "text":
          print(block.text)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const response = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [
      {
        role: "user",
        content: "Analyze the trade-offs between microservices and monolithic architectures"
      }
    ],
    output_config: {
      effort: "medium"
    }
  });

  const textBlock = response.content.find((block) => block.type === "text");
  console.log(textBlock?.text);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 4096,
      Messages = [
          new UserMessageParam
          {
              Content = "Analyze the trade-offs between microservices and monolithic architectures"
          }
      ],
      OutputConfig = new OutputConfig
      {
          Effort = Effort.Medium
      }
  };

  var message = await client.Messages.Create(parameters);
  Console.WriteLine(message);
  ```

  ```go Go
  client := anthropic.NewClient()

  response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 4096,
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("Analyze the trade-offs between microservices and monolithic architectures")),
  	},
  	OutputConfig: anthropic.OutputConfigParam{
  		Effort: anthropic.OutputConfigEffortMedium,
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  for _, block := range response.Content {
  	if textBlock, ok := block.AsAny().(anthropic.TextBlock); ok {
  		fmt.Println(textBlock.Text)
  	}
  }
  ```

  ```java Java
  import com.anthropic.models.messages.OutputConfig;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_OPUS_5_5)
          .maxTokens(4096L)
          .addUserMessage("Analyze the trade-offs between microservices and monolithic architectures")
          .outputConfig(OutputConfig.builder()
              .effort(OutputConfig.Effort.MEDIUM)
              .build())
          .build();

      Message response = client.messages().create(params);
      response.content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  $client = new Client();

  $message = $client->messages->create(
      maxTokens: 4096,
      messages: [
          ['role' => 'user', 'content' => 'Analyze the trade-offs between microservices and monolithic architectures']
      ],
      model: 'claude-opus-5-5',
      outputConfig: ['effort' => 'medium'],
  );

  foreach ($message->content as $block) {
      if ($block->type === 'text') {
          echo $block->text, PHP_EOL;
      }
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  message = client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5_5,
    max_tokens: 4096,
    messages: [
      { role: "user", content: "Analyze the trade-offs between microservices and monolithic architectures" }
    ],
    output_config: {
      effort: "medium"
    }
  )

  message.content.each do |block|
    puts block.text if block.type == :text
  end
  ```
</CodeGroup>

## Обработка размышлений в каждом ответе

Размышления выполняются при каждом запросе к Claude Opus 5.5, поэтому каждый ответ может начинаться с блоков `thinking`, а `max_tokens` охватывает размышления вместе с текстом. Если ваш код уже работает с включёнными размышлениями, пункты 1–3, скорее всего, уже выполнены: проверьте пункты 4 и 5. Если он работал без размышлений на любой более ранней модели, каждый пункт является изменением.

1. **`max_tokens` охватывает размышления вместе с текстом:** на Claude Opus 4.8 и более ранних моделях Opus запросы без поля `thinking` выполняются без размышлений. Claude Opus 5 и Claude Sonnet 5 принимают `thinking: {"type": "disabled"}`. На Claude Opus 5.5 каждый запрос выполняется с [адаптивными размышлениями](https://platform.claude.com/docs/ru/build-with-claude/thinking). `max_tokens` остаётся жёстким ограничением общего объёма вывода — размышлений вместе с текстом ответа, поэтому пересмотрите его для рабочих нагрузок, которые выполнялись без размышлений. Токены размышлений тарифицируются как выходные токены, даже если текст размышлений вам не возвращается, поэтому такая рабочая нагрузка может производить больше выходных токенов на запрос. См. [Контроль затрат](https://platform.claude.com/docs/ru/build-with-claude/thinking-steering-and-cost#cost-control). Чтобы тратить меньше токенов на размышления, снизьте [уровень усилий](https://platform.claude.com/docs/ru/build-with-claude/effort). Если вы используете уровень усилий `xhigh` или `max`, задайте большое значение `max_tokens`, чтобы у модели было место для размышлений и действий; начните с 64k токенов и настраивайте дальше. Если ваши подсказки были настроены для работы без размышлений, см. [Подсказки, написанные для отключённых размышлений](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#prompts-written-for-thinking-disabled).

2. **Ответы начинаются с блоков размышлений:** ответ может начинаться с одного или нескольких блоков `thinking` перед первым блоком `text`. Код, который читает ответ по позиции, например `content[0].text` или обработчик потока, считающий первое событие `content_block_start` текстом, на таких ответах ломается. Вместо этого выбирайте блоки содержимого по их полю `type`: читайте `text` из блоков, у которых `type` равен `"text"`, и ветвитесь по типу блока при обработке событий потока.

3. **Возвращайте блоки размышлений без изменений в циклах использования инструментов:** если вы выполняете цикл использования инструментов, передавайте блоки `thinking` из каждого ответа ассистента обратно в API полностью и без изменений, когда возвращаете результаты инструментов, включая блоки с пустым полем `thinking`. Возвращайте сообщение ассистента в том виде, в котором оно было получено, а не фильтруйте его блоки содержимого по типу и не пересобирайте его: API отклоняет отредактированные, переупорядоченные или частично удалённые блоки размышлений с ошибкой 400. См. [Сохранение блоков размышлений](https://platform.claude.com/docs/ru/build-with-claude/thinking#preserving-thinking-blocks).

4. **Текст размышлений по умолчанию опускается:** `thinking.display` по умолчанию имеет значение `"omitted"`, поэтому блоки `thinking` приходят с пустым полем `thinking` вместе с их `signature`. Рассматривайте поле `thinking` только как текст для отображения. Чтобы вместо этого получать читаемые сводки, установите для `thinking.display` значение `"summarized"`:

   <CodeGroup exclude="shell">
     ```python Python
     thinking = {
         "type": "adaptive",
         "display": "summarized",
     }
     ```

     ```typescript TypeScript
     const thinking = {
       type: "adaptive",
       display: "summarized"
     };
     ```

     ```csharp C#
     var thinking = new ThinkingConfigAdaptive { Display = Display.Summarized };
     ```

     ```go Go
     thinking := anthropic.ThinkingConfigParamUnion{
     	OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{
     		Display: anthropic.ThinkingConfigAdaptiveDisplaySummarized,
     	},
     }
     ```

     ```java Java
     ThinkingConfigAdaptive thinking = ThinkingConfigAdaptive.builder()
         .display(ThinkingConfigAdaptive.Display.SUMMARIZED)
         .build();
     ```

     ```php PHP
     $thinking = ['type' => 'adaptive', 'display' => 'summarized'];
     ```

     ```ruby Ruby
     thinking = {
       type: "adaptive",
       display: "summarized"
     }
     ```
   </CodeGroup>

   Если ваш продукт передаёт рассуждения пользователям в потоковом режиме, значение по умолчанию выглядит как долгая пауза перед началом вывода; установите `display: "summarized"`, чтобы вернуть видимый прогресс во время размышлений. См. [Управление отображением размышлений](https://platform.claude.com/docs/ru/build-with-claude/thinking#controlling-thinking-display).

5. **Текст между вызовами инструментов приходит в блоках размышлений:** короткие заметки, которые модель пишет между вызовами инструментов, возвращаются в виде блоков `thinking`, которые при отображении по умолчанию пусты. См. [Текст между вызовами инструментов возвращается в блоках размышлений](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#text-between-tool-calls).

## Контрольный список миграции по исходной модели

Проходите группы сверху вниз и остановитесь после той, в которой названа ваша текущая модель: все пункты до этого места относятся к вам. Если вы используете Claude Opus 5, первая группа — это весь список. Если вы используете Claude Sonnet 5, примените первую и последнюю группы.

### Любая исходная модель

* Обновите идентификатор модели на `claude-opus-5-5`.
* Удалите `thinking: {"type": "disabled"}` и `thinking: {"type": "enabled", ...}`; вместо этого выберите уровень effort.
* Задайте `effort` явно: по умолчанию используется `medium`, тогда как у Claude Opus 5 — `high`.
* Замените типы `tool_choice` `any` и `tool` на `auto` в сочетании со строгим использованием инструментов или структурированными выходными данными.
* Если вы используете более раннюю версию инструмента использования компьютера, вместо неё объявите `computer_toolset_20260801` (без бета-заголовка) и обновите цикл агента для работы с набором инструментов. В Amazon Bedrock также работает `computer_20251124`.
* Если маршрутизатор или резервный механизм может перевести разговор с Claude Opus 5.5 на другую модель, учитывайте, что эта модель будет работать без блоков размышлений Claude Opus 5.5 (исключение составляют Claude Fable 5.1 и Claude Mythos 5.1 в Claude API, которые их сохраняют). Сама Claude Opus 5.5 читает размышления от Claude Opus 5, от более ранних моделей Opus, Sonnet и Haiku, а в Claude API и Claude Models on Google Cloud (Google managed) — также от Claude Sonnet 5.5 и Claude Haiku 5.5, но не от моделей Claude Fable или Claude Mythos.
* Читайте блоки содержимого по `type` и передавайте блоки `thinking` обратно без изменений в циклах использования инструментов.
* Если ваш интерфейс отображает текст между вызовами инструментов, задайте `display: "updates"` (бета) или `"summarized"` и отображайте непустые блоки `thinking`.
* Если ваш код изменяет предыдущие реплики, подсказку `system` или `tools` посреди разговора, следуйте разделу [Сохранённые размышления](https://platform.claude.com/docs/ru/build-with-claude/preserved-thinking).
* Обрабатывайте `stop_reason: "refusal"` и настройте резервный механизм.
* Заново определите базовые показатели стоимости и задержки на выбранном уровне effort.
* Если ваш код отключал размышления, пересмотрите `max_tokens`, который охватывает размышления плюс текст ответа; при effort `xhigh` или `max` начните с 64k. См. [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response).

### Claude Opus 4.8 или более ранние

* Проверьте рабочие нагрузки, которые выполнялись без поля `thinking`: на Claude Opus 5.5 они выполняются с размышлениями, и размышления нельзя отключить. Пересмотрите `max_tokens`, который остаётся жёстким ограничением общего объёма вывода (размышления вместе с текстом ответа), и снизьте `effort` там, где вам нужно меньше размышлений. Токены размышлений тарифицируются как выходные токены, поэтому такие рабочие нагрузки могут производить больше выходных токенов на запрос.
* Убедитесь, что любой код, разбирающий поле `thinking`, рассматривает его только как текст для отображения. Установите `display: "summarized"`, чтобы получать читаемые сводки.
* Проверьте подсказки, близкие к минимальному размеру для кэширования: подсказки от 512 токенов и более могут создавать записи кэша.
* Если у вашей организации есть обязательство по [Priority Tier](https://platform.claude.com/docs/ru/api/service-tiers#supported-models), планируйте мощности отдельно: Priority Tier не поддерживается на Claude Opus 5.5.
* Если вы используете уровень усилий `xhigh` или `max`, для начала увеличьте `max_tokens` как минимум до 64k.
* Для агентных рабочих нагрузок рассмотрите [бюджеты задач](https://platform.claude.com/docs/ru/build-with-claude/task-budgets) (бета) и изменение инструментов посреди разговора (бета).

### Claude Opus 4.7 или более ранние

* Проведите новый перебор [уровней усилий](https://platform.claude.com/docs/ru/build-with-claude/effort) на ваших собственных оценках, а не переносите настройку, подобранную для более ранней модели.
* Удалите любой заголовок бета-версии для контекстного окна.
* Если вы пересобираете историю разговора, чтобы обновить инструкции, рассмотрите переход на системное сообщение посреди разговора, чтобы сохранить попадания в кэш подсказок.
* Убедитесь, что ваша обработка причин остановки читает `stop_details` при отказах.
* Если вам нужен быстрый режим, который Claude Opus 4.7 отклоняет, установите `speed: "fast"` в ваших запросах к Claude API. Claude Opus 5.5 не требует заголовка бета-версии.

### Claude Opus 4.6 или более ранние

* Удалите `temperature`, `top_p` и `top_k` из тела запросов.
* Замените `thinking: {"type": "enabled", "budget_tokens": N}` на `thinking: {"type": "adaptive"}` вместе с [параметром effort](https://platform.claude.com/docs/ru/build-with-claude/effort) или полностью удалите поле `thinking`; адаптивные размышления всегда включены.
* Если ваш интерфейс отображает содержимое размышлений, явно включите суммаризацию размышлений.
* Заново измерьте сквозную стоимость и задержку с учётом обновлённой токенизации.
* Перенастройте `max_tokens` с учётом обновлённой токенизации, включая триггеры сжатия.
* Заново протестируйте любые оценки количества токенов на стороне клиента.
* Если ваше приложение отправляет изображения, пересчитайте бюджет с учётом [поддержки изображений высокого разрешения](https://platform.claude.com/docs/ru/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7) (примерно до 3 раз больше токенов изображения на изображение в полном разрешении). Уменьшайте разрешение перед отправкой, если дополнительная точность вам не нужна.
* Если вы используете координаты указания или ограничивающих рамок от модели, удалите любое преобразование с масштабным коэффициентом; на Claude Opus 4.7 и более поздних моделях координаты соответствуют реальным пикселям изображения 1:1.
* Ознакомьтесь с [изменениями в поведении](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#behavior-changes), появившимися начиная с Claude Opus 4.7.
* Если ваш продукт выполняет легитимную работу в области безопасности, подайте заявку в [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet), чтобы получить доступ к менее строгим ограничениям на контент, связанный с кибербезопасностью.

### Claude Opus 4.5 или более ранние

* Удалите все предзаполнения сообщений ассистента; Claude Opus 4.6 уже их отклоняет.
* Убедитесь, что для разбора JSON вызовов инструментов используется стандартный парсер JSON.
* Перейдите с `client.beta.messages.create()` (csharp: `client.Beta.Messages.Create()`; go: `client.Beta.Messages.New()`; java: `client.beta().messages().create()`; php: `$client->beta->messages->create()`; cli: `ant beta:messages create`) на `client.messages.create()` (csharp: `client.Messages.Create()`; go: `client.Messages.New()`; java: `client.messages().create()`; php: `$client->messages->create()`; cli: `ant messages create`): адаптивным размышлениям и уровню усилий не нужно пространство имён beta.
* Удалите заголовок бета-версии `effort-2025-11-24` (параметр effort его не требует).
* Удалите заголовок бета-версии `fine-grained-tool-streaming-2025-05-14`.
* Удалите заголовок бета-версии `interleaved-thinking-2025-05-14` (адаптивные размышления автоматически включают чередующиеся размышления).
* Перенесите `output_format` в `output_config.format` (если применимо).

### Claude 4.1 или более ранние

* Обновите версии инструментов (`text_editor_20250728`, `code_execution_20260521`).
* Обрабатывайте причину остановки `refusal`.
* Обрабатывайте причину остановки `model_context_window_exceeded`.
* Проверьте обработку строковых параметров инструментов на наличие завершающих символов новой строки.
* Удалите заголовки бета-версий `token-efficient-tools-2025-02-19` и `output-128k-2025-02-19`.
* Проверьте и обновите подсказки в соответствии с [лучшими практиками составления подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/claude-prompting-best-practices).

### Только Claude Sonnet 5

* Если вы пересобираете историю разговора, чтобы обновить инструкции, рассмотрите переход на системное сообщение посреди разговора, чтобы сохранить попадания в кэш подсказок.
* Проверьте подсказки, близкие к минимальному размеру для кэширования: подсказки от 512 токенов и более могут создавать записи кэша.

## Миграция на Claude Opus 5.5 с Claude Opus 5

Сначала проработайте разделы [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements) и [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response). Изменения из этого раздела нужны для любой исходной модели. Это параметры запросов, которые Claude Opus 5.5 отклоняет, и сопутствующие изменения в ответах. Контрольный список для этого раздела — первая группа [контрольного списка миграции](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migration-checklist).

### Обновите название модели

```python
model = "claude-opus-5"  # Before
model = "claude-opus-5-5"  # After
```

`claude-opus-5-5` — фиксированный идентификатор модели без суффикса даты, по той же схеме, что и `claude-opus-5`. В Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed), Claude Models on Google Cloud (Google managed) и Microsoft Foundry используйте идентификатор модели соответствующей платформы; см. [Доступность](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#availability).

### Критические изменения

Каждое изменение объясняется в разделе [Критические изменения](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#breaking-changes) страницы «Что нового в Claude Opus 5.5»; в этом разделе приведено изменение кода для каждого из них.

#### Размышления нельзя отключить

И `thinking: {"type": "disabled"}`, и `thinking: {"type": "enabled", "budget_tokens": N}` возвращают ошибку 400 (`"thinking.type.disabled" is not supported for this model.` или `"thinking.type.enabled" is not supported for this model.`). Удалите поле `thinking` и выберите [уровень усилий](https://platform.claude.com/docs/ru/build-with-claude/effort); там, где вы отключали размышления ради экономии токенов, используйте более низкий уровень. После этого ответы начинаются с блоков `thinking`, поэтому выбирайте блоки содержимого по `type` и передавайте блоки `thinking` обратно без изменений вместе с результатами инструментов. См. [Размышления нельзя отключить](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#thinking-cant-be-disabled).

До. Claude Opus 5 принимает этот запрос, а Claude Opus 5.5 отклоняет его с ошибкой 400:

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5",
      "max_tokens": 16000,
      "thinking": {"type": "disabled"},
      "messages": [{"role": "user", "content": "..."}]
    }'
  ```

  ```bash CLI
  ant messages create \
    --model claude-opus-5 \
    --max-tokens 16000 \
    --thinking '{type: disabled}' \
    --message '{role: user, content: "..."}'
  ```

  ```python Python
  client.messages.create(
      model="claude-opus-5",
      max_tokens=16000,
      thinking={"type": "disabled"},
      messages=[{"role": "user", "content": "..."}],
  )
  ```

  ```typescript TypeScript
  await client.messages.create({
    model: "claude-opus-5",
    max_tokens: 16000,
    thinking: { type: "disabled" },
    messages: [{ role: "user", content: "..." }]
  });
  ```

  ```csharp C#
  await client.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5,
      MaxTokens = 16000,
      Thinking = new ThinkingConfigDisabled(),
      Messages = [new UserMessageParam { Content = "..." }],
  });
  ```

  ```go Go
  client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5,
  	MaxTokens: 16000,
  	Thinking: anthropic.ThinkingConfigParamUnion{
  		OfDisabled: &anthropic.ThinkingConfigDisabledParam{},
  	},
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5)
      .maxTokens(16000L)
      .thinking(ThinkingConfigDisabled.builder().build())
      .addUserMessage("...")
      .build();

  client.messages().create(params);
  ```

  ```php PHP
  $client->messages->create(
      model: Model::CLAUDE_OPUS_5,
      maxTokens: 16000,
      thinking: ThinkingConfigDisabled::with(),
      messages: [['role' => 'user', 'content' => '...']],
  );
  ```

  ```ruby Ruby
  client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5,
    max_tokens: 16000,
    thinking: Anthropic::ThinkingConfigDisabled.new,
    messages: [{ role: "user", content: "..." }]
  )
  ```
</CodeGroup>

После:

<CodeGroup>
  ```bash cURL
  # размышления всегда включены; управление — через effort
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 16000,
      "output_config": {"effort": "low"},
      "messages": [{"role": "user", "content": "..."}]
    }'
  ```

  ```bash CLI
  # размышления включены всегда; управление — через effort
  ant messages create \
    --model claude-opus-5-5 \
    --max-tokens 16000 \
    --output-config '{effort: low}' \
    --message '{role: user, content: "..."}'
  ```

  ```python Python
  client.messages.create(
      model="claude-opus-5-5",
      max_tokens=16000,
      output_config={"effort": "low"},  # thinking is always on; effort is the control
      messages=[{"role": "user", "content": "..."}],
  )
  ```

  ```typescript TypeScript
  await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 16000,
    output_config: { effort: "low" }, // thinking is always on; effort is the control
    messages: [{ role: "user", content: "..." }]
  });
  ```

  ```csharp C#
  await client.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 16000,
      OutputConfig = new() { Effort = Effort.Low }, // thinking is always on; effort is the control
      Messages = [new UserMessageParam { Content = "..." }],
  });
  ```

  ```go Go
  client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 16000,
  	OutputConfig: anthropic.OutputConfigParam{
  		Effort: anthropic.OutputConfigEffortLow, // thinking is always on; effort is the control
  	},
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5_5)
      .maxTokens(16000L)
      // размышления всегда включены; управление — через effort
      .outputConfig(OutputConfig.builder()
          .effort(OutputConfig.Effort.LOW)
          .build())
      .addUserMessage("...")
      .build();

  client.messages().create(params);
  ```

  ```php PHP
  $client->messages->create(
      model: Model::CLAUDE_OPUS_5_5,
      maxTokens: 16000,
      // размышления всегда включены; управление — через effort
      outputConfig: OutputConfig::with(effort: Effort::LOW),
      messages: [['role' => 'user', 'content' => '...']],
  );
  ```

  ```ruby Ruby
  client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5_5,
    max_tokens: 16000,
    # размышления всегда включены; управление — через effort
    output_config: { effort: Anthropic::OutputConfig::Effort::LOW },
    messages: [{ role: "user", content: "..." }]
  )
  ```
</CodeGroup>

#### Принудительное использование инструментов не поддерживается

Типы `tool_choice` `any` и `tool` возвращают ошибку 400 (`tool_choice: type "tool" and "any" are not supported for this model.`), в том числе на эндпоинте подсчёта токенов. Используйте `auto` со [строгим использованием инструментов](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/strict-tool-use) или [структурированными выходными данными](https://platform.claude.com/docs/ru/build-with-claude/structured-outputs) и укажите в подсказке, когда следует применять инструмент. Строгое использование инструментов принимает подмножество JSON Schema, поэтому проверьте `input_schema` каждого инструмента, прежде чем добавлять `strict: true`. Каждый объект в схеме должен задавать `additionalProperties: false`; см. [Ограничения JSON Schema](https://platform.claude.com/docs/ru/build-with-claude/structured-outputs#json-schema-limitations). См. [Принудительное использование инструментов не поддерживается](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#forced-tool-use-is-not-supported).

До. Claude Opus 5 принимает этот запрос, а Claude Opus 5.5 отклоняет его с ошибкой 400:

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5",
      "max_tokens": 1024,
      "tools": [{
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            }
          },
          "required": ["location"],
          "additionalProperties": false
        }
      }],
      "tool_choice": {"type": "tool", "name": "get_weather"},
      "messages": [{"role": "user", "content": "What'\''s the weather in Paris?"}]
    }'
  ```

  ```bash CLI
  ant messages create <<'YAML'
  model: claude-opus-5
  max_tokens: 1024
  tools:
    - name: get_weather
      description: Get the current weather in a given location
      input_schema:
        type: object
        properties:
          location:
            type: string
            description: The city and state, e.g. San Francisco, CA
        required: [location]
        additionalProperties: false
  tool_choice:
    type: tool
    name: get_weather
  messages:
    - role: user
      content: What's the weather in Paris?
  YAML
  ```

  ```python Python
  client.messages.create(
      model="claude-opus-5",
      max_tokens=1024,
      tools=tools,
      tool_choice={"type": "tool", "name": "get_weather"},
      messages=[{"role": "user", "content": "What's the weather in Paris?"}],
  )
  ```

  ```typescript TypeScript
  await client.messages.create({
    model: "claude-opus-5",
    max_tokens: 1024,
    tools,
    tool_choice: { type: "tool", name: "get_weather" },
    messages: [{ role: "user", content: "What's the weather in Paris?" }]
  });
  ```

  ```csharp C#
  await client.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5,
      MaxTokens = 1024,
      Tools = [.. tools],
      ToolChoice = new ToolChoiceTool { Name = "get_weather" },
      Messages = [new UserMessageParam { Content = "What's the weather in Paris?" }],
  });
  ```

  ```go Go
  client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:      anthropic.ModelClaudeOpus5,
  	MaxTokens:  1024,
  	Tools:      tools,
  	ToolChoice: anthropic.ToolChoiceParamOfTool("get_weather"),
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("What's the weather in Paris?")),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5)
      .maxTokens(1024L)
      .tools(tools)
      .toolChoice(ToolChoiceTool.of("get_weather"))
      .addUserMessage("What's the weather in Paris?")
      .build();

  client.messages().create(params);
  ```

  ```php PHP
  $client->messages->create(
      model: Model::CLAUDE_OPUS_5,
      maxTokens: 1024,
      tools: $tools,
      toolChoice: ToolChoiceTool::with(name: 'get_weather'),
      messages: [['role' => 'user', 'content' => "What's the weather in Paris?"]],
  );
  ```

  ```ruby Ruby
  client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5,
    max_tokens: 1024,
    tools: tools,
    tool_choice: Anthropic::ToolChoiceTool.new(name: "get_weather"),
    messages: [{ role: "user", content: "What's the weather in Paris?" }]
  )
  ```
</CodeGroup>

После:

<CodeGroup>
  ```bash cURL
  # строгое использование инструментов: каждый вызов соответствует input_schema инструмента
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "tools": [{
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            }
          },
          "required": ["location"],
          "additionalProperties": false
        },
        "strict": true
      }],
      "tool_choice": {"type": "auto"},
      "messages": [{
        "role": "user",
        "content": "What'\''s the weather in Paris? Use the get_weather tool."
      }]
    }'
  ```

  ```bash CLI
  ant messages create <<'YAML'
  model: claude-opus-5-5
  max_tokens: 1024
  tools:
    - name: get_weather
      description: Get the current weather in a given location
      input_schema:
        type: object
        properties:
          location:
            type: string
            description: The city and state, e.g. San Francisco, CA
        required: [location]
        additionalProperties: false
      # строгое использование инструментов: каждый вызов соответствует input_schema инструмента
      strict: true
  tool_choice:
    type: auto
  messages:
    - role: user
      content: What's the weather in Paris? Use the get_weather tool.
  YAML
  ```

  ```python Python
  client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      # строгое использование инструментов: каждый вызов соответствует input_schema инструмента
      tools=[{**tool, "strict": True} for tool in tools],
      tool_choice={"type": "auto"},
      messages=[
          {
              "role": "user",
              "content": "What's the weather in Paris? Use the get_weather tool.",
          }
      ],
  )
  ```

  ```typescript TypeScript
  await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    // строгое использование инструментов: каждый вызов соответствует input_schema инструмента
    tools: tools.map((tool) => ({ ...tool, strict: true })),
    tool_choice: { type: "auto" },
    messages: [
      {
        role: "user",
        content: "What's the weather in Paris? Use the get_weather tool."
      }
    ]
  });
  ```

  ```csharp C#
  await client.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 1024,
      // строгое использование инструментов: каждый вызов соответствует input_schema инструмента
      Tools = [.. tools.Select(tool => tool with { Strict = true })],
      ToolChoice = new ToolChoiceAuto(),
      Messages =
      [
          new UserMessageParam { Content = "What's the weather in Paris? Use the get_weather tool." },
      ],
  });
  ```

  ```go Go
  // строгое использование инструментов: каждый вызов соответствует input_schema инструмента
  var strictTools []anthropic.ToolUnionParam
  for _, tool := range tools {
  	strictTool := *tool.OfTool
  	strictTool.Strict = anthropic.Bool(true)
  	strictTools = append(strictTools, anthropic.ToolUnionParam{OfTool: &strictTool})
  }
  client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:      anthropic.ModelClaudeOpus5_5,
  	MaxTokens:  1024,
  	Tools:      strictTools,
  	ToolChoice: anthropic.ToolChoiceUnionParam{OfAuto: &anthropic.ToolChoiceAutoParam{}},
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(
  			anthropic.NewTextBlock("What's the weather in Paris? Use the get_weather tool."),
  		),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5_5)
      .maxTokens(1024L)
      // строгое использование инструментов: каждый вызов соответствует input_schema инструмента
      .tools(tools.stream()
          .map(tool -> tool.tool()
              .map(customTool -> customTool.toBuilder()
                  .strict(true)
                  .build())
              .map(ToolUnion::ofTool)
              .orElse(tool))
          .toList())
      .toolChoice(ToolChoiceAuto.builder().build())
      .addUserMessage("What's the weather in Paris? Use the get_weather tool.")
      .build();

  client.messages().create(params);
  ```

  ```php PHP
  $client->messages->create(
      model: Model::CLAUDE_OPUS_5_5,
      maxTokens: 1024,
      // строгое использование инструментов: каждый вызов соответствует input_schema инструмента
      tools: array_map(fn (Tool $tool) => $tool->withStrict(true), $tools),
      toolChoice: ToolChoiceAuto::with(),
      messages: [
          [
              'role' => 'user',
              'content' => "What's the weather in Paris? Use the get_weather tool.",
          ],
      ],
  );
  ```

  ```ruby Ruby
  client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5_5,
    max_tokens: 1024,
    # строгое использование инструментов: каждый вызов соответствует input_schema инструмента
    tools: tools.map { |tool| tool.merge(strict: true) },
    tool_choice: Anthropic::ToolChoiceAuto.new,
    messages: [
      { role: "user", content: "What's the weather in Paris? Use the get_weather tool." }
    ]
  )
  ```
</CodeGroup>

#### Блоки размышлений привязаны к модели и разговору

В Claude API Claude Fable 5.1 и Claude Mythos 5.1 читают блоки размышлений Claude Opus 5.5; никакая другая модель этого не делает. Маршрутизатор или резервный механизм, который переводит беседу с Claude Opus 5.5 на любую другую модель, обрабатывает эти ходы без них. В обратном направлении Claude Opus 5.5 читает блоки размышлений из Claude Opus 5, из более ранних моделей Opus, Sonnet и Haiku, а в Claude API и Claude Models on Google Cloud (Google managed) — также из Claude Sonnet 5.5 и Claude Haiku 5.5, но не из моделей Claude Fable или Claude Mythos. Сохраняйте беседу в режиме «только добавление» (без изменений подсказки `system`, `tools` или более ранних сообщений в середине беседы), чтобы блоки оставались действительными; Claude Code, claude.ai, Claude Managed Agents и Claude Agent SDK уже так делают. Для аккаунтов, созданных 31 августа 2026 года в 00:00 UTC или позже, в Claude API и на облачных платформах запрос, который повторно воспроизводит блок размышлений после такого изменения и оставляет `thinking.block_binding.prefix_mismatch_behavior` неустановленным, получает ошибку 400. Для интеграций в режиме «только добавление» изменять код не требуется. См. [Блоки размышлений привязаны к модели и беседе](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#thinking-blocks-are-tied-to-the-model-that-produced-them) и [Сохранённые размышления](https://platform.claude.com/docs/ru/build-with-claude/preserved-thinking).

#### Некоторые версии инструмента использования компьютера не поддерживаются

Claude Opus 5.5 поддерживает использование компьютера через набор инструментов `computer_toolset_20260801`. В Amazon Bedrock Claude Opus 5.5 также принимает инструмент `computer_20251124` с бета-заголовком `computer-use-2025-11-24`. Claude Opus 5.5 возвращает ошибку 400 для любой версии инструмента использования компьютера, которую она не принимает, например для `computer_20251124` в Claude API. Она не принимает `computer_20250124` ни на одной платформе. В Claude API сообщение об ошибке начинается с `'claude-opus-5-5' does not support tool types: computer_20251124.`, после чего перечисляются типы инструментов, которые принимает модель.

Интеграции, использующие набор инструментов, не требуют изменений. Чтобы перевести интеграцию с `computer_20251124` на набор инструментов, удалите бета-заголовок и отправляйте запись `computer_toolset_20260801` без `name` и размеров дисплея. В цикле агента обрабатывайте каждый блок `tool_use` члена набора в реплике и повторяйте `toolset_name` в каждом результате. Считывайте действие из `name` каждого блока, а не из `input.action`. В разделе [Миграция с `computer_20251124`](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124) перечислены изменения цикла агента.

До. Claude Opus 5 принимает этот запрос, а Claude Opus 5.5 отклоняет его с ошибкой 400 в Claude API:

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "anthropic-beta: computer-use-2025-11-24" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5",
      "max_tokens": 4096,
      "tools": [{
        "type": "computer_20251124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768
      }],
      "messages": [{"role": "user", "content": "Open the display settings."}]
    }'
  ```

  ```bash CLI
  ant beta:messages create \
    --model claude-opus-5 \
    --max-tokens 4096 \
    --beta computer-use-2025-11-24 \
    --tool '{
      type: computer_20251124,
      name: computer,
      display_width_px: 1024,
      display_height_px: 768
    }' \
    --message '{role: user, content: "Open the display settings."}'
  ```

  ```python Python
  client.beta.messages.create(
      model="claude-opus-5",
      max_tokens=4096,
      betas=["computer-use-2025-11-24"],
      tools=[
          {
              "type": "computer_20251124",
              "name": "computer",
              "display_width_px": 1024,
              "display_height_px": 768,
          }
      ],
      messages=[{"role": "user", "content": "Open the display settings."}],
  )
  ```

  ```typescript TypeScript
  await client.beta.messages.create({
    model: "claude-opus-5",
    max_tokens: 4096,
    betas: ["computer-use-2025-11-24"],
    tools: [
      {
        type: "computer_20251124",
        name: "computer",
        display_width_px: 1024,
        display_height_px: 768
      }
    ],
    messages: [{ role: "user", content: "Open the display settings." }]
  });
  ```

  ```csharp C#
  await client.Beta.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5,
      MaxTokens = 4096,
      Betas = [AnthropicBeta.ComputerUse2025_11_24],
      Tools =
      [
          new BetaToolComputerUse20251124
          {
              DisplayWidthPx = 1024,
              DisplayHeightPx = 768,
          },
      ],
      Messages = [new BetaUserMessageParam { Content = "Open the display settings." }],
  });
  ```

  ```go Go
  client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5,
  	MaxTokens: 4096,
  	Betas:     []anthropic.AnthropicBeta{anthropic.AnthropicBetaComputerUse2025_11_24},
  	Tools: []anthropic.BetaToolUnionParam{
  		{OfComputerUseTool20251124: &anthropic.BetaToolComputerUse20251124Param{
  			DisplayWidthPx:  1024,
  			DisplayHeightPx: 768,
  		}},
  	},
  	Messages: []anthropic.BetaMessageParam{
  		anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Open the display settings.")),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5)
      .maxTokens(4096L)
      .addBeta(AnthropicBeta.COMPUTER_USE_2025_11_24)
      .addTool(BetaToolComputerUse20251124.builder()
          .displayWidthPx(1024L)
          .displayHeightPx(768L)
          .build())
      .addUserMessage("Open the display settings.")
      .build();

  client.beta().messages().create(params);
  ```

  ```php PHP
  $client->beta->messages->create(
      model: Model::CLAUDE_OPUS_5,
      maxTokens: 4096,
      betas: [AnthropicBeta::COMPUTER_USE_2025_11_24],
      tools: [
          BetaToolComputerUse20251124::with(
              displayWidthPx: 1024,
              displayHeightPx: 768,
          ),
      ],
      messages: [['role' => 'user', 'content' => 'Open the display settings.']],
  );
  ```

  ```ruby Ruby
  client.beta.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5,
    max_tokens: 4096,
    betas: [Anthropic::AnthropicBeta::COMPUTER_USE_2025_11_24],
    tools: [
      Anthropic::Beta::BetaToolComputerUse20251124.new(
        name: :computer,
        display_width_px: 1024,
        display_height_px: 768
      )
    ],
    messages: [{ role: "user", content: "Open the display settings." }]
  )
  ```
</CodeGroup>

После:

<CodeGroup>
  ```bash cURL
  # без бета-заголовка; запись набора инструментов не принимает ни имени, ни размера экрана
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 4096,
      "tools": [{"type": "computer_toolset_20260801"}],
      "messages": [{"role": "user", "content": "Open the display settings."}]
    }'
  ```

  ```bash CLI
  # без бета-заголовка; запись набора инструментов не принимает имя или размер дисплея
  ant messages create \
    --model claude-opus-5-5 \
    --max-tokens 4096 \
    --tool '{type: computer_toolset_20260801}' \
    --message '{role: user, content: "Open the display settings."}'
  ```

  ```python Python
  client.messages.create(
      model="claude-opus-5-5",
      max_tokens=4096,
      # без бета-заголовка; запись набора инструментов не принимает имя или размер дисплея
      tools=[{"type": "computer_toolset_20260801"}],
      messages=[{"role": "user", "content": "Open the display settings."}],
  )
  ```

  ```typescript TypeScript
  await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 4096,
    // без бета-заголовка; запись набора инструментов не принимает ни имя, ни размер экрана
    tools: [{ type: "computer_toolset_20260801" }],
    messages: [{ role: "user", content: "Open the display settings." }]
  });
  ```

  ```csharp C#
  await client.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 4096,
      // без бета-заголовка; запись набора инструментов не принимает имя или размер дисплея
      Tools = [new ComputerToolset20260801()],
      Messages = [new UserMessageParam { Content = "Open the display settings." }],
  });
  ```

  ```go Go
  client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 4096,
  	// бета-заголовок не нужен; запись набора инструментов не принимает имя или размер дисплея
  	Tools: []anthropic.ToolUnionParam{
  		{OfComputerToolset20260801: &anthropic.ComputerToolset20260801Param{}},
  	},
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("Open the display settings.")),
  	},
  })
  ```

  ```java Java
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_OPUS_5_5)
      .maxTokens(4096L)
      // без бета-заголовка; запись набора инструментов не принимает имя или размер дисплея
      .addTool(ComputerToolset20260801.builder().build())
      .addUserMessage("Open the display settings.")
      .build();

  client.messages().create(params);
  ```

  ```php PHP
  $client->messages->create(
      model: Model::CLAUDE_OPUS_5_5,
      maxTokens: 4096,
      // без бета-заголовка; запись набора инструментов не принимает имя или размер дисплея
      tools: [ComputerToolset20260801::with()],
      messages: [['role' => 'user', 'content' => 'Open the display settings.']],
  );
  ```

  ```ruby Ruby
  client.messages.create(
    model: Anthropic::Model::CLAUDE_OPUS_5_5,
    max_tokens: 4096,
    # без бета-заголовка; запись набора инструментов не принимает ни имя, ни размер экрана
    tools: [Anthropic::ComputerToolset20260801.new],
    messages: [{ role: "user", content: "Open the display settings." }]
  )
  ```
</CodeGroup>

### Текст между вызовами инструментов возвращается в блоках размышлений

На Claude Opus 5 текст, который модель пишет между вызовами инструментов, возвращается в виде блоков `text`. На Claude Opus 5.5, как и на Claude Fable 5.1, это сопровождение возвращается в виде [блоков `thinking` с обновлениями прогресса](https://platform.claude.com/docs/ru/build-with-claude/thinking#progress-updates) — не более одного перед каждым вызовом инструмента. При значении `thinking.display` по умолчанию `"omitted"` их поле `thinking` пусто. Ни один запрос не завершается ошибкой, но приложение, которое передаёт этот текст своим пользователям как обновления прогресса, замолкает между вызовами инструментов. Чтобы вернуть обновления, читайте их из блоков `thinking` и задайте значение `display`, которое возвращает их текст: `"updates"` (бета, заголовок `thinking-display-updates-2026-08-18`) возвращает обновления прогресса, при этом рассуждения остаются скрытыми, а `"summarized"` возвращает и то, и другое вперемешку. Затем отображайте каждый непустой блок `thinking` перед блоком `tool_use`, которому он предшествует, и передавайте блоки обратно без изменений вместе с остальной частью хода ассистента. См. [Обновления прогресса для пользователей](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#user-facing-progress-updates).

### Классификаторы безопасности и резервное переключение

Claude Opus 5.5 может возвращать `stop_reason: "refusal"` с категорией в `stop_details`. Его классификаторы охватывают более широкий набор категорий, чем у Claude Opus 5, поэтому ожидайте значений `stop_details.category`, таких как `"bio"`, в дополнение к `"cyber"` и `"reasoning_extraction"`; см. [таблицу категорий отказов](https://platform.claude.com/docs/ru/build-with-claude/refusals-and-fallback#refusal-response). Обрабатывайте отказы и настройте [резервное переключение на стороне сервера](https://platform.claude.com/docs/ru/build-with-claude/refusals-and-fallback#server-side-fallback) или собственные повторные попытки (резервное переключение на стороне сервера не повторяет запросы, отклонённые с `"reasoning_extraction"`; такой отказ возвращается вам); см. [Отказы и резервное переключение](https://platform.claude.com/docs/ru/build-with-claude/refusals-and-fallback) и [Отказы средств защиты](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#safeguard-refusals).

### Рекомендуемые изменения

1. **Заново проведите перебор уровней усилий.** Уровень усилий — единственный механизм управления размышлениями на Claude Opus 5.5, и его значение по умолчанию — `medium`, тогда как у Claude Opus 5 — `high`, поэтому запрос без `effort` теперь выполняется на уровне `medium`. Понижайте уровень там, где качество сохраняется, и повышайте его для самых сложных задач. См. [Уровень усилий](https://platform.claude.com/docs/ru/build-with-claude/effort).
2. **Пересмотрите инструкции в подсказках, специфичные для модели.** Инструкции, настроенные под поведение Claude Opus 5, могут быть больше не нужны; см. [Составление подсказок для Claude Opus 5.5](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5). Если вы работали с отключёнными размышлениями, см. также [Подсказки, написанные для отключённых размышлений](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#prompts-written-for-thinking-disabled).
3. **Протестируйте в среде разработки**, прежде чем переключать производственный трафик.

## Миграция на Claude Opus 5.5 с Claude Opus 4.8

Сначала проработайте разделы [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements), [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response) и [Миграция на Claude Opus 5.5 с Claude Opus 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-5). В качестве заменяемого идентификатора модели используйте `claude-opus-4-8`. Последний из этих разделов применим к коду для Claude Opus 4.8 в неизменном виде, поскольку Claude Opus 4.8, как и Claude Opus 5:

* Принимает `thinking: {"type": "disabled"}`, принудительный выбор инструмента и инструмент `computer_20251124`.
* Возвращает текст между вызовами инструментов в виде блоков `text`.
* По умолчанию использует уровень усилий `high`.

Этот раздел дополняет их тем, что изменилось между Claude Opus 4.8 и Claude Opus 5. Контрольный список см. в первых двух группах [контрольного списка миграции](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migration-checklist).

### Что изменилось

1. **Размышления выполняются в запросах, где они не были указаны:** на Claude Opus 4.8 размышления отключены, если вы их не запросили. На Claude Opus 5.5 запрос без поля `thinking` выполняется с размышлениями, поэтому каждый пункт раздела [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response) является изменением для такого кода. Если ваш код никогда не отправлял поле `thinking`, в [примерах «до» и «после» для размышлений](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-cant-be-disabled) удалять нечего.

2. **Снижен минимальный размер для кэширования подсказок:** минимальная длина кэшируемой подсказки на Claude Opus 5.5 составляет 512 токенов по сравнению с 1 024 токенами на Claude Opus 4.8. Подсказки, которые были слишком короткими для кэширования на Claude Opus 4.8, могут создавать записи кэша без каких-либо изменений кода. Минимальные значения для каждой модели см. в разделе [Кэширование подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching#cache-limitations).

3. **Priority Tier не поддерживается:** [Priority Tier](https://platform.claude.com/docs/ru/api/service-tiers#supported-models) не поддерживается на Claude Opus 5.5, тогда как Claude Opus 4.8 его сохраняет. Если у вашей организации есть обязательство по Priority Tier, планируйте мощности отдельно.

### Рекомендуемые изменения

Эти изменения не обязательны, но улучшат ваш опыт работы:

1. **Рассмотрите бюджеты задач (бета):** Для агентных рабочих нагрузок [task budgets (бюджеты задач)](https://platform.claude.com/docs/ru/build-with-claude/task-budgets) сообщают модели, сколько токенов у неё есть на полный агентный цикл. Для них требуется beta header (бета-заголовок) `task-budgets-2026-03-13`.

2. **Рассмотрите изменение инструментов в середине диалога (бета):** Изменение инструментов в середине диалога позволяет добавлять или удалять инструменты между ходами диалога, не делая недействительными попадания в [кэш подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching) на более ранних ходах. Изменение самого массива `tools` делает кэшированный префикс недействительным. В Claude API, Claude Platform on AWS и Claude Models on Google Cloud (Anthropic managed) отправляйте бета-заголовок `inline-tools-2026-09-15`. Заголовок `mid-conversation-tool-changes-2026-07-01` работает для изменений, которые ссылаются на инструмент по ссылке, в Claude API, Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) и Claude Models on Google Cloud (Google managed).

## Миграция на Claude Opus 5.5 с Claude Opus 4.7

Сначала проработайте разделы [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements), [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response), [Миграция на Claude Opus 5.5 с Claude Opus 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-5) и [Миграция на Claude Opus 5.5 с Claude Opus 4.8](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-4-8). В качестве заменяемого идентификатора модели используйте `claude-opus-4-7`. Эти разделы применимы к коду для Claude Opus 4.7 в неизменном виде. Как и Claude Opus 4.8, эта модель принимает `thinking: {"type": "disabled"}`, принудительный выбор инструмента и инструмент `computer_20251124`. По умолчанию она использует уровень усилий `high` и работает без размышлений, если вы их не запросили.

Этот раздел дополняет их тем, что изменилось после Claude Opus 4.7. Если ваш код работает на Claude Opus 4.6 или более ранней модели, после этого раздела перейдите к разделу [Миграция на Claude Opus 5.5 с Claude Opus 4.6 и более ранних моделей Opus](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-46). В нём описаны критические изменения, вступившие в силу в Claude Opus 4.7. Контрольный список см. в первых трёх группах [контрольного списка миграции](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migration-checklist).

### Что изменилось

Ни один из этих пунктов не добавляет критических изменений к описанным в предыдущих разделах; их стоит проверить после замены идентификатора модели.

1. **Уровни усилий перекалиброваны:** Распределение токенов для каждого уровня effort (усилий) в Claude Opus 5.5 изменилось по сравнению с Claude Opus 4.7. Значение по умолчанию — `medium`, тогда как у Claude Opus 4.7 — `high`. Проведите новый перебор уровней усилий на собственных оценках, а не переносите настройку, подобранную для Claude Opus 4.7. См. [Уровень усилий](https://platform.claude.com/docs/ru/build-with-claude/effort).

2. **Контекстное окно в 1M используется по умолчанию:** Claude Opus 5.5 по умолчанию предоставляет полное [context window (контекстное окно)](https://platform.claude.com/docs/ru/build-with-claude/context-windows) в 1M токенов без бета-заголовка. Если ваш клиент передаёт бета-заголовок контекстного окна для совместимости со старыми моделями, удалите его.

3. **Системные сообщения в середине диалога:** В Claude API, Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) и Claude Models on Google Cloud (Google managed) Claude Opus 5.5 принимает сообщения `role: "system"` сразу после хода пользователя в массиве `messages` (с учётом [правил размещения](https://platform.claude.com/docs/ru/build-with-claude/mid-conversation-system-messages#limitations)). Используйте поле верхнего уровня `system` для инструкций, которые применяются с самого начала. Claude Opus 4.7 отклоняет `role: "system"` в `messages` с ошибкой 400. Если вы поддерживаете пути кода, которые перестраивают всю историю сообщений для обновления инструкций, вы можете упростить их и сохранить попадания в [кэш подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching) на более ранних ходах.

4. **Детали остановки при отказе:** Когда модель отклоняет запрос, Claude Opus 5.5 возвращает объект `stop_details`, указывающий категорию отказа, вместе с причиной остановки `refusal`. Claude Opus 4.7 возвращает тот же объект, поэтому это важно, только если ваша обработка stop reason (причины остановки) его ещё не считывает. Бета-заголовок не требуется, и возможности отказаться от этого нет. Если ваша обработка причин остановки его ещё не считывает, см. [Обработка причин остановки](https://platform.claude.com/docs/ru/build-with-claude/handling-stop-reasons). Claude Opus 5.5 отказывает в большем числе категорий; см. [Классификаторы безопасности и резервный вариант](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#safety-classifiers-and-fallback).

5. **Быстрый режим:** Claude Opus 5.5 поддерживает [fast mode (быстрый режим)](https://platform.claude.com/docs/ru/build-with-claude/fast-mode) в Claude API. Быстрый режим недоступен в Claude Opus 4.7, где запросы с `speed: "fast"` возвращают ошибку. Установите `speed: "fast"` в своих запросах. Claude Opus 5.5 не требует бета-заголовка.

6. **Набор инструментов для использования компьютера и инструмент использования браузера:** Claude Opus 5.5 поддерживает [computer use (использование компьютера)](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool) в виде набора инструментов `computer_toolset_20260801` и [browser use tool (инструмент использования браузера)](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/browser-use-tool) для задач внутри веб-страниц. Claude Opus 4.7 не поддерживает ни то, ни другое. Чтобы перевести интеграцию `computer_20251124` на набор инструментов, см. [критическое изменение для использования компьютера](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#computer-use-toolset).

## Миграция на Claude Opus 5.5 с Claude Opus 4.6 и более ранних моделей Opus

Сначала пройдите все предыдущие разделы в порядке их следования на странице. Это [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements), [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response), а также разделы для [Claude Opus 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-5), [Claude Opus 4.8](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-4-8) и [Claude Opus 4.7](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-47). Эти разделы применимы к коду на Claude Opus 4.6 без изменений. Как и Claude Opus 4.7, эта модель принимает `thinking: {"type": "disabled"}`, принудительный выбор инструмента и инструмент `computer_20251124`. По умолчанию она использует уровень усилий `high` и работает без размышлений, если вы их не запросите. Claude Opus 4.5 и более ранние модели Opus также принимают `thinking: {"type": "disabled"}` и принудительный выбор инструмента и работают без размышлений, если вы их не запросите, поэтому эти разделы применимы и к ним.

В этом разделе описано, что изменилось в Claude Opus 4.7; заменяемый идентификатор модели — `claude-opus-4-6`. Два его подраздела описывают изменения, произошедшие ранее, для читателей, использующих [Claude Opus 4.5 или более ранние модели](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-45) и [Claude 4.1 или более ранние модели](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-4-1-or-earlier). Контрольный список см. в [контрольном списке миграции](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migration-checklist) вплоть до группы, в которой указана ваша модель.

### Критические изменения

1. **Удалены расширенные размышления:** «extended thinking» (расширенные размышления) в форме `thinking: {"type": "enabled", "budget_tokens": N}` больше не поддерживаются в Claude Opus 4.7 и более поздних моделях и возвращают ошибку 400. Перейдите на «adaptive thinking» ([адаптивные размышления](https://platform.claude.com/docs/ru/build-with-claude/thinking)) (`thinking: {"type": "adaptive"}`) и используйте [параметр effort](https://platform.claude.com/docs/ru/build-with-claude/effort) для управления глубиной размышлений. В Claude Opus 5.5 адаптивные размышления всегда включены: `thinking: {"type": "adaptive"}` допустимо и эквивалентно полному отсутствию поля `thinking`.

   До (Claude Opus 4.6):

   <CodeGroup>
     ```bash cURL
     curl https://api.anthropic.com/v1/messages \
       -H "x-api-key: $ANTHROPIC_API_KEY" \
       -H "anthropic-version: 2026-10-21" \
       -H "content-type: application/json" \
       -d '{
         "model": "claude-opus-4-6",
         "max_tokens": 16000,
         "thinking": {
           "type": "enabled",
           "budget_tokens": 10000
         },
         "messages": [
           {
             "role": "user",
             "content": "..."
           }
         ]
       }'
     ```

     ```bash CLI
     ant messages create <<'YAML'
     model: claude-opus-4-6
     max_tokens: 16000
     thinking:
       type: enabled
       budget_tokens: 10000
     messages:
       - role: user
         content: "..."
     YAML
     ```

     ```python Python
     client.messages.create(
         model="claude-opus-4-6",
         max_tokens=16000,
         thinking={"type": "enabled", "budget_tokens": 10000},
         messages=[{"role": "user", "content": "..."}],
     )
     ```

     ```typescript TypeScript
     await client.messages.create({
       model: "claude-opus-4-6",
       max_tokens: 16000,
       thinking: { type: "enabled", budget_tokens: 10000 },
       messages: [{ role: "user", content: "..." }]
     });
     ```

     ```csharp C#
     using Anthropic;
     using Anthropic.Models.Messages;

     AnthropicClient client = new();

     var parameters = new MessageCreateParams
     {
         Model = Model.ClaudeOpus4_6,
         MaxTokens = 16000,
         Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
         Messages = [new UserMessageParam { Content = "..." }]
     };

     var response = await client.Messages.Create(parameters);
     Console.WriteLine(response);
     ```

     ```go Go
     client := anthropic.NewClient()

     response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
     	Model:     anthropic.ModelClaudeOpus4_6,
     	MaxTokens: 16000,
     	Thinking:  anthropic.ThinkingConfigParamOfEnabled(10000),
     	Messages: []anthropic.MessageParam{
     		anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
     	},
     })
     if err != nil {
     	log.Fatal(err)
     }
     fmt.Println(response)
     ```

     ```java Java
     AnthropicClient client = AnthropicOkHttpClient.fromEnv();

     MessageCreateParams params = MessageCreateParams.builder()
         .model(Model.CLAUDE_OPUS_4_6)
         .maxTokens(16000L)
         .enabledThinking(10000L)
         .addUserMessage("...")
         .build();

     Message response = client.messages().create(params);
     IO.println(response);
     ```

     ```php PHP
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: 'claude-opus-4-6',
         thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
     );
     ```

     ```ruby Ruby
     client = Anthropic::Client.new

     message = client.messages.create(
       model: "claude-opus-4-6",
       max_tokens: 16000,
       thinking: {
         type: "enabled",
         budget_tokens: 10000
       },
       messages: [
         { role: "user", content: "..." }
       ]
     )
     ```
   </CodeGroup>

   После (Claude Opus 5.5), где отличаются идентификатор модели и строки `thinking` и `output_config`:

   <CodeGroup>
     ```bash cURL
     curl https://api.anthropic.com/v1/messages \
       -H "x-api-key: $ANTHROPIC_API_KEY" \
       -H "anthropic-version: 2026-10-21" \
       -H "content-type: application/json" \
       -d '{
         "model": "claude-opus-5-5",
         "max_tokens": 16000,
         "thinking": {
           "type": "adaptive"
         },
         "output_config": {
           "effort": "high"
         },
         "messages": [
           {
             "role": "user",
             "content": "..."
           }
         ]
       }'
     ```

     ```bash CLI
     ant messages create <<'YAML'
     model: claude-opus-5-5
     max_tokens: 16000
     thinking:
       type: adaptive
     output_config:
       effort: high
     messages:
       - role: user
         content: "..."
     YAML
     ```

     ```python Python
     client.messages.create(
         model="claude-opus-5-5",
         max_tokens=16000,
         thinking={"type": "adaptive"},
         output_config={"effort": "high"},  # or "max", "xhigh", "medium", "low"
         messages=[{"role": "user", "content": "..."}],
     )
     ```

     ```typescript TypeScript
     await client.messages.create({
       model: "claude-opus-5-5",
       max_tokens: 16000,
       thinking: { type: "adaptive" },
       output_config: { effort: "high" }, // or "max", "xhigh", "medium", "low"
       messages: [{ role: "user", content: "..." }]
     });
     ```

     ```csharp C#
     using Anthropic;
     using Anthropic.Models.Messages;

     AnthropicClient client = new();

     var parameters = new MessageCreateParams
     {
         Model = Model.ClaudeOpus5_5,
         MaxTokens = 16000,
         Thinking = new ThinkingConfigAdaptive(),
         OutputConfig = new OutputConfig { Effort = Effort.High }, // or Max, Xhigh, Medium, Low
         Messages = [new UserMessageParam { Content = "..." }]
     };

     var response = await client.Messages.Create(parameters);
     Console.WriteLine(response);
     ```

     ```go Go
     client := anthropic.NewClient()

     response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
     	Model:     anthropic.ModelClaudeOpus5_5,
     	MaxTokens: 16000,
     	Thinking: anthropic.ThinkingConfigParamUnion{
     		OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
     	},
     	OutputConfig: anthropic.OutputConfigParam{
     		Effort: anthropic.OutputConfigEffortHigh, // or Max, Xhigh, Medium, Low
     	},
     	Messages: []anthropic.MessageParam{
     		anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
     	},
     })
     if err != nil {
     	log.Fatal(err)
     }
     fmt.Println(response)
     ```

     ```java Java
     AnthropicClient client = AnthropicOkHttpClient.fromEnv();

     MessageCreateParams params = MessageCreateParams.builder()
         .model(Model.CLAUDE_OPUS_5_5)
         .maxTokens(16000L)
         .thinking(ThinkingConfigAdaptive.builder().build())
         .outputConfig(OutputConfig.builder()
             .effort(OutputConfig.Effort.HIGH) // or MAX, XHIGH, MEDIUM, LOW
             .build())
         .addUserMessage("...")
         .build();

     Message response = client.messages().create(params);
     IO.println(response);
     ```

     ```php PHP
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: Model::CLAUDE_OPUS_5_5,
         thinking: ['type' => 'adaptive'],
         outputConfig: ['effort' => 'high'], // or 'max', 'xhigh', 'medium', 'low'
     );
     ```

     ```ruby Ruby
     client = Anthropic::Client.new

     message = client.messages.create(
       model: Anthropic::Model::CLAUDE_OPUS_5_5,
       max_tokens: 16000,
       thinking: {
         type: "adaptive"
       },
       output_config: {
         effort: "high" # or "max", "xhigh", "medium", "low"
       },
       messages: [
         { role: "user", content: "..." }
       ]
     )
     ```
   </CodeGroup>

   Адаптивными размышлениями можно управлять с помощью подсказок и [параметра effort](https://platform.claude.com/docs/ru/build-with-claude/effort), который заменяет бюджет размышлений в качестве способа контролировать объём рассуждений модели. Вместо пересчёта значения `budget_tokens` проведите перебор уровней усилий на собственных оценках. [Таблица уровней усилий](https://platform.claude.com/docs/ru/build-with-claude/effort#effort-levels) описывает, когда использовать каждый уровень, а раздел [Рекомендуемые уровни усилий для Claude Opus 5.5](https://platform.claude.com/docs/ru/build-with-claude/effort#recommended-effort-levels-for-claude-opus-5-5) посвящён этой модели.

2. **Удалены параметры сэмплирования:** Не указывайте `temperature`, `top_p` и `top_k`. Подсказки — рекомендуемый способ управлять поведением модели в Claude Opus 5.5. Если вы использовали `temperature = 0` для детерминированности, учтите, что это никогда не гарантировало идентичных результатов и на предыдущих моделях.

3. **Содержимое размышлений по умолчанию опускается:** блоки размышлений по-прежнему появляются в потоке ответа в Claude Opus 4.7 и более поздних моделях, но их поле `thinking` пусто, если вы явно не включите его заполнение. Это незаметное изменение по сравнению с Claude Opus 4.6, где по умолчанию возвращался обобщённый текст размышлений. Чтобы восстановить его, см. пункт 4 раздела [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response).

4. **Обновлённый подсчёт токенов:** в Claude Opus 4.7 появился новый токенизатор, который используют и более поздние модели Opus, включая Claude Opus 5.5. Он способствует повышению производительности на широком спектре задач и может использовать примерно в 1–1,35 раза больше токенов при обработке текста по сравнению с моделями до Claude Opus 4.7 (до примерно 35 процентов больше, в зависимости от содержимого).

   [`/v1/messages/count_tokens`](https://platform.claude.com/docs/ru/build-with-claude/token-counting) возвращает для Claude Opus 5.5 иное количество токенов, чем для Claude Opus 4.6. Эффективность использования токенов может различаться в зависимости от характера рабочей нагрузки.

   Обновите параметры `max_tokens`, чтобы обеспечить дополнительный запас, включая пороги срабатывания компактизации, и повторно протестируйте все участки кода, которые оценивают количество токенов на стороне клиента или предполагают фиксированное соотношение токенов и символов. Для проверки используйте эндпоинт [Подсчёт токенов](https://platform.claude.com/docs/ru/build-with-claude/token-counting). Изменения в подсказках, [`task_budget`](https://platform.claude.com/docs/ru/build-with-claude/task-budgets) и [`effort`](https://platform.claude.com/docs/ru/build-with-claude/effort) помогают контролировать затраты; эти средства управления могут снижать интеллектуальные возможности модели.

5. **Удаление предзаполнения (уже действует в Claude Opus 4.6):** «prefill» (предзаполнение) сообщений ассистента возвращает ошибку 400 в Claude Opus 4.6 и более поздних моделях Opus, включая Claude Opus 5.5, поэтому это изменение касается вас, только если вы переходите с Claude Opus 4.5 или более ранней модели. Вместо этого используйте [структурированные выходные данные](https://platform.claude.com/docs/ru/build-with-claude/structured-outputs) или инструкции в системной подсказке.

### Изменения поведения

В Claude Opus 4.7 появились поведенческие отличия от Claude Opus 4.6, которые не являются критическими изменениями API. Следующие три затрагивают код или вспомогательную обвязку:

1. **Встроенные обновления о ходе работы в агентных трассах:** Claude Opus 4.7 предоставляет пользователю более регулярные и качественные обновления на протяжении длинных агентных трасс. Если вы добавили обвязку для принудительного вывода промежуточных сообщений о статусе («После каждых 3 вызовов инструментов подводи итог прогресса»), попробуйте её удалить. В Claude Opus 5.5 эти обновления поступают в блоках `thinking`, которые пусты при значении `thinking.display` по умолчанию. Чтобы получать их, см. раздел [Текст между вызовами инструментов возвращается в блоках размышлений](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#text-between-tool-calls). Чтобы настроить их длину и содержание, см. [Обновления о ходе работы для пользователя](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#user-facing-progress-updates).

2. **Средства кибербезопасности в реальном времени:** эти средства защиты впервые появились в Claude Opus 4.7: запросы, затрагивающие запрещённые или высокорисковые темы, могут приводить к отказам. Для законной работы в области безопасности, такой как тестирование на проникновение, исследование уязвимостей или red-teaming, подайте заявку в [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet), чтобы запросить смягчение ограничений. Способ подачи заявки зависит от того, как вы получаете доступ к Claude.

3. **Поддержка изображений высокого разрешения:** Claude Opus 4.7 — первая модель Claude с поддержкой изображений высокого разрешения. Максимальное разрешение изображения составляет 2 576 пикселей по длинной стороне вместо 1 568 пикселей в предыдущих моделях. Это даёт преимущества при нагрузках с интенсивной работой со зрением и особенно ценно для использования компьютера, понимания скриншотов и анализа документов.

   Поддержка высокого разрешения включается автоматически и не требует бета-заголовка или включения на стороне клиента. Следует учесть два момента:

   * Изображения в полном разрешении могут использовать примерно до 3 раз больше токенов изображений, чем в предыдущих моделях (до 4 784 токенов на каждое изображение по сравнению с прежним пределом примерно в 1 600 токенов). Пересмотрите значения `max_tokens` и ожидания по затратам для нагрузок с большим количеством изображений либо уменьшайте разрешение перед отправкой, если дополнительная точность вам не нужна.
   * Координаты указания и ограничивающих рамок, возвращаемые моделью, в Claude Opus 4.7 соответствуют реальным пикселям изображения в соотношении 1:1, поэтому пересчёт с коэффициентом масштабирования не требуется.

   Подробнее см. в разделе [Поддержка изображений высокого разрешения в Claude Opus 4.7](https://platform.claude.com/docs/ru/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7).

Различия, касающиеся подсказок, см. в разделах [Подсказки для Claude Opus 5.5](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/prompting-claude-opus-5-5) и [Лучшие практики составления подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/claude-prompting-best-practices).

### Миграция с Claude Opus 4.5 или более ранних моделей

Если вы переходите с Claude Opus 4.5, Claude Opus 4.1 или более ранней модели непосредственно на Claude Opus 5.5, читайте эту страницу с начала: сначала пройдите все предыдущие разделы в порядке их следования на странице. Затем выполните [критические изменения для миграции с Claude Opus 4.6](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#opus-46-breaking-changes), описанные выше в этом разделе. После этого примените следующие накопленные изменения, вступившие в силу в период от Claude Opus 4.5 до Claude Opus 4.7. Если вы используете Claude Opus 4.1 или более раннюю модель, после этого подраздела перейдите к разделу [Миграция с Claude 4.1 или более ранних моделей](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-4-1-or-earlier).

#### Критические изменения

1. **Удаление предзаполнения** описано в [критических изменениях для миграции с Claude Opus 4.6](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#opus-46-breaking-changes).

2. **Экранирование в параметрах инструментов:** Claude Opus 4.6 и более поздние модели могут немного иначе экранировать строки JSON в аргументах вызовов инструментов (например, иначе обрабатывать экранирование Unicode или прямой косой черты). Если вы разбираете `input` вызова инструмента как необработанную строку, а не с помощью парсера JSON, проверьте логику разбора. Стандартные парсеры JSON (например, `json.loads()` или `JSON.parse()`) обрабатывают эти различия автоматически.

#### Рекомендуемые изменения

Первый пункт обязателен для Claude Opus 5.5; остальные рекомендуются.

1. **Переход на адаптивные размышления (обязательно):** `thinking: {"type": "enabled", "budget_tokens": N}` возвращает ошибку 400 в Claude Opus 4.7 и более поздних моделях. Пример «до» и «после» приведён в пункте 1 [критических изменений для миграции с Claude Opus 4.6](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#opus-46-breaking-changes). Миграция также предполагает переход от `client.beta.messages.create()` (csharp: `client.Beta.Messages.Create()`; go: `client.Beta.Messages.New()`; java: `client.beta().messages().create()`; php: `$client->beta->messages->create()`; cli: `ant beta:messages create`) к `client.messages.create()` (csharp: `client.Messages.Create()`; go: `client.Messages.New()`; java: `client.messages().create()`; php: `$client->messages->create()`; cli: `ant messages create`): адаптивные размышления и уровень усилий не требуют бета-пространства имён SDK или каких-либо бета-заголовков.

2. **Удалите бета-заголовок уровня усилий:** параметр effort не требует бета-заголовка. Удалите бета `effort-2025-11-24` из своих запросов.

3. **Удалите бета-заголовок детализированной потоковой передачи инструментов:** «fine-grained tool streaming» (детализированная потоковая передача инструментов) не требует бета-заголовка. Удалите бета `fine-grained-tool-streaming-2025-05-14` из своих запросов.

4. **Удалите бета-заголовок чередующихся размышлений:** при адаптивных размышлениях «interleaved thinking» (чередующиеся размышления) включаются автоматически на каждой модели, поддерживающей адаптивные размышления. Удалите бета `interleaved-thinking-2025-05-14` из своих запросов.

5. **Перейдите на output\_config.format:** если вы используете структурированные выходные данные, замените `output_format={...}` на `output_config={"format": {...}}`. Параметр `output_format` устарел и будет удалён в будущем. Чтобы всё же использовать его, добавьте бета-заголовок `structured-outputs-2025-11-13`. Без него API возвращает ошибку 400. Python SDK (v1.0 и более поздние версии) не принимает `output_format={...}` в `client.beta.messages.create()` или `count_tokens()`. Аргумент `output_format=Model` вспомогательных методов `parse()` и `stream()` не изменился.

### Миграция с Claude 4.1 или более ранних моделей

Если вы переходите с Claude Opus 4.1 или более ранних моделей непосредственно на Claude Opus 5.5, сначала примените всё, что описано в разделе [Миграция с Claude Opus 4.5 или более ранних моделей](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-45). Этот подраздел начинается со всех предыдущих разделов, поэтому фактически вы читаете эту страницу с начала. Затем примените дополнительные изменения из этого подраздела.

#### Дополнительные критические изменения

1. **Удалите параметры сэмплирования:** описано в разделе [Параметры сэмплирования удалены](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#opus-46-breaking-changes).

2. **Обновите версии инструментов**

   <Warning>
     Это критическое изменение при миграции с моделей Claude 3.x.
   </Warning>

   Обновитесь до текущих версий инструментов. Удалите любой код, использующий команду `undo_edit`.

   <CodeGroup exclude="shell">
     ```python Python
     # До
     tools = [{"type": "text_editor_20250124", "name": "str_replace_editor"}]

     # После
     tools = [{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}]
     ```

     ```typescript TypeScript
     // До
     const legacyTools = [{ type: "text_editor_20250124", name: "str_replace_editor" }];

     // После
     const tools = [{ type: "text_editor_20250728", name: "str_replace_based_edit_tool" }];
     ```

     ```csharp C#
     var parameters = new MessageCreateParams
     {
         // До: {"type": "text_editor_20250124", "name": "str_replace_editor"}
         // После:
         Tools = [new ToolTextEditor20250728()],
         // ...
     };
     ```

     ```go Go
     params := anthropic.MessageNewParams{
     	// До: {"type": "text_editor_20250124", "name": "str_replace_editor"}
     	// После:
     	Tools: []anthropic.ToolUnionParam{
     		{OfTextEditor20250728: &anthropic.ToolTextEditor20250728Param{}},
     	},
     	// ...
     }
     ```

     ```java Java
     MessageCreateParams params = MessageCreateParams.builder()
         // До: {"type": "text_editor_20250124", "name": "str_replace_editor"}
         // После:
         .addTool(ToolTextEditor20250728.builder().build())
         // ...
         .build();
     ```

     ```php PHP
     $message = $client->messages->create(
         // До: ['type' => 'text_editor_20250124', 'name' => 'str_replace_editor']
         // После:
         tools: [new ToolTextEditor20250728()],
         // ...
     );
     ```

     ```ruby Ruby
     # До
     legacy_tools = [{type: "text_editor_20250124", name: "str_replace_editor"}]

     # После
     tools = [{type: "text_editor_20250728", name: "str_replace_based_edit_tool"}]
     ```
   </CodeGroup>

   * **Текстовый редактор:** используйте `text_editor_20250728` и `str_replace_based_edit_tool`. Подробности см. в документации по [инструменту текстового редактора](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/text-editor-tool).
   * **Выполнение кода:** обновитесь до `code_execution_20260521`. Инструкции по миграции см. в документации по [инструменту выполнения кода](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/code-execution-tool#upgrade-to-latest-tool-version).
   * **Использование компьютера:** используйте набор инструментов `computer_toolset_20260801` вместо `computer_20250124`, который Claude Opus 5.5 не принимает. В Amazon Bedrock также работает `computer_20251124`. См. [критическое изменение для использования компьютера](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#computer-use-toolset).

3. **Обработайте причину остановки `refusal`**

   Обновите приложение, чтобы [обрабатывать причины остановки `refusal`](https://platform.claude.com/docs/ru/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals):

   <CodeGroup exclude="shell">
     ```python Python
     response = client.messages.create(...)

     if response.stop_reason == "refusal":
         # Обработайте отказ надлежащим образом
         pass
     ```

     ```typescript TypeScript
     const response = await client.messages.create(/* ... */);

     if (response.stop_reason === "refusal") {
       // Корректно обработайте отказ
     }
     ```

     ```csharp C#
     var response = await client.Messages.Create(...);

     if (response.StopReason?.Value() == StopReason.Refusal)
     {
         // Обработайте отказ надлежащим образом
     }
     ```

     ```go Go
     response, _ := client.Messages.New(ctx, params) // your existing request

     if response.StopReason == anthropic.StopReasonRefusal {
     	// Корректно обработайте отказ
     }
     ```

     ```java Java
     Message response = client.messages().create(...);

     StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
     if (reason.equals(StopReason.REFUSAL)) {
         // Корректно обработайте отказ
     }
     ```

     ```php PHP
     $response = $client->messages->create(...);

     if ($response->stopReason === 'refusal') {
         // Корректно обработайте отказ
     }
     ```

     ```ruby Ruby
     response = client.messages.create(...)

     if response.stop_reason == :refusal
       # Обработайте отказ надлежащим образом
     end
     ```
   </CodeGroup>

4. **Обработайте причину остановки `model_context_window_exceeded`**

   Модели Claude 4.5 и более поздние возвращают причину остановки `model_context_window_exceeded`, когда генерация останавливается из-за достижения предела контекстного окна, а не запрошенного предела `max_tokens`. Обновите приложение для обработки этой новой причины остановки:

   <CodeGroup exclude="shell">
     ```python Python
     response = client.messages.create(...)

     if response.stop_reason == "model_context_window_exceeded":
         # Корректно обрабатываем ограничение контекстного окна
         pass
     ```

     ```typescript TypeScript
     const response = await client.messages.create(/* ... */);

     if (response.stop_reason === "model_context_window_exceeded") {
       // Корректно обрабатывайте достижение лимита контекстного окна
     }
     ```

     ```csharp C#
     var response = await client.Messages.Create(...);

     if (response.StopReason?.Raw() == "model_context_window_exceeded")
     {
         // Корректно обрабатываем достижение лимита «context window» (контекстное окно)
     }
     ```

     ```go Go
     response, _ := client.Messages.New(ctx, params) // your existing request

     if response.StopReason == "model_context_window_exceeded" {
     	// Корректно обрабатываем достижение лимита контекстного окна
     }
     ```

     ```java Java
     Message response = client.messages().create(...);

     StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
     if (reason.equals(StopReason.of("model_context_window_exceeded"))) {
         // Корректно обрабатываем достижение лимита контекстного окна
     }
     ```

     ```php PHP
     $response = $client->messages->create(...);

     if ($response->stopReason === 'model_context_window_exceeded') {
         // Корректно обрабатываем достижение лимита контекстного окна
     }
     ```

     ```ruby Ruby
     response = client.messages.create(...)

     if response.stop_reason == :model_context_window_exceeded
       # Корректно обрабатываем достижение лимита контекстного окна
     end
     ```
   </CodeGroup>

5. **Проверьте обработку параметров инструментов (завершающие переводы строк)**

   Модели Claude 4.5 и более поздние сохраняют завершающие переводы строк в строковых параметрах вызовов инструментов, которые ранее удалялись. Если ваши инструменты полагаются на точное сравнение строк с параметрами вызовов инструментов, убедитесь, что ваша логика правильно обрабатывает завершающие переводы строк.

6. **Обновите подсказки с учётом изменений в поведении**

   Модели Claude 4 и более поздние отличаются более лаконичным, прямым стилем общения и требуют явных указаний. Рекомендации по оптимизации см. в разделе [лучшие практики составления подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/claude-prompting-best-practices).

#### Дополнительные рекомендуемые изменения

* **Бета-заголовки:** удалите `token-efficient-tools-2025-02-19` и `output-128k-2025-02-19`. Все модели Claude 4 и более поздние имеют встроенное эффективное по токенам использование инструментов, и эти заголовки ни на что не влияют.

## Миграция на Claude Opus 5.5 с Claude Sonnet 5

Пройдите разделы [Требования к каждому запросу к Claude Opus 5.5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#request-requirements), [Обработка размышлений в каждом ответе](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#thinking-in-every-response) и [Миграция на Claude Opus 5.5 с Claude Opus 5](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#migrating-from-claude-opus-5). В качестве заменяемого идентификатора модели используйте `claude-sonnet-5`. Последний из этих разделов применим к коду на Claude Sonnet 5 без изменений, поскольку Claude Sonnet 5, как и Claude Opus 5:

* По умолчанию работает с включёнными размышлениями и принимает `thinking: {"type": "disabled"}` — в данном случае при любом уровне усилий.
* Принимает принудительный выбор инструмента и инструмент `computer_20251124`.
* Возвращает текст между вызовами инструментов в виде блоков `text`.
* По умолчанию использует уровень усилий `high`.

Ручные расширенные размышления, параметры сэмплирования и предзаполнение ассистента возвращают ошибку 400 на обеих моделях, поэтому здесь ничего не меняется. Ни одно из обязательных изменений в разделах для Claude Opus 4.8, Claude Opus 4.7 и Claude Opus 4.6 к вам не относится.

### Что изменилось

1. **Системные сообщения в середине диалога:** В Claude API, Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) и Claude Models on Google Cloud (Google managed) Claude Opus 5.5 принимает сообщения `role: "system"` сразу после хода пользователя в массиве `messages` (с учётом [правил размещения](https://platform.claude.com/docs/ru/build-with-claude/mid-conversation-system-messages#limitations)). Эта функция недоступна в Claude Sonnet 5. Если вы поддерживаете пути кода, которые перестраивают всю историю сообщений для обновления инструкций, вы можете упростить их и сохранить попадания в [кэш подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching) на более ранних ходах.

2. **Снижен минимум для кэширования подсказок:** Минимальная длина кэшируемой подсказки в Claude Opus 5.5 составляет 512 токенов вместо 1 024 токенов в Claude Sonnet 5. Подсказки, которые были слишком короткими для кэширования в Claude Sonnet 5, теперь могут создавать записи в кэше без каких-либо изменений кода. Минимальные значения для каждой модели см. в разделе [Кэширование подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching#cache-limitations).
