Was this page helpful?
Эта функция соответствует требованиям Zero Data Retention (ZDR) (нулевого хранения данных). Если у вашей организации действует соглашение ZDR, данные, отправленные через эту функцию, не сохраняются после возврата ответа API.
Расширенное мышление предоставляет Claude улучшенные возможности рассуждения для сложных задач, обеспечивая при этом различные уровни прозрачности его пошагового мыслительного процесса перед выдачей окончательного ответа.
В моделях claude-fable-5 и claude-mythos-5 расширенное мышление всегда включено и не может быть отключено. Ручное расширенное мышление (thinking: {type: "enabled", budget_tokens: N}) не поддерживается; вместо этого используйте адаптивное мышление. Адаптивное мышление всегда включено, а thinking: {type: "disabled"} возвращает ошибку.
Для Claude Opus 4.8 и Claude Opus 4.7 установите thinking: {type: "adaptive"}, чтобы включить адаптивное мышление, и используйте параметр effort для управления глубиной мышления. В обеих моделях ручное расширенное мышление (thinking: {type: "enabled", budget_tokens: N}) не поддерживается и возвращает ошибку 400. При адаптивном мышлении модель сама решает, когда и сколько думать, исходя из каждого запроса, поэтому мышление запускается только по мере необходимости. Для Claude Opus 4.6 и Claude Sonnet 4.6 также рекомендуется адаптивное мышление; ручная конфигурация всё ещё работает в этих моделях, но является устаревшей и будет удалена в будущем выпуске модели.
Ручное расширенное мышление (thinking: {type: "enabled", budget_tokens: N}) поддерживается во всех текущих моделях Claude, кроме Claude Fable 5, Claude Mythos 5, Claude Opus 4.8 и Claude Opus 4.7, где оно не принимается и возвращает ошибку 400. Несколько моделей имеют специфичное для режима поведение:
claude-fable-5) и Claude Mythos 5 (claude-mythos-5): ручное расширенное мышление не поддерживается и возвращает ошибку 400. Адаптивное мышление всегда включено; используйте параметр effort для управления глубиной мышления.thinking: {type: "adaptive"}) с параметром effort. Модель сама определяет, использовать ли расширенное мышление и в каком объёме, исходя из каждого запроса.thinking: {type: "adaptive"}) с параметром effort.thinking: {type: "enabled", budget_tokens: N} также принимается. не поддерживается, а по умолчанию имеет значение вместо возврата содержимого мышления. Передайте , чтобы получать сводки.Поведение мышления различается в разных версиях моделей Claude. Подробности см. в разделе Различия в мышлении между версиями моделей.
Когда расширенное мышление включено, Claude создаёт блоки содержимого thinking, в которых выводит свои внутренние рассуждения. Claude учитывает выводы из этих рассуждений перед формированием окончательного ответа.
Ответ API включает блоки содержимого thinking, за которыми следуют блоки содержимого text.
Вот пример формата ответа по умолчанию:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Дополнительную информацию о формате ответа расширенного мышления см. в справочнике Messages API.
Вот пример использования расширенного мышления в Messages API:
Чтобы включить расширенное мышление, добавьте объект thinking с параметром type, установленным в значение enabled, и budget_tokens с указанным бюджетом токенов для расширенного мышления. Для Claude Opus 4.6 и Claude Sonnet 4.6 вместо этого используйте type: "adaptive". Подробности см. в разделе Адаптивное мышление. Хотя type: "enabled" с budget_tokens всё ещё работает в этих моделях, этот вариант устарел и будет удалён в будущем выпуске.
Параметр budget_tokens определяет максимальное количество токенов, которое Claude может использовать для своего внутреннего процесса рассуждения. Это ограничение применяется к полным токенам мышления, а не к суммированному выводу. Более крупные бюджеты могут улучшить качество ответа, позволяя проводить более тщательный анализ сложных проблем, хотя Claude может не использовать весь выделенный бюджет, особенно при значениях выше 32k.
Параметр budget_tokens устарел в Claude Opus 4.6 и Claude Sonnet 4.6 и будет удалён в будущем выпуске модели. Вместо этого используйте адаптивное мышление с параметром effort для управления глубиной мышления.
Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7 и Claude Opus 4.6 поддерживают до 128k выходных токенов. Claude Sonnet 4.6 и Claude Haiku 4.5 поддерживают до 64k. Ограничения для устаревших моделей см. в обзоре моделей. В Message Batches API бета-заголовок output-300k-2026-03-24 повышает лимит вывода до 300k для Claude Opus 4.8, Opus 4.7, Opus 4.6 и Sonnet 4.6.
Значение budget_tokens должно быть меньше max_tokens. Однако при использовании чередующегося мышления с инструментами вы можете превысить этот лимит, поскольку лимитом токенов становится всё ваше контекстное окно. Поскольку budget_tokens должен быть меньше max_tokens, расширенное мышление нельзя сочетать с max_tokens: 0 (предварительный прогрев кэша).
При включённом расширенном мышлении Messages API для моделей Claude 4 возвращает сводку полного процесса мышления Claude. Суммированное мышление обеспечивает все интеллектуальные преимущества расширенного мышления, одновременно предотвращая злоупотребления. Это поведение по умолчанию для моделей Claude 4, когда поле display в конфигурации мышления не задано или установлено в значение "summarized". В Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Opus 4.7 и Claude Mythos Preview значение display по умолчанию равно "omitted", поэтому для получения суммированного мышления необходимо явно указать display: "summarized".
Вот несколько важных соображений относительно суммированного мышления:
В редких случаях, когда вам необходим доступ к полному выводу мышления для моделей Claude 4, свяжитесь с отделом продаж Anthropic.
Поле display в конфигурации мышления управляет тем, как содержимое мышления возвращается в ответах API. Оно принимает два значения:
"summarized": блоки мышления содержат обобщённый текст мышления. Подробности см. в разделе Обобщённое мышление. Это значение по умолчанию для Claude Opus 4.6, Claude Sonnet 4.6 и более ранних моделей Claude 4."omitted": блоки мышления возвращаются с пустым полем thinking. Поле signature по-прежнему содержит зашифрованное полное мышление для обеспечения непрерывности в многоходовых диалогах (см. Шифрование мышления). Это значение по умолчанию для Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Opus 4.7 и Claude Mythos Preview.Установка display: "omitted" полезна, когда ваше приложение не показывает содержимое мышления пользователям. Основное преимущество — более быстрое время до первого текстового токена при потоковой передаче: сервер полностью пропускает потоковую передачу токенов мышления и передаёт только подпись, поэтому потоковая передача итогового текстового ответа начинается раньше.
Вот несколько важных соображений относительно опущенного мышления:
signature, чтобы восстановить исходное мышление для построения подсказки (см. Сохранение блоков мышления). Любой текст, который вы помещаете в поле thinking возвращаемого опущенного блока, игнорируется.display недопустим при thinking.type: "disabled" (отображать нечего).thinking.type: "adaptive", если модель пропускает мышление для простого запроса, блок мышления не создаётся независимо от значения display.Поле signature идентично независимо от того, равно ли display значению "summarized" или "omitted". Переключение значений display между ходами в диалоге поддерживается.
В Claude Mythos Preview параметр display по умолчанию имеет значение "omitted". Примеры в этом разделе передают display явно, чтобы они применялись ко всем моделям, но в Mythos Preview вы можете оставить его неустановленным и получить то же поведение. Чтобы получать суммированное мышление в Mythos Preview, явно установите display: "summarized".
Автоматизированные конвейеры, которые никогда не показывают содержимое мышления конечным пользователям, могут избежать накладных расходов на получение токенов мышления по сети. Приложения, чувствительные к задержкам, получают то же качество рассуждений без ожидания потоковой передачи текста мышления перед началом окончательного ответа.
Когда установлено display: "omitted", ответ содержит блоки thinking с пустым полем thinking:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}При потоковой передаче с display: "omitted" события thinking_delta не генерируются; последовательность событий см. в разделе Потоковая передача мышления ниже.
Вы можете передавать ответы расширенного мышления в потоковом режиме, используя server-sent events (SSE) (события, отправляемые сервером).
Когда потоковая передача включена для расширенного мышления, вы получаете содержимое мышления через события thinking_delta.
Когда установлено display: "omitted", события thinking_delta не генерируются. См. Управление отображением мышления.
Дополнительную документацию по потоковой передаче через Messages API см. в разделе Потоковая передача сообщений.
Вот как обрабатывать потоковую передачу с мышлением:
Пример вывода потоковой передачи:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
// Additional thinking deltas...
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
// Additional text deltas...
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
event: message_stop
data: {"type": "message_stop"}Когда установлено display: "omitted", блок мышления открывается, приходит одно событие signature_delta, и блок закрывается без каких-либо событий thinking_delta. Потоковая передача текста начинается сразу после этого:
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}При использовании потоковой передачи с включённым мышлением вы можете заметить, что текст иногда приходит более крупными фрагментами, чередующимися с более мелкой, потокенной доставкой. Это ожидаемое поведение, особенно для содержимого мышления.
Системе потоковой передачи необходимо обрабатывать содержимое пакетами для оптимальной производительности, что может приводить к такому «порционному» шаблону доставки с возможными задержками между событиями потоковой передачи.
Расширенное мышление можно использовать вместе с использованием инструментов, что позволяет Claude рассуждать о выборе инструментов и обработке результатов.
При использовании расширенного мышления с инструментами учитывайте следующие ограничения:
Ограничение выбора инструмента: использование инструментов с мышлением поддерживает только tool_choice: {"type": "auto"} (по умолчанию) или tool_choice: {"type": "none"}. Использование tool_choice: {"type": "any"} или tool_choice: {"type": "tool", "name": "..."} приведёт к ошибке, поскольку эти варианты принудительно вызывают использование инструментов, что несовместимо с расширенным мышлением.
Сохранение блоков мышления: во время использования инструментов вы должны передавать блоки thinking обратно в API для последнего сообщения ассистента. Включите полный неизменённый блок обратно в API, чтобы сохранить непрерывность рассуждений.
Вы не можете переключать мышление в середине хода ассистента, в том числе во время циклов использования инструментов. Весь ход ассистента должен работать в одном режиме мышления:
С точки зрения модели, циклы использования инструментов являются частью хода ассистента. Ход ассистента не завершается, пока Claude не закончит свой полный ответ, который может включать несколько вызовов инструментов и результатов.
Например, эта последовательность целиком является частью одного хода ассистента:
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]Несмотря на то что здесь несколько сообщений API, цикл использования инструментов концептуально является частью одного непрерывного ответа ассистента.
Когда возникает конфликт мышления в середине хода (например, включение или отключение мышления во время цикла использования инструментов), API автоматически отключает мышление для этого запроса. Чтобы сохранить качество модели и оставаться в пределах обучающего распределения, API может:
Это означает, что попытка переключить мышление в середине хода не вызовет ошибку, но мышление будет незаметно отключено для этого запроса. Чтобы убедиться, было ли мышление активно, проверьте наличие блоков thinking в ответе.
Лучшая практика: планируйте стратегию мышления в начале каждого хода, а не пытайтесь переключать её в середине хода.
Пример: переключение мышления после завершения хода
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)Завершая ход ассистента перед переключением мышления, вы гарантируете, что мышление действительно будет включено для нового запроса.
Переключение режимов мышления также делает недействительным кэширование подсказок для истории сообщений. Подробнее см. в разделе Расширенное мышление с кэшированием подсказок.
Во время использования инструментов вы должны передавать блоки thinking обратно в API, и вы должны включать полный неизменённый блок обратно в API. Это критически важно для поддержания потока рассуждений модели и целостности разговора.
Хотя вы можете опускать блоки thinking из предыдущих ходов с ролью assistant, всегда передавайте обратно все блоки мышления в API для любого многоходового разговора. API:
Какие блоки сохраняются, зависит от модели. См. Сохранение блоков мышления по моделям для значений по умолчанию для каждого класса. Чтобы переопределить значение по умолчанию, используйте стратегию редактирования контекста clear_thinking_20251015.
При переключении режимов мышления во время разговора помните, что весь ход ассистента (включая циклы использования инструментов) должен работать в одном режиме мышления. Подробнее см. в разделе Переключение режимов мышления в разговорах.
Когда Claude вызывает инструменты, он приостанавливает построение ответа в ожидании внешней информации. Когда возвращаются результаты инструментов, Claude продолжает строить этот существующий ответ. Это требует сохранения блоков мышления во время использования инструментов по нескольким причинам:
Непрерывность рассуждений: блоки мышления фиксируют пошаговые рассуждения Claude, которые привели к запросам инструментов. Когда вы отправляете результаты инструментов, включение исходного мышления гарантирует, что Claude сможет продолжить свои рассуждения с того места, где остановился.
Поддержание контекста: хотя результаты инструментов отображаются как пользовательские сообщения в структуре API, они являются частью непрерывного потока рассуждений. Сохранение блоков мышления поддерживает этот концептуальный поток через несколько вызовов API. Дополнительную информацию об управлении контекстом см. в руководстве по контекстным окнам.
Важно: при предоставлении блоков thinking вся последовательность последовательных блоков thinking должна соответствовать выводам, сгенерированным моделью во время исходного запроса; вы не можете переупорядочивать или изменять последовательность этих блоков.
Если блоки мышления изменены, API возвращает ошибку 400 invalid_request_error, сообщение которой содержит `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. Наиболее частая причина — код приложения, который фильтрует блоки содержимого по типу и отбрасывает блоки redacted_thinking, или который пересобирает сообщение ассистента вместо его точного возврата. См. Блоки мышления нельзя изменять для полного описания ошибки и шагов по исправлению.
Расширенное мышление с использованием инструментов в моделях Claude 4 поддерживает чередующееся мышление, которое позволяет Claude думать между вызовами инструментов и выполнять более сложные рассуждения после получения результатов инструментов.
С чередующимся мышлением Claude может:
Поддержка моделей:
interleaved-thinking-2025-05-14 устарел в Opus 4.6 и безопасно игнорируется, если включён.interleaved-thinking-2025-05-14 с ручным расширенным мышлением (thinking: {type: "enabled"}) всё ещё работает, но устарел.Вот некоторые важные соображения для чередующегося мышления:
budget_tokens может превышать параметр max_tokens, поскольку он представляет общий бюджет по всем блокам мышления в рамках одного хода ассистента.interleaved-thinking-2025-05-14 в запросах к любой модели без возврата ошибки. В моделях, которые не поддерживают чередующееся мышление, заголовок игнорируется. В Claude Opus 4.8, Claude Opus 4.7 и Claude Opus 4.6 он устарел и безопасно игнорируется. В Claude Mythos Preview он не требуется и безопасно игнорируется.interleaved-thinking-2025-05-14 любой модели, кроме Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (устаревшая), Opus 4 (устаревшая), Sonnet 4.5 или Sonnet 4 (устаревшая), ваш запрос завершится ошибкой.Кэширование подсказок с мышлением имеет несколько важных особенностей:
Задачи расширенного мышления часто занимают более 5 минут. Рассмотрите возможность использования 1-часовой длительности кэша для поддержания попаданий в кэш в течение более длительных сеансов мышления и многошаговых рабочих процессов.
Удаление блоков мышления из контекста
Шаблоны инвалидации кэша
В более ранних моделях Opus/Sonnet и во всех моделях Haiku блоки мышления удаляются для кэширования и расчётов контекста; в Opus 4.5+ и Sonnet 4.6+ они по умолчанию сохраняются. В любом случае они должны быть сохранены при продолжении разговоров с использованием инструментов, особенно с чередующимся мышлением.
При использовании расширенного мышления с инструментами блоки мышления демонстрируют специфическое поведение кэширования, которое влияет на подсчёт токенов:
Как это работает:
Подробный пример потока:
Запрос 1:
User: "What's the weather in Paris?"Ответ 1:
[thinking_block_1] + [tool_use block 1]Запрос 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]Ответ 2:
[thinking_block_2] + [text block 2]Запрос 2 записывает кэш содержимого запроса (не ответа). Кэш включает исходное сообщение пользователя, первый блок мышления, блок использования инструмента и результат инструмента.
Запрос 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]Для Opus 4.5+ и Sonnet 4.6+ все предыдущие блоки мышления по умолчанию сохраняются. Для более ранних моделей Opus/Sonnet и всех моделей Haiku, поскольку был включён блок пользователя, не являющийся результатом инструмента, все предыдущие блоки мышления игнорируются и удаляются из контекста. Этот запрос будет обработан так же, как:
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]Ключевые моменты:
cache_controlmax_tokens (который включает ваш бюджет мышления, когда мышление включено) применяется как строгое ограничение. В моделях Claude 4.5 и новее, если входные токены плюс max_tokens превышают размер контекстного окна, API принимает запрос. Если затем генерация достигает лимита контекстного окна, она останавливается с stop_reason: "model_context_window_exceeded". В более ранних моделях API вместо этого возвращает ошибку валидации. См. Обработка причин остановки.
Вы можете прочитать руководство по контекстным окнам для более глубокого погружения.
При расчёте использования контекстного окна с включённым мышлением следует учитывать некоторые особенности:
max_tokens для этого ходаДиаграмма ниже демонстрирует специализированное управление токенами при включённом расширенном мышлении:
Эффективное контекстное окно рассчитывается как:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Используйте API подсчёта токенов, чтобы получить точные подсчёты токенов для вашего конкретного случая использования, особенно при работе с многоходовыми разговорами, включающими мышление.
При использовании расширенного мышления с инструментами блоки мышления должны быть явно сохранены и возвращены вместе с результатами инструментов.
Расчёт эффективного контекстного окна для расширенного мышления с использованием инструментов становится следующим:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Диаграмма ниже иллюстрирует управление токенами для расширенного мышления с использованием инструментов:
Учитывая поведение контекстного окна и max_tokens с расширенным мышлением, вам может потребоваться:
max_tokens по мере изменения длины вашей подсказкиПолное содержимое мышления шифруется и возвращается в поле signature. Это поле используется для проверки того, что блоки мышления были сгенерированы Claude, когда они передаются обратно в API.
Строго необходимо отправлять блоки мышления обратно только при использовании инструментов с расширенным мышлением. В противном случае вы можете опустить блоки мышления из предыдущих ходов. Если вы передаёте их обратно, то сохранит ли их API или удалит, зависит от модели: Opus 4.5+ и Sonnet 4.6+ по умолчанию сохраняют их в контексте; более ранние модели Opus/Sonnet и все модели Haiku удаляют их. См. раздел редактирование контекста, чтобы настроить это поведение.
Если вы отправляете блоки мышления обратно, передавайте всё в том виде, в каком вы это получили, для обеспечения согласованности и во избежание потенциальных проблем.
Вот несколько важных соображений относительно шифрования мышления:
signature_delta внутри события content_block_delta непосредственно перед событием content_block_stop.signature в моделях Claude 4 значительно длиннее, чем в предыдущих моделях.signature является непрозрачным полем и не должно интерпретироваться или анализироваться.signature совместимы между платформами (API Claude, Amazon Bedrock и Vertex AI). Значения, сгенерированные на одной платформе, будут совместимы с другой.В дополнение к обычным блокам thinking API может возвращать блоки redacted_thinking. Блок redacted_thinking содержит зашифрованное содержимое мышления в поле data без читаемой сводки:
{
"type": "redacted_thinking",
"data": "..."
}Поле data непрозрачно и зашифровано. Как и поле signature в обычных блоках мышления, вы должны передавать блоки redacted_thinking обратно в API без изменений при продолжении многоходового разговора с инструментами.
Если ваш код фильтрует блоки содержимого по типу (например, block.type == "thinking") при возврате ответов с использованием инструментов, также включайте блоки redacted_thinking. Фильтрация только по block.type == "thinking" незаметно отбрасывает блоки redacted_thinking и нарушает многоходовой протокол, описанный выше.
Блоки redacted_thinking — это отдельный тип блока содержимого, возвращаемый API, когда части мышления отредактированы по соображениям безопасности. Это отличается от опции display: "omitted", которая возвращает обычные блоки thinking с пустым полем thinking.
Messages API обрабатывает мышление по-разному в разных версиях моделей Claude. Следующая таблица даёт краткое сравнение:
| Функция | Модели Claude 4 (до Opus 4.5) | Claude Opus 4.5 | Claude Sonnet 4.6 | Claude Opus 4.6 (адаптивное мышление) | Claude Opus 4.7 (адаптивное мышление) | Claude Opus 4.8 (адаптивное мышление) | Claude Mythos Preview (адаптивное мышление) |
|---|---|---|---|---|---|---|---|
| Вывод мышления | Возвращает суммированное мышление | Возвращает суммированное мышление | Возвращает суммированное мышление | Возвращает суммированное мышление | По умолчанию опущено; установите display: "summarized", чтобы получать суммированное мышление | По умолчанию опущено; установите display: "summarized", чтобы получать суммированное мышление | По умолчанию опущено; установите display: "summarized", чтобы получать суммированное мышление. Необработанные токены мышления никогда не возвращаются. |
Сохраняются ли блоки мышления из предыдущих ходов ассистента в контексте по умолчанию, зависит от класса модели. Opus: Claude Opus 4.5 и более поздние модели Opus сохраняют все предыдущие блоки мышления; Claude Opus 4.1 (устаревшая) и более ранние модели Opus сохраняют только мышление последнего хода ассистента. Sonnet: Claude Sonnet 4.6 и более поздние модели Sonnet сохраняют все; Claude Sonnet 4.5 и более ранние модели Sonnet сохраняют только последний ход. Haiku: все модели Haiku вплоть до Claude Haiku 4.5 сохраняют только последний ход. Claude Mythos Preview также сохраняет все предыдущие блоки мышления.
Преимущества сохранения блоков мышления:
Важные соображения:
Для более ранних моделей (Claude Sonnet 4.5, Opus 4.1 (устаревшая) и т. д.) блоки мышления из предыдущих ходов по-прежнему удаляются из контекста. Существующее поведение, описанное в разделе Расширенное мышление с кэшированием подсказок, применяется к этим моделям.
Полную информацию о ценах, включая базовые тарифы, запись в кэш, попадания в кэш и выходные токены, см. на странице с ценами.
Процесс мышления влечёт за собой расходы за:
Когда расширенное мышление включено, автоматически добавляется специализированная системная подсказка для поддержки этой функции.
При использовании суммаризированного мышления:
При использовании display: "omitted":
thinking пустое)Количество тарифицируемых выходных токенов не будет совпадать с количеством видимых токенов в ответе. Вы платите за весь процесс мышления, а не за содержимое мышления, видимое в ответе.
Чтобы узнать, сколько тарифицируемых выходных токенов было потрачено на внутренние рассуждения, прочитайте usage.output_tokens_details.thinking_tokens в ответе. Это значение отражает исходные рассуждения, сгенерированные моделью (а не суммаризированный текст, возвращённый в теле ответа), и всегда меньше или равно output_tokens. Вычтите его из output_tokens, чтобы приблизительно оценить часть вывода, не относящуюся к рассуждениям.
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens остаётся итоговым авторитетным значением, используемым для тарификации. output_tokens_details — это разбивка только для чтения, предназначенная для наблюдаемости.
usage.output_tokens_details.thinking_tokens в ответе сообщает, сколько из оплачиваемых выходных токенов было использовано на внутреннее рассуждение. При потоковой передаче эта разбивка появляется только в финальном событии message_delta.max_tokens превышает 21 333, чтобы избежать HTTP-тайм-аутов при длительных запросах. Это проверка на стороне клиента, а не ограничение API. Если вам не нужно обрабатывать события инкрементально, используйте .stream() с .get_final_message() (Python) или .finalMessage() (TypeScript), чтобы получить полный объект Message без обработки отдельных событий. Подробности см. в разделе Потоковая передача сообщений. При потоковой передаче будьте готовы обрабатывать как блоки мышления, так и текстовые блоки контента по мере их поступления.display: "omitted" в конфигурации мышления, чтобы сократить время до первого текстового токена. См. раздел Управление отображением мышления.temperature или top_k, а также с принудительным использованием инструментов.top_p в значения от 1 до 0,95.thinking: {type: "disabled"}display"omitted"display: "summarized"type: "enabled") устарел, но всё ещё работает.type: "enabled") с чередующимся режимом устарел, но всё ещё работает.client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# Ответ содержит блоки с кратким изложением мышления и текстовые блоки
for block in response.content:
if block.type == "thinking":
print(f"\nThinking summary: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted",
},
messages=[
{"role": "user", "content": "What is 27 * 453?"},
],
)
for block in response.content:
if block.type == "thinking":
if block.thinking:
print(f"Thinking: {block.thinking}")
else:
print("Thinking: [omitted]")
elif block.type == "text":
print(f"Response: {block.text}")client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
thinking_started = False
response_started = False
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
# Сбрасываем флаги для каждого нового блока
thinking_started = False
response_started = False
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
if not thinking_started:
print("Thinking: ", end="", flush=True)
thinking_started = True
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
if not response_started:
print("Response: ", end="", flush=True)
response_started = True
print(event.delta.text, end="", flush=True)
elif event.type == "content_block_stop":
print("\nBlock complete.")interleaved-thinking-2025-05-14 в ваш запрос API, чтобы включить чередующееся мышление.| Чередующееся мышление | Поддерживается с бета-заголовком interleaved-thinking-2025-05-14 | Поддерживается с бета-заголовком interleaved-thinking-2025-05-14 | Поддерживается с бета-заголовком interleaved-thinking-2025-05-14 или автоматически с адаптивным мышлением | Автоматически с адаптивным мышлением (бета-заголовок устарел и безопасно игнорируется) | Автоматически с адаптивным мышлением (бета-заголовок устарел и безопасно игнорируется) | Автоматически с адаптивным мышлением (бета-заголовок устарел и безопасно игнорируется) | Автоматически с адаптивным мышлением (бета-заголовок не требуется и безопасно игнорируется). Рассуждения между инструментами перемещаются в блоки мышления в этой модели. |
| Сохранение блоков мышления | Не сохраняются между ходами | Сохраняются по умолчанию | Сохраняются по умолчанию | Сохраняются по умолчанию | Сохраняются по умолчанию | Сохраняются по умолчанию | Сохраняются по умолчанию. Блоки удаляются при продолжении разговора на модели, которая не поддерживает формат мышления Mythos. |