Расширенное мышление дает Claude улучшенные возможности рассуждения для сложных задач, обеспечивая различные уровни прозрачности его пошагового процесса мышления перед тем, как он предоставит окончательный ответ.
Расширенное мышление поддерживается в следующих моделях:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (устарела)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)Поведение API отличается между моделями Claude Sonnet 3.7 и Claude 4, но формы API остаются абсолютно одинаковыми.
Для получения дополнительной информации см. Различия в мышлении между версиями моделей.
Когда расширенное мышление включено, 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..."
}
]
}Для получения дополнительной информации о формате ответа расширенного мышления см. Справочник API Messages.
Вот пример использования расширенного мышления в Messages API:
Чтобы включить расширенное мышление, добавьте объект thinking с параметром type, установленным на enabled, и budget_tokens на указанный бюджет токенов для расширенного мышления.
Параметр budget_tokens определяет максимальное количество токенов, которые Claude может использовать для своего внутреннего процесса рассуждения. В моделях Claude 4 это ограничение применяется к полным токенам мышления, а не к суммированному выводу. Большие бюджеты могут улучшить качество ответа, позволяя более тщательный анализ сложных проблем, хотя Claude может не использовать весь выделенный бюджет, особенно при значениях выше 32k.
budget_tokens должен быть установлен на значение меньше, чем max_tokens. Однако при использовании чередующегося мышления с инструментами, вы можете превысить это ограничение, так как лимит токенов становится вашим всем контекстным окном (200k токенов).
С включенным расширенным мышлением Messages API для моделей Claude 4 возвращает сводку полного процесса мышления Claude. Суммированное мышление обеспечивает полные преимущества интеллекта расширенного мышления, предотвращая неправомерное использование.
Вот некоторые важные соображения для суммированного мышления:
Claude Sonnet 3.7 продолжает возвращать полный вывод мышления.
В редких случаях, когда вам нужен доступ к полному выводу мышления для моделей Claude 4, свяжитесь с нашей командой продаж.
Вы можете передавать ответы расширенного мышления, используя события, отправляемые сервером (SSE).
Когда потоковая передача включена для расширенного мышления, вы получаете содержимое мышления через события thinking_delta.
Для получения дополнительной документации по потоковой передаче через Messages API см. Потоковые сообщения.
Вот как обрабатывать потоковую передачу с мышлением:
Пример вывода потоковой передачи:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-5", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "Let me solve this step by step:\n\n1. First break down 27 * 453"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}}
// 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": "27 * 453 = 12,231"}}
// 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"}При использовании потоковой передачи с включенным мышлением вы можете заметить, что текст иногда поступает в больших блоках, чередуясь с меньшей доставкой токен за токеном. Это ожидаемое поведение, особенно для содержимого мышления.
Система потоковой передачи должна обрабатывать содержимое партиями для оптимальной производительности, что может привести к этому "прерывистому" шаблону доставки с возможными задержками между событиями потоковой передачи. Мы постоянно работаем над улучшением этого опыта, с будущими обновлениями, сосредоточенными на более плавной потоковой передаче содержимого мышления.
Расширенное мышление можно использовать наряду с использованием инструментов, позволяя 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, цикл использования инструментов концептуально является частью одного непрерывного ответа ассистента.
Вы можете столкнуться с этой ошибкой:
Expected `thinking` or `redacted_thinking`, but found `tool_use`.
When `thinking` is enabled, a final `assistant` message must start
with a thinking block (preceding the lastmost set of `tool_use` and
`tool_result` blocks).Это обычно происходит, когда:
✗ Недействительно: Переключение мышления сразу после использования инструмента
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
// Cannot enable thinking here - still in the same assistant turn✓ Действительно: Завершите ход ассистента сначала
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?" (thinking disabled)
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)Лучшая практика: Спланируйте вашу стратегию мышления в начале каждого хода, а не пытайтесь переключаться в середине хода.
Переключение режимов мышления также делает недействительным кэширование подсказок для истории сообщений. Для получения дополнительной информации см. раздел Расширенное мышление с кэшированием подсказок.
Во время использования инструментов вы должны передать блоки thinking обратно в API, и вы должны включить полный неизмененный блок обратно в API. Это критично для поддержания потока рассуждений модели и целостности разговора.
Хотя вы можете опустить блоки thinking из предыдущих ходов роли assistant, мы предлагаем всегда передавать все блоки мышления обратно в API для любого многоходового разговора. API будет:
При переключении режимов мышления во время разговора помните, что весь ход ассистента (включая циклы использования инструментов) должен работать в одном режиме мышления. Для получения дополнительной информации см. Переключение режимов мышления в разговорах.
Когда Claude вызывает инструменты, он приостанавливает построение ответа, чтобы ожидать внешней информации. Когда возвращаются результаты инструментов, Claude продолжит построение этого существующего ответа. Это требует сохранения блоков мышления во время использования инструментов по нескольким причинам:
Непрерывность рассуждений: Блоки мышления захватывают пошаговые рассуждения Claude, которые привели к запросам инструментов. Когда вы отправляете результаты инструментов, включение исходного мышления гарантирует, что Claude может продолжить свои рассуждения с того момента, где он остановился.
Поддержание контекста: Хотя результаты инструментов отображаются как пользовательские сообщения в структуре API, они являются частью непрерывного потока рассуждений. Сохранение блоков мышления поддерживает этот концептуальный поток через несколько вызовов API. Для получения дополнительной информации об управлении контекстом см. наше руководство по контекстным окнам.
Важно: При предоставлении блоков thinking, вся последовательность последовательных блоков thinking должна соответствовать выходам, созданным моделью во время исходного запроса; вы не можете переставлять или изменять последовательность этих блоков.
Расширенное мышление с использованием инструментов в моделях Claude 4 поддерживает перемежающееся мышление, которое позволяет Claude думать между вызовами инструментов и проводить более сложные рассуждения после получения результатов инструментов.
С перемежающимся мышлением Claude может:
Чтобы включить перемежающееся мышление, добавьте заголовок бета-версии interleaved-thinking-2025-05-14 в ваш запрос API.
Вот некоторые важные соображения для перемежающегося мышления:
budget_tokens может превышать параметр max_tokens, так как он представляет общий бюджет для всех блоков мышления в одном ходу помощника.interleaved-thinking-2025-05-14.interleaved-thinking-2025-05-14 в запросах к любой модели без каких-либо эффектов.interleaved-thinking-2025-05-14 к любой модели, кроме Claude Opus 4.5, Claude Opus 4.1, Opus 4 или Sonnet 4, ваш запрос будет отклонен.Кеширование подсказок с мышлением имеет несколько важных соображений:
Задачи расширенного мышления часто занимают более 5 минут. Рассмотрите возможность использования длительности кеша в 1 час для сохранения попаданий кеша во время длительных сеансов мышления и многоэтапных рабочих процессов.
Удаление контекста блока мышления
Шаблоны инвалидации кеша
Хотя блоки мышления удаляются для кеширования и расчетов контекста, они должны быть сохранены при продолжении разговоров с использованием инструментов, особенно с перемежающимся мышлением.
При использовании расширенного мышления с использованием инструментов блоки мышления демонстрируют специфическое поведение кеширования, которое влияет на подсчет токенов:
Как это работает:
Подробный пример потока:
Запрос 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]Для Claude Opus 4.5 и более поздних версий все предыдущие блоки мышления сохраняются по умолчанию. Для более старых моделей, поскольку был включен блок результата, не связанный с инструментом, все предыдущие блоки мышления игнорируются. Этот запрос будет обработан так же, как:
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_controlВ более старых моделях Claude (до Claude Sonnet 3.7), если сумма токенов подсказки и max_tokens превышала контекстное окно модели, система автоматически корректировала max_tokens для соответствия лимиту контекста. Это означало, что вы могли установить большое значение max_tokens, и система молча уменьшала бы его по мере необходимости.
С моделями Claude 3.7 и 4, max_tokens (который включает ваш бюджет мышления при включенном мышлении) применяется как строгий лимит. Система теперь вернет ошибку валидации, если токены подсказки + max_tokens превышает размер контекстного окна.
Вы можете прочитать наше руководство по контекстным окнам для более глубокого погружения.
При расчете использования контекстного окна с включенным мышлением необходимо учитывать некоторые моменты:
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 с расширенным мышлением в моделях Claude 3.7 и 4, вам может потребоваться:
max_tokens по мере изменения длины подсказкиЭто изменение было сделано для обеспечения более предсказуемого и прозрачного поведения, особенно поскольку максимальные лимиты токенов значительно увеличились.
Полное содержимое мышления зашифровано и возвращается в поле signature. Это поле используется для проверки того, что блоки мышления были созданы Claude при передаче обратно в API.
Строго необходимо отправлять обратно блоки мышления только при использовании инструментов с расширенным мышлением. В противном случае вы можете опустить блоки мышления из предыдущих ходов или позволить API удалить их, если вы передадите их обратно.
Если вы отправляете обратно блоки мышления, мы рекомендуем передавать все обратно так, как вы это получили, для согласованности и избежания потенциальных проблем.
Вот некоторые важные соображения по шифрованию мышления:
signature_delta внутри события content_block_delta непосредственно перед событием content_block_stop.signature значительно длиннее в моделях Claude 4, чем в предыдущих моделях.signature является непрозрачным полем и не должно интерпретироваться или анализироваться - оно существует исключительно в целях проверки.signature совместимы между платформами (Claude API, Amazon Bedrock и Vertex AI). Значения, созданные на одной платформе, будут совместимы с другой.Иногда внутреннее рассуждение Claude будет отмечено нашими системами безопасности. Когда это происходит, мы шифруем часть или весь блок thinking и возвращаем его вам как блок redacted_thinking. Блоки redacted_thinking расшифровываются при передаче обратно в API, позволяя Claude продолжить свой ответ без потери контекста.
При создании приложений, ориентированных на пользователей, которые используют расширенное мышление:
Вот пример, показывающий как обычные, так и редактируемые блоки мышления:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "redacted_thinking",
"data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Появление редактируемых блоков мышления в вашем выводе — это ожидаемое поведение. Модель все еще может использовать это редактируемое рассуждение для информирования своих ответов, сохраняя при этом защиту безопасности.
Если вам нужно протестировать обработку редактируемого мышления в вашем приложении, вы можете использовать эту специальную тестовую строку в качестве подсказки: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
При передаче блоков thinking и redacted_thinking обратно в API в многоходовом разговоре вы должны включить полный неизменённый блок обратно в API для последнего хода ассистента. Это критически важно для сохранения потока рассуждений модели. Мы рекомендуем всегда передавать все блоки мышления в API. Для получения дополнительной информации см. раздел Сохранение блоков мышления выше.
Messages API обрабатывает мышление по-разному в моделях Claude Sonnet 3.7 и Claude 4, в основном в поведении редактирования и суммирования.
См. таблицу ниже для сокращённого сравнения:
| Функция | Claude Sonnet 3.7 | Claude 4 Models (pre-Opus 4.5) | Claude Opus 4.5 и позже |
|---|---|---|---|
| Вывод мышления | Возвращает полный вывод мышления | Возвращает суммированное мышление | Возвращает суммированное мышление |
| Чередующееся мышление | Не поддерживается | Поддерживается с заголовком бета-версии interleaved-thinking-2025-05-14 | Поддерживается с заголовком бета-версии interleaved-thinking-2025-05-14 |
| Сохранение блока мышления | Не сохраняется между ходами | Не сохраняется между ходами | Сохраняется по умолчанию (включает оптимизацию кэша, экономию токенов) |
Claude Opus 4.5 вводит новое поведение по умолчанию: блоки мышления из предыдущих ходов ассистента сохраняются в контексте модели по умолчанию. Это отличается от более ранних моделей, которые удаляют блоки мышления из предыдущих ходов.
Преимущества сохранения блока мышления:
Важные соображения:
Для более ранних моделей (Claude Sonnet 4.5, Opus 4.1 и т. д.) блоки мышления из предыдущих ходов продолжают удаляться из контекста. Существующее поведение, описанное в разделе Расширенное мышление с кэшированием подсказок, применяется к этим моделям.
Для получения полной информации о ценах, включая базовые ставки, записи в кэш, попадания в кэш и выходные токены, см. страницу цен.
Процесс мышления влечёт за собой расходы на:
Когда расширенное мышление включено, специализированная системная подсказка автоматически включается для поддержки этой функции.
При использовании суммированного мышления:
Количество выходных токенов, выставленных счётом, не будет совпадать с видимым количеством токенов в ответе. Вам выставляется счёт за полный процесс мышления, а не за резюме, которое вы видите.
max_tokens больше 21 333. При потоковой передаче будьте готовы обрабатывать как блоки мышления, так и текстовые блоки контента по мере их поступления.temperature или top_k, а также с принудительным использованием инструментов.top_p на значения между 1 и 0,95.curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"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?"
}
]
}'curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"stream": true,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "What is 27 * 453?"
}
]
}'Изучите практические примеры мышления в нашей кулинарной книге.