---
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>

<Tip>
  **Автоматизируйте миграцию с помощью навыка Claude API.** В Claude Code выполните `/claude-api migrate`, чтобы вызвать встроенный [навык Claude API](https://platform.claude.com/docs/ru/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). Он работает с любой актуальной моделью Claude в качестве целевой:

  ```text wrap
  /claude-api migrate this project to claude-opus-5-5
  ```

  Навык выполняет замену идентификатора модели и, при необходимости, применяет критические изменения параметров, замену предзаполнения (prefill) и калибровку уровня усилий (effort) для целевой модели по всей вашей кодовой базе, а затем формирует контрольный список пунктов для ручной проверки. Перед редактированием каких-либо файлов он просит вас подтвердить область миграции (весь рабочий каталог, подкаталог или конкретный список файлов). Навык также обнаруживает клиенты Amazon Bedrock и Claude Platform на AWS и корректирует форматы идентификаторов моделей и изменения функций для этих платформ.
</Tip>

На этой странице перечислены изменения кода для перехода на 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; см. [цены 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, Google Cloud и Microsoft Foundry используйте идентификатор модели соответствующей платформы; см. [Доступность](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#availability).
* **Размышления:** Не отправляйте поле `thinking` или отправьте `thinking: {"type": "adaptive"}`, что равнозначно: [«adaptive thinking» (адаптивные размышления)](https://platform.claude.com/docs/ru/build-with-claude/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:** Управляйте глубиной размышлений с помощью [параметра 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) или инструкции в системной подсказке. В Amazon Bedrock структурированные выходные данные недоступны для Claude Opus 5.5, поэтому там используйте инструкции в системной подсказке.
* **«Computer use» (использование компьютера):** В Claude API и Google Cloud объявляйте использование компьютера как набор инструментов `computer_toolset_20260801`; более ранний инструмент `computer_20251124` там отклоняется. См. [критическое изменение для использования компьютера](https://platform.claude.com/docs/ru/models/opus-5-5/migration-guide#computer-use-toolset).
* **Контекстное окно:** Бета-заголовок для контекстного окна не нужен. [Контекстное окно на 1M токенов](https://platform.claude.com/docs/ru/build-with-claude/context-windows) используется по умолчанию, а заголовок, отправляемый для старых моделей, ни на что не влияет.

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

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -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 is Anthropic.TextBlock => block.type === "text"
  );
  console.log(textBlock?.text);
  ```

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

  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 4096,
      Messages = [
          new() {
              Role = Role.User,
              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: "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). Чтобы тратить меньше токенов на размышления, понизьте уровень [effort](https://platform.claude.com/docs/ru/build-with-claude/effort). Если вы работаете с 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. **Возвращайте блоки размышлений без изменений в циклах использования инструментов:** Если вы запускаете цикл «tool use» (использование инструментов), при возврате результатов инструментов передавайте блоки `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` в сочетании со строгим использованием инструментов или структурированными выходными данными либо только на `auto` в Amazon Bedrock.
* Если вы используете инструмент использования компьютера в Claude API или Google Cloud, объявите `computer_toolset_20260801` (без бета-заголовка) вместо `computer_20251124` и обновите цикл агента для набора инструментов. В Amazon Bedrock оставьте `computer_20251124`; для других платформ см. раздел [Совместимость](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool#compatibility) инструмента использования компьютера.
* Если маршрутизатор или резервный механизм может перевести разговор с 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 и Google Cloud — от 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.
* Если вы работаете с effort `xhigh` или `max`, для начала увеличьте `max_tokens` как минимум до 64k.
* Для агентных рабочих нагрузок рассмотрите [бюджеты задач](https://platform.claude.com/docs/ru/build-with-claude/task-budgets) (бета) и изменение инструментов посреди разговора (бета).

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

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

### 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()` (python, typescript, ruby; 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()` (python, typescript, ruby; csharp: `client.Messages.Create()`; go: `client.Messages.New()`; java: `client.messages().create()`; php: `$client->messages->create()`; cli: `ant messages create`): адаптивным размышлениям и effort не нужно бета-пространство имён.
* Удалите бета-заголовок `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, Google Cloud и Microsoft Foundry используйте идентификатор модели соответствующей платформы; см. [Доступность](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#availability).

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

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

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

`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` и выберите уровень [effort](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: 2023-06-01" \
    -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() { Role = Role.User, 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: 2023-06-01" \
    -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() { Role = Role.User, 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). В Amazon Bedrock структурированные выходные данные, включающие строгое использование инструментов, недоступны для Claude Opus 5.5. Там отправляйте `auto` без `strict`, указывайте в подсказке, когда применяется инструмент, и проверяйте входные данные инструмента в своём коде. См. [Принудительное использование инструментов не поддерживается](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: 2023-06-01" \
    -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() { Role = Role.User, 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: 2023-06-01" \
    -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()
          {
              Role = Role.User,
              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 Opus 5.5 читают Claude Fable 5.1 и Claude Mythos 5.1; никакая другая модель этого не делает. Маршрутизатор или резервный механизм, который переводит разговор с Claude Opus 5.5 на любую другую модель, выполняет эти ходы без них. В обратном направлении Claude Opus 5.5 читает блоки размышлений от Claude Opus 5, от более ранних моделей Opus, Sonnet и Haiku, а в Claude API и Google Cloud — от Claude Sonnet 5.5 и Claude Haiku 5.5, но не от моделей Claude Fable или Claude Mythos. Ведите разговор только с добавлением (без правок подсказки `system`, `tools` или предыдущих сообщений посреди разговора), чтобы блоки оставались действительными; Claude Code, claude.ai, Claude Managed Agents и Claude Agent SDK уже так делают. Проверка применяется так же, как для Claude Fable 5.1, на всех платформах: для аккаунтов, созданных 31 августа 2026 года в 00:00 UTC или позже, повторная отправка блока размышлений после такой правки по умолчанию возвращает ошибку 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).

#### Инструмент использования компьютера `computer_20251124` не поддерживается в Claude API и Google Cloud

В Claude API и Google Cloud запись `tools` с типом `computer_20251124` возвращает ошибку 400 (`'claude-opus-5-5' does not support tool types: computer_20251124.`, за которым следуют типы инструментов, принимаемые моделью). Вместо этого объявите набор инструментов `computer_toolset_20260801`: уберите бета-заголовок и отправьте запись без `name` и размеров дисплея. В цикле агента обрабатывайте блоки `tool_use` для инструментов из набора (действие задаётся полем `name` блока, а не `input.action`), по несколько за ход, и возвращайте `toolset_name` в каждом результате. Изменение запроса показано ниже; изменения цикла агента перечислены в разделе [Миграция с `computer_20251124`](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124). В Amazon Bedrock более ранний инструмент `computer_20251124` продолжает работать в Claude Opus 5.5 так же, как в Claude Opus 5, поэтому там изменения не нужны; для других платформ см. раздел [Совместимость](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool#compatibility) инструмента использования компьютера. См. [Инструмент использования компьютера `computer_20251124` не поддерживается в Claude API и Google Cloud](https://platform.claude.com/docs/ru/models/opus-5-5/whats-new-opus-5-5#computer-20251124-is-not-supported).

До. Claude Opus 5 принимает этот запрос, а в Claude API и Google Cloud 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: 2023-06-01" \
    -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() { Role = Role.User, 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: 2023-06-01" \
    -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() { Role = Role.User, 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` в этих блоках пустое.

Запросы не завершаются ошибкой. Но если приложение через «streaming» (потоковую передачу) показывает этот текст пользователям как обновления о ходе работы, между вызовами инструментов оно замолкает. Чтобы вернуть обновления, считывайте их из блоков `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. **Заново подберите уровень effort.** Effort — единственный способ управления размышлениями в Claude Opus 5.5, и по умолчанию он равен `medium`, тогда как у Claude Opus 5 — `high`, поэтому запрос без `effort` теперь выполняется на уровне `medium`. Понижайте уровень там, где качество сохраняется, и повышайте его для самых требовательных задач. См. [Уровень усилий (effort)](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`.
* По умолчанию использует effort `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 токенов вместо 1024 токенов в 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. **Рассмотрите бюджеты задач (бета):** Для агентных рабочих нагрузок [бюджеты задач](https://platform.claude.com/docs/ru/build-with-claude/task-budgets) сообщают модели, сколько токенов у неё есть на полный агентный цикл. Для них требуется бета-заголовок `task-budgets-2026-03-13`.

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

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

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

3. **Системные сообщения посреди разговора:** В Claude API, Amazon Bedrock и Google Cloud 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 вместе с причиной остановки `refusal` возвращает объект `stop_details`, в котором указана категория отказа. Claude Opus 4.7 возвращает тот же объект, поэтому это важно, только если ваша обработка причин остановки его ещё не читает. Бета-заголовок не требуется, и отключить это поведение нельзя. Если ваша обработка причин остановки его ещё не читает, см. [Обработка причин остановки](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 поддерживает [быстрый режим](https://platform.claude.com/docs/ru/build-with-claude/fast-mode) (исследовательская предварительная версия) в Claude API. Быстрый режим недоступен в Claude Opus 4.7, где запросы с `speed: "fast"` возвращают ошибку. Установите `speed: "fast"` с бета-заголовком `fast-mode-2026-02-01`.

6. **Набор инструментов использования компьютера и инструмент использования браузера:** В Claude API и Google Cloud Claude Opus 5.5 поддерживает [использование компьютера](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/computer-use-tool) в виде набора инструментов `computer_toolset_20260801`, а также [инструмент «browser use» (использование браузера)](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/browser-use-tool) для задач внутри веб-страниц. Claude Opus 4.7 не поддерживает ни то, ни другое. На этих платформах Claude Opus 5.5 не принимает более ранний инструмент `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`. По умолчанию она использует effort `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. **Расширенные размышления удалены:** `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: 2023-06-01" \
       -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 = "claude-opus-4-6",
         MaxTokens = 16000,
         Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
         Messages = [new() { Role = Role.User, 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:     "claude-opus-4-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("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), где отличаются строки с ID модели, `thinking` и `output_config`:

   <CodeGroup>
     ```bash cURL
     curl https://api.anthropic.com/v1/messages \
       -H "x-api-key: $ANTHROPIC_API_KEY" \
       -H "anthropic-version: 2023-06-01" \
       -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 = "claude-opus-5-5",
         MaxTokens = 16000,
         Thinking = new ThinkingConfigAdaptive(),
         OutputConfig = new OutputConfig { Effort = Effort.High }, // or Max, Xhigh, Medium, Low
         Messages = [new() { Role = Role.User, 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:     "claude-opus-5-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("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: '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: "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), который заменяет бюджет размышлений в качестве способа контролировать, насколько много рассуждает модель. Проведите перебор уровней effort на собственных оценках, а не пересчитывайте значение `budget_tokens`. [Таблица уровней effort](https://platform.claude.com/docs/ru/build-with-claude/effort#effort-levels) описывает, когда использовать каждый уровень, а раздел [Рекомендуемые уровни effort для 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 4.7 и более поздних моделях, включая Claude Opus 5.5, возвращает ошибку 400. Python SDK (v1.0 и новее) не определяет эти параметры, и их передача вызывает `TypeError`. Самый безопасный путь миграции — полностью исключить эти параметры из тела запросов. Рекомендуемый способ управлять поведением модели в 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):** Предзаполнение сообщений ассистента возвращает ошибку 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) или инструкции в системной подсказке. В Amazon Bedrock структурированные выходные данные недоступны для Claude Opus 5.5, поэтому там используйте инструкции в системной подсказке.

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

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

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 с поддержкой изображений высокого разрешения. Максимальное разрешение изображения составляет 2576 пикселей по длинной стороне вместо 1568 пикселей в предыдущих моделях. Это даёт выигрыш на рабочих нагрузках, активно использующих зрение, и особенно ценно для использования компьютера, понимания скриншотов и анализа документов.

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

   * Изображения в полном разрешении могут использовать примерно до 3 раз больше токенов изображения, чем в предыдущих моделях (до 4784 токенов на изображение по сравнению с прежним пределом примерно в 1600 токенов на изображение). Пересмотрите бюджет `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()` (python, typescript, ruby; 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()` (python, typescript, ruby; csharp: `client.Messages.Create()`; go: `client.Messages.New()`; java: `client.messages().create()`; php: `$client->messages->create()`; cli: `ant messages create`): адаптивные размышления и effort не требуют бета-пространства имён SDK или каких-либо бета-заголовков.

2. **Удалите бета-заголовок effort:** Параметр 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).
   * **Использование компьютера:** В Claude API и Google Cloud Claude Opus 5.5 принимает использование компьютера только в виде набора инструментов `computer_toolset_20260801`: более ранние инструменты `computer_20250124` и `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"}`, причём в его случае — при любом уровне effort.
* Принимает принудительный выбор инструмента и инструмент `computer_20251124`.
* Возвращает текст между вызовами инструментов в виде блоков `text`.
* По умолчанию использует уровень effort `high`.

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

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

1. **Системные сообщения посреди разговора:** В Claude API, Amazon Bedrock и Google Cloud 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 токенов вместо 1024 токенов в Claude Sonnet 5. Подсказки, которые были слишком короткими для кэширования в Claude Sonnet 5, теперь могут создавать записи кэша без каких-либо изменений кода. Минимальные значения для каждой модели см. в разделе [Кэширование подсказок](https://platform.claude.com/docs/ru/build-with-claude/prompt-caching#cache-limitations).
