Эта функция соответствует требованиям Zero Data Retention (ZDR) (нулевого хранения данных). Если у вашей организации действует соглашение ZDR, данные, отправленные через эту функцию, не сохраняются после возврата ответа API.
Расширенное мышление предоставляет Claude улучшенные возможности рассуждения для сложных задач, обеспечивая при этом различные уровни прозрачности его пошагового мыслительного процесса перед тем, как он выдаст окончательный ответ.
Расширенное мышление доступно во всех текущих моделях Claude. Способ его включения зависит от модели:
| Модель | Ручное расширенное мышление (budget_tokens) | Рекомендуется |
|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Не поддерживается (ошибка 400) | Адаптивное мышление, всегда включено; используйте effort для управления глубиной |
| Claude Mythos Preview | Поддерживается | Адаптивное мышление, включено по умолчанию |
| Claude Opus 4.8 | Не поддерживается (ошибка 400) | Адаптивное мышление с effort |
| Claude Opus 4.7 | Не поддерживается (ошибка 400) | Адаптивное мышление с effort |
| Claude Sonnet 5 | Не поддерживается (ошибка 400) | Адаптивное мышление с effort |
| Claude Opus 4.6 | Устарело | Адаптивное мышление с effort |
| Claude Sonnet 4.6 | Устарело | Адаптивное мышление с effort |
| Claude Opus 4.5 | Поддерживается | Н/Д |
| Claude Haiku 4.5 | Поддерживается | Н/Д |
| Более ранние модели Claude 4 | Поддерживается | Н/Д |
При адаптивном мышлении модель сама решает, когда и сколько думать при каждом запросе. В Claude Mythos Preview, Claude Fable 5 и Claude Mythos 5 параметр thinking: {type: "disabled"} не поддерживается. Различия в поведении между моделями (вывод мышления, чередующееся мышление и сохранение блоков) описаны в разделе Различия в мышлении между версиями моделей.
Когда расширенное мышление включено, 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:
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:
match block.type:
case "thinking":
print(f"\nThinking summary: {block.thinking}")
case "text":
print(f"\nResponse: {block.text}")Чтобы включить расширенное мышление, добавьте объект thinking с параметром type, установленным в enabled, и значением budget_tokens. В моделях, где ручное расширенное мышление устарело или не поддерживается (см. Поддерживаемые модели), используйте вместо этого type: "adaptive", как описано в разделе Адаптивное мышление.
Параметр 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 Sonnet 5, Claude Opus 4.6 и Claude Sonnet 4.6 поддерживают до 128k выходных токенов. Claude Haiku 4.5 поддерживает до 64k. Лимиты для устаревших моделей см. в обзоре моделей. В Message Batches API бета-заголовок output-300k-2026-03-24 повышает лимит вывода до 300k для Claude Opus 4.8, Opus 4.7, Sonnet 5, Opus 4.6 и Sonnet 4.6.
Значение budget_tokens должно быть меньше max_tokens. Однако при использовании чередующегося мышления с инструментами вы можете превысить этот лимит, поскольку лимитом токенов становится всё ваше контекстное окно. Поскольку budget_tokens должен быть меньше max_tokens, расширенное мышление нельзя сочетать с max_tokens: 0 (предварительный прогрев кэша).
Поле display в конфигурации мышления управляет тем, как содержимое мышления возвращается в ответах API. Оно принимает два значения:
"summarized": блоки мышления содержат обобщённый текст мышления. Подробнее см. в разделе Обобщённое мышление. Это значение по умолчанию для Claude Opus 4.6, Claude Sonnet 4.6 и более ранних моделей Claude 4."omitted": блоки мышления возвращаются с пустым полем thinking. Поле signature по-прежнему содержит зашифрованное полное мышление для обеспечения непрерывности в многоходовых диалогах (см. Шифрование мышления). Это значение по умолчанию для Claude Fable 5, Claude Mythos 5, Claude Sonnet 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".
Автоматизированные конвейеры, которые никогда не показывают содержимое мышления конечным пользователям, могут избежать накладных расходов на получение токенов мышления по сети. Приложения, чувствительные к задержкам, получают то же качество рассуждений без ожидания потоковой передачи текста мышления перед началом окончательного ответа.
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}")Когда задано display: "omitted", ответ содержит блоки thinking с пустым полем thinking:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}При потоковой передаче с display: "omitted" события thinking_delta не отправляются; последовательность событий см. в разделе Потоковая передача мышления.
При включённом расширенном мышлении Messages API для моделей Claude 4 возвращает сводку полного процесса мышления Claude. Суммированное мышление обеспечивает все интеллектуальные преимущества расширенного мышления, одновременно предотвращая злоупотребления. Это поведение по умолчанию для моделей Claude 4, когда поле display в конфигурации мышления не задано или установлено в значение "summarized". В Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 и Claude Mythos Preview значение display по умолчанию равно "omitted", поэтому для получения суммированного мышления необходимо явно задать display: "summarized".
Вот несколько важных соображений относительно суммированного мышления:
В редких случаях, когда вам необходим доступ к полному выводу мышления для моделей Claude 4, свяжитесь с отделом продаж Anthropic.
Вы можете передавать ответы расширенного мышления в потоковом режиме, используя server-sent events (SSE).
Когда потоковая передача включена для расширенного мышления, вы получаете содержимое мышления через события thinking_delta.
Когда задано display: "omitted", события thinking_delta не отправляются. См. Управление отображением мышления.
Дополнительную документацию по потоковой передаче через Messages API см. в разделе Потоковая передача сообщений.
Вот как обрабатывать потоковую передачу с мышлением:
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.")Пример вывода потоковой передачи:
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 может:
Способ включения чередующегося мышления зависит от модели:
| Модель | Чередующееся мышление |
|---|---|
| Claude Fable 5 Claude Mythos 5 | Автоматически с адаптивным мышлением. Рассуждения между инструментами перемещаются в блоки мышления. Бета-заголовок не требуется. |
| Claude Mythos Preview | Автоматически. Каждый шаг рассуждения между инструментами перемещается в блок мышления вместо обычного текста. Бета-заголовок не требуется и не поддерживается. |
| Claude Opus 4.8 | Автоматически с адаптивным мышлением (единственный поддерживаемый режим мышления). Бета-заголовок не требуется. |
| Claude Opus 4.7 | Автоматически с адаптивным мышлением (единственный поддерживаемый режим мышления). Бета-заголовок не требуется. |
| Claude Opus 4.6 | Автоматически с адаптивным мышлением. Бета-заголовок interleaved-thinking-2025-05-14 устарел и безопасно игнорируется, если включён. |
| Claude Sonnet 5 | Автоматически с адаптивным мышлением. Бета-заголовок interleaved-thinking-2025-05-14 устарел и безопасно игнорируется, если включён. |
| Claude Sonnet 4.6 | Автоматически с адаптивным мышлением (рекомендуется). Бета-заголовок с ручным type: "enabled" всё ещё работает, но устарел. |
| Claude Opus 4.5 | Добавьте бета-заголовок interleaved-thinking-2025-05-14 к вашему запросу API. |
| Claude Haiku 4.5 | Не поддерживается. Бета-заголовок принимается в Claude API, но игнорируется. |
| Более ранние модели Claude 4 | Добавьте бета-заголовок interleaved-thinking-2025-05-14 к вашему запросу API. |
Под более ранними моделями Claude 4 здесь подразумеваются Claude Sonnet 4.5, Claude Opus 4.1 (устарела), Claude Opus 4 (выведена из эксплуатации, кроме Google Cloud) и Claude Sonnet 4 (выведена из эксплуатации, кроме Bedrock и Google Cloud).
Вот некоторые важные соображения для чередующегося мышления:
budget_tokens может превышать параметр max_tokens, поскольку он представляет общий бюджет по всем блокам мышления в пределах одного хода ассистента.interleaved-thinking-2025-05-14 в запросах к любой модели без возврата ошибки. В моделях, которые не поддерживают чередующееся мышление, заголовок игнорируется. В Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6 и Claude Sonnet 5 он устарел и безопасно игнорируется. В Claude Mythos Preview он не требуется и безопасно игнорируется.interleaved-thinking-2025-05-14 любой модели, кроме Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (устарела), Opus 4 (выведена из эксплуатации, кроме Google Cloud), Sonnet 4.5 или Sonnet 4 (выведена из эксплуатации, кроме Bedrock и Google Cloud), ваш запрос завершится ошибкой.Кэширование подсказок с мышлением имеет несколько важных особенностей:
Задачи расширенного мышления часто занимают более 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 и Google Cloud). Значения, сгенерированные на одной платформе, будут совместимы с другой.В дополнение к обычным блокам 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. Следующая таблица даёт краткое сравнение:
| Модель | budget_tokens | Вывод мышления | Чередующееся мышление | Сохранение блоков |
|---|---|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Не поддерживается | Опущен по умолчанию1 | Автоматически2 | См. Адаптивное мышление |
| Claude Mythos Preview | Поддерживается | Опущен по умолчанию1 | Автоматически2 | Сохраняются3 |
| Claude Opus 4.8 | Не поддерживается | Опущен по умолчанию1 | Автоматически2 | Сохраняются |
| Claude Opus 4.7 | Не поддерживается | Опущен по умолчанию1 | Автоматически2 | Сохраняются |
| Claude Sonnet 5 | Не поддерживается | Опущен по умолчанию1 | Автоматически2 | Сохраняются |
| Claude Opus 4.6 | Устарело | Суммированный | Автоматически2 | Сохраняются |
| Claude Sonnet 4.6 | Устарело | Суммированный | Автоматически или бета-заголовок | Сохраняются |
| Claude Opus 4.5 | Поддерживается | Суммированный | Бета-заголовок | Сохраняются |
| Claude Haiku 4.5 | Поддерживается | Суммированный | Не поддерживается | Только последний ход |
| Более ранние модели Claude 4 | Поддерживается | Суммированный | Бета-заголовок | Только последний ход |
1 Задайте display: "summarized", чтобы получать суммированное мышление. В Claude Fable 5, Claude Mythos 5 и Claude Mythos Preview необработанные токены мышления никогда не возвращаются.
2 С адаптивным мышлением. Бета-заголовок interleaved-thinking-2025-05-14 не требуется в этих моделях и безопасно игнорируется, если включён.
3 Блоки удаляются при продолжении разговора на модели, которая не поддерживает формат мышления Mythos.
Сохраняются ли блоки мышления из предыдущих ходов ассистента в контексте по умолчанию, зависит от класса модели. 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.Позвольте Claude решать, когда и в какой мере использовать расширенное мышление.
Изучите практические примеры мышления в cookbook.
Изучите лучшие практики инженерии подсказок для расширенного мышления.
Was this page helpful?