Мышление
Узнайте, как работает мышление Claude: как его включить, читать вывод мышления, управлять глубиной мышления с помощью параметра effort и использовать мышление с инструментами, кэшированием и потоковой передачей.
Модель, которая отвечает за один проход, должна сделать всё правильно с первой попытки: никаких черновиков, никакой проверки, никакой смены курса на полпути. Для доказательства, сложной ошибки или длительной агентной задачи первый подход часто оказывается не лучшим.
Мышление снимает это ограничение. Когда мышление активно, Claude прорабатывает задачу своими словами, прежде чем ответить: переформулирует, что именно спрашивается, пробует подходы, проверяет промежуточные результаты и отбрасывает пути, которые не выдерживают проверки. Это рассуждение поступает в блоках содержимого thinking перед ответом, и Claude опирается на него при формировании окончательного ответа. Именно поэтому мышление улучшает результаты в сложных задачах, таких как математика, программирование, анализ и длительная агентная работа, где качество ответа зависит от промежуточной работы, которая иначе была бы сжата в сам ответ или пропущена.
Мышление имеет свою цену: токены, которые Claude тратит на рассуждение, тарифицируются как выходные токены, даже когда текст мышления вам не возвращается, и они учитываются в max_tokens наряду с текстом ответа. На этой странице описано, как мышление ведёт себя на уровне API: как его включить, читать его вывод и управлять его взаимодействием с инструментами, потоковой передачей, кэшированием и контекстным окном.
Как работает мышление
Будет ли Claude думать над конкретным запросом и насколько глубоко — зависит от вашей конфигурации мышления и сложности запроса.
Вот как мышление выглядит в ответе: один или несколько блоков содержимого thinking поступают перед блоками text. Блок мышления — это всё ещё сгенерированное содержимое, как и следующий за ним блок text, но он отделён от канонического ответа. Каждый блок мышления также содержит поле signature — зашифрованную копию полного рассуждения, которую вы передаёте обратно без изменений в многоходовых разговорах и разговорах с использованием инструментов (см. Шифрование мышления):
{
"content": [
{
"type": "thinking",
"thinking": "Let me break this down. The question has two parts, so I'll start with the simpler one and use its result to constrain the second...",
"signature": "WaUjzkypQ2mUEVM36O2Txu...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Вы не всегда видите этот текст, и то, что вы видите, никогда не является необработанной цепочкой рассуждений: текст в блоке мышления — это сводка рассуждений Claude. Поле display в конфигурации мышления управляет тем, возвращается ли эта сводка вообще: "summarized" возвращает её, а "omitted" — значение по умолчанию в новейших моделях — возвращает блоки мышления с пустым полем thinking. В любом случае блок тарифицируется одинаково и передаётся обратно одинаково в многоходовых разговорах. См. Управление отображением мышления для значений по умолчанию и подробностей по каждой модели.
Если Claude использует инструменты, мышление также может появляться между вызовами инструментов. См. Мышление с использованием инструментов. Полный формат ответа см. в справочнике Messages API.
Настройка мышления
В текущих моделях мышление включено по умолчанию или находится на расстоянии одного параметра. Какую конфигурацию принимает каждая модель и какое значение используется по умолчанию, указано в таблице конфигурации по моделям на странице устранения неполадок.
В Claude Opus 5, Claude Sonnet 5, Claude Fable 5, Claude Mythos 5 и Claude Mythos Preview мышление уже включено: настройка не требуется. Первое, что нужно большинству разработчиков на этих моделях, — увидеть текст мышления, потому что display там по умолчанию имеет значение "omitted". Включите его с помощью thinking: {"type": "adaptive", "display": "summarized"}, что в точности соответствует следующему запросу с заменённой строкой модели.
В Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6 и Claude Sonnet 4.6 мышление выключено, пока вы не установите thinking: {type: "adaptive"}, что позволяет Claude решать, когда и насколько глубоко думать, исходя из запроса. Следующие примеры делают именно это, устанавливают display: "summarized", чтобы текст мышления был виден, и используют достаточно большое значение max_tokens:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
)
for block in response.content:
if block.type == "thinking":
print(f"\nThinking: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")Запуск примера выводит сводку мышления, затем ответ:
Thinking: Use Euclidean algorithm.
1071 = 2*462 + 147
462 = 3*147 + 21
147 = 7*21 + 0
GCD = 21
Response: ## Finding GCD of 1071 and 462
I'll use the **Euclidean algorithm**, repeatedly dividing and taking remainders...Токены мышления учитываются в max_tokens, поэтому установите его достаточно высоким, чтобы оставить место и для мышления, и для текста ответа. См. Контроль затрат на странице управления и Мышление и контекстное окно.
Отключение мышления
В Claude Sonnet 5, где мышление включено по умолчанию, вы можете его отключить:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=4096,
thinking={"type": "disabled"},
messages=[{"role": "user", "content": "Summarize this article in one sentence."}],
)В Claude Opus 5 мышление также включено по умолчанию, и модель принимает thinking: {type: "disabled"} при уровне effort high или ниже. При уровне effort xhigh или max мышление нельзя отключить: запросы, сочетающие thinking: {type: "disabled"} с этими уровнями effort, возвращают ошибку 400. Это ограничение применяется к Claude Opus 5 и более поздним моделям и проверяется при каждом запросе. При отключённом мышлении Claude Opus 5 может иногда выдавать вызовы инструментов в виде обычного текста или включать внутренние XML-теги в видимый вывод. См. Работа с отключённым мышлением для способов смягчения через подсказки.
Claude Fable 5, Claude Mythos 5 и Claude Mythos Preview отклоняют thinking: {type: "disabled"}: мышление нельзя отключить на этих моделях.
Если ваша модель поддерживает только расширенное мышление (см. таблицу конфигурации по моделям), настройте его с помощью type: "enabled" и значения budget_tokens. Страница Расширенное мышление описывает эту конфигурацию. А если какая-либо конфигурация мышления возвращается с ошибкой 400, страница Устранение неполадок мышления сопоставляет каждое сообщение об ошибке с его исправлением.
Чтение вывода мышления
Управление отображением мышления
Поле display в конфигурации мышления управляет тем, как содержимое мышления возвращается в ответах API. display работает в обоих режимах: устанавливайте его вместе с type: "adaptive" или type: "enabled". Оно принимает два значения:
"summarized": блоки мышления содержат текст сводки мышления — читаемую сводку рассуждений Claude. Это значение по умолчанию в Claude Opus 4.6, Claude Sonnet 4.6 и более ранних моделях."omitted": блоки мышления возвращаются с пустым полемthinking. Полеsignatureпо-прежнему содержит зашифрованное полное мышление для непрерывности в многоходовых разговорах (см. Шифрование мышления). Это значение по умолчанию в Claude Fable 5, Claude Mythos 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 и Claude Mythos Preview.
Устанавливайте display: "omitted", когда ваше приложение не показывает содержимое мышления пользователям. Основное преимущество — более быстрое время до первого текстового токена при потоковой передаче: сервер полностью пропускает потоковую передачу токенов мышления и доставляет только подпись, поэтому окончательный текстовый ответ начинает передаваться раньше.
При display: "omitted" ответ содержит блоки thinking с пустым полем thinking:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Учитывайте следующее при работе с опущенным мышлением:
- С вас по-прежнему взимается плата за полные токены мышления. Опущение снижает задержку, а не стоимость.
- Если вы передаёте блоки мышления обратно в многоходовых разговорах, передавайте их без изменений. Сервер расшифровывает
signature, чтобы восстановить исходное мышление для построения подсказки (см. Сохранение блоков мышления). Любой текст, который вы помещаете в полеthinkingвозвращённого опущенного блока, игнорируется. displayнедопустим сthinking.type: "disabled"(отображать нечего).- При использовании
thinking.type: "adaptive", если модель пропускает мышление для простого запроса, блок мышления не создаётся независимо отdisplay. - При потоковой передаче с
display: "omitted"событияthinking_deltaне генерируются. См. Потоковая передача мышления для последовательности событий.
В Ruby SDK обычные хэши принимают display:, как показано в примерах. Типизированный класс ThinkingConfigAdaptive называет параметр display_ (с завершающим подчёркиванием, чтобы избежать затенения Kernel#display в Ruby). В любом случае поле на уровне протокола по-прежнему называется display.
Сводка мышления
Когда display равно "summarized", получаемый вами текст мышления — это сводка полного процесса мышления Claude, а не необработанная цепочка рассуждений. Сводка мышления обеспечивает все интеллектуальные преимущества мышления, предотвращая при этом злоупотребления. Ни одна настройка display не возвращает необработанную цепочку рассуждений.
Учитывайте следующее при работе со сводкой мышления:
- С вас взимается плата за полные токены мышления, сгенерированные исходным запросом, а не за токены сводки. Тарифицируемое количество выходных токенов не совпадает с количеством токенов, которые вы видите в ответе.
- В Claude Opus 4.6, Claude Sonnet 4.6 и более ранних моделях первые несколько строк вывода мышления более подробны и содержат детальное рассуждение, что особенно полезно для целей инженерии подсказок. Claude Mythos Preview суммирует с первого токена, поэтому его блоки мышления не показывают эту подробную преамбулу.
- Суммирование сохраняет ключевые идеи процесса мышления Claude с минимальной дополнительной задержкой, поэтому сводки могут передаваться потоком по мере поступления.
- Суммирование обрабатывается моделью, отличной от той, которую вы указываете в своих запросах. Модель мышления не видит суммированный вывод.
- Поскольку Anthropic стремится улучшить функцию мышления, поведение суммирования может измениться.
Потоковая передача мышления
Мышление работает с потоковой передачей. Блоки мышления передаются потоком как события thinking_delta внутри событий content_block_delta, за которыми следует одно событие signature_delta непосредственно перед content_block_stop блока. Текстовые блоки передаются потоком после этого как обычно.
Следующие примеры передают ответ потоком с адаптивным мышлением, выводя дельты мышления и текста по мере их поступления:
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)Чтобы собрать полные блоки мышления с их подписями после потоковой передачи, используйте вспомогательную функцию накопления сообщений вашего SDK, если она существует (например, stream.get_final_message() в Python или stream.finalMessage() в TypeScript), вместо самостоятельной конкатенации дельт.
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-opus-4-8", "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": "EqQBCgIYAhIM1gbcDa9GJwZA2b..."}}
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":""}}Общие механизмы потоковой передачи см. в разделе Потоковая передача сообщений.
Мышление и effort
Параметр thinking управляет тем, размышляет ли Claude в блоках мышления перед ответом; параметр effort управляет тем, сколько усилий Claude вкладывает в весь ответ, что в адаптивном режиме включает то, как часто и насколько глубоко он размышляет. Не передавайте adaptive в качестве значения effort: adaptive — это режим мышления, а не уровень усилий.
О том, что каждый уровень effort делает с поведением мышления, см. в таблице поведения мышления по уровням на странице Управление мышлением. Страница Effort документирует сам параметр, включая то, какие уровни поддерживает каждая модель. В Claude Opus 4.5 — единственной модели только с расширенным мышлением, которая поддерживает effort, — effort сочетается с budget_tokens. См. Правила бюджета и настройка.
При таком разделении двух элементов управления выбирайте тот, который соответствует вашей цели:
- Снизить стоимость или задержку для рабочей нагрузки с включённым мышлением: сначала понизьте
effort. Он масштабирует весь ответ вниз, включая мышление. - Claude думает слишком редко или слишком поверхностно: повысьте
effortили см. Управление частотой мышления Claude на странице управления. - Вам нужно полностью отключить мышление: используйте
thinking: {type: "disabled"}на моделях, которые это позволяют (см. таблицу конфигурации по моделям). - Вам нужен жёсткий потолок расходов: используйте
max_tokens. Effort — это мягкая рекомендация.max_tokens— строгий лимит.
Мышление с использованием инструментов
Мышление работает вместе с использованием инструментов, позволяя Claude рассуждать о выборе инструментов и обрабатывать результаты инструментов. Применяются два ограничения:
- Ограничение выбора инструмента (ручной режим): использование инструментов с ручным расширенным мышлением (
thinking: {type: "enabled"}) поддерживает толькоtool_choice: {"type": "auto"}(по умолчанию) илиtool_choice: {"type": "none"}. Использованиеtool_choice: {"type": "any"}илиtool_choice: {"type": "tool", "name": "..."}приводит к ошибке, потому что эти опции принудительно вызывают использование инструментов, что несовместимо с ручным расширенным мышлением. Адаптивное мышление, в том числе на моделях, где мышление включено по умолчанию, поддерживает принудительное использование инструментов. - Сохранение блоков мышления: когда вы возвращаете результаты инструментов, вы должны передать блоки мышления из сообщения ассистента обратно в 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)Переключение режимов мышления также делает недействительным кэширование подсказок. См. Мышление и кэширование подсказок.
Сохранение блоков мышления
Когда Claude вызывает инструмент, он приостанавливает построение своего ответа в ожидании внешней информации. Когда вы возвращаете результат инструмента, Claude продолжает строить тот же ответ, поэтому его предыдущее рассуждение должно по-прежнему присутствовать. Передавайте каждый блок thinking обратно в API полностью и без изменений вместе с блоком tool_use, который он сопровождал. Это важно по двум причинам:
- Непрерывность рассуждения: блоки мышления фиксируют пошаговое рассуждение, которое привело к запросам инструментов. Их включение позволяет Claude продолжить рассуждение с того места, где он остановился.
- Поддержание контекста: результаты инструментов появляются как пользовательские сообщения в структуре API, но они являются частью одного непрерывного потока рассуждений. Сохранение блоков мышления поддерживает этот поток между вызовами API.
Вкратце:
- Обязательно: внутри хода с использованием инструментов передавайте блоки мышления обратно.
- Рекомендуется: между ходами передавайте всё обратно.
- Допустимо: вне использования инструментов опускать мышление предыдущих ходов.
Вам не нужно самостоятельно удалять старое мышление. Передавайте все блоки мышления обратно в многоходовых разговорах, и API автоматически отфильтрует их, сохранит блоки, необходимые для сохранения рассуждений модели, и тарифицирует входные токены только за блоки, фактически показанные Claude. Какие блоки предыдущих ходов сохраняются, зависит от модели. См. Сохранение блоков мышления по моделям. Чтобы переопределить значение по умолчанию, используйте стратегию редактирования контекста clear_thinking_20251015.
В последнем сообщении ассистента последовательность идущих подряд блоков thinking должна совпадать с тем, что модель сгенерировала в исходном запросе: вы не можете переставлять, редактировать или частично удалять их. Это включает блоки redacted_thinking.
Полное пошаговое руководство по двум ходам с кодом для каждого SDK см. в разделе Мышление в рабочих процессах с инструментами и многоходовых процессах. Там определяется инструмент, принимается ответ с мышлением и использованием инструмента, и ход ассистента отправляется обратно вместе с результатом инструмента.
Чередующееся мышление
Чередующееся мышление позволяет Claude думать между вызовами инструментов, рассуждая о каждом результате инструмента, прежде чем действовать на его основе. С чередующимся мышлением Claude может:
- Рассуждать о результатах вызова инструмента, прежде чем решить, что делать дальше
- Связывать несколько вызовов инструментов с шагами рассуждения между ними
- Принимать более тонкие решения на основе промежуточных результатов
При адаптивном мышлении чередующееся мышление работает автоматически на каждой модели, которая поддерживает адаптивное мышление. Бета-заголовок не требуется. В Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, Claude Opus 4.8 и Claude Opus 4.7 рассуждение между вызовами инструментов всегда появляется в блоках мышления. Claude Haiku 4.5 не поддерживает чередующееся мышление. На моделях, использующих ручное расширенное мышление, чередование требует бета-заголовка и меняет способ подсчёта бюджета мышления. Чередующееся мышление в ручном режиме описывает правила для каждой модели и поведение заголовков для конкретных платформ.
При чередующемся мышлении выделение на мышление может охватывать весь ход ассистента, а не один ответ. Чередующееся мышление поддерживается только для инструментов, используемых через Messages API.
Проработанное сравнение, показывающее, что меняет чередующееся мышление в рабочем процессе с двумя инструментами, см. в разделе Как чередующееся мышление меняет поток.
Сохранение блоков мышления по моделям
Остаются ли блоки мышления из предыдущих ходов ассистента в контексте по умолчанию, зависит от модели:
- Сохраняют все предыдущие ходы: Claude Opus 4.5 и более поздние модели Opus, Claude Sonnet 4.6 и более поздние модели Sonnet, Claude Fable 5, Claude Mythos 5 и Claude Mythos Preview.
- Сохраняют только последний ход: более ранние модели Opus и Sonnet, а также все модели Haiku вплоть до Claude Haiku 4.5. Когда вы передаёте более старые блоки мышления обратно, API автоматически удаляет их. Вам не нужно удалять их самостоятельно.
Сохранение даёт два преимущества:
- Оптимизация кэша: сохранённые блоки мышления обеспечивают попадания в кэш во время использования инструментов, поскольку они передаются обратно с результатами инструментов и кэшируются инкрементально на протяжении хода ассистента, что приводит к экономии токенов в многошаговых рабочих процессах.
- Отсутствие влияния на интеллект: сохранение блоков мышления не оказывает негативного влияния на производительность модели.
Компромисс — использование контекста: длинные разговоры потребляют больше пространства контекста на моделях, сохраняющих всё, потому что сохранённые блоки мышления учитываются как входные данные, как и любая другая история разговора (см. Мышление и контекстное окно). Поведение автоматическое в обоих режимах. Изменения кода или бета-заголовки не требуются, и вы должны продолжать передавать полные, неизменённые блоки мышления обратно, как описано в разделе Сохранение блоков мышления. Чтобы переопределить значение по умолчанию в любом направлении, используйте очистку блоков мышления.
Переключение моделей в середине разговора. При переключении между любыми двумя моделями, например после резервного переключения при отказе классификатора, удалите блоки thinking и redacted_thinking из предыдущих ходов ассистента. Блоки мышления привязаны к модели, которая их создала. Другие модели молча игнорируют их, а не отклоняют запрос, но игнорируемые блоки всё равно добавляют входные токены.
Мышление и кэширование подсказок
Кэширование подсказок взаимодействует с мышлением несколькими конкретными способами. Следующие правила применяются в обоих режимах мышления.
Изменения конфигурации делают кэширование недействительным. Конфигурация мышления и разрешённый уровень effort отображаются в самой подсказке, поэтому изменение любого из них начинает новый префикс кэша. Переключение между adaptive, enabled и disabled, изменение budget_tokens и изменение значения effort — всё это делает недействительными точки разрыва кэша: точки разрыва на уровне сообщений всегда промахиваются, а точки разрыва инструментов и системной подсказки тоже могут промахиваться, в зависимости от того, где модель отображает конфигурацию. Рассматривайте любое изменение мышления или effort как начало кэша заново. Последовательные запросы, сохраняющие одну и ту же конфигурацию, сохраняют кэш, а явная установка параметра в его значение по умолчанию эквивалентна его пропуску. Проработанная демонстрация с выводом использования находится на странице Управление мышлением.
Блоки мышления кэшируются с результатами инструментов. Во время цикла использования инструментов кэширование происходит, когда вы делаете последующий запрос, включающий результаты инструментов. В этот момент предыдущая история разговора, включая её блоки мышления, может быть закэширована, и эти закэшированные блоки мышления учитываются как входные токены в ваших метриках использования при чтении из кэша. Это происходит автоматически, даже без явных маркеров cache_control, и ведёт себя одинаково для обычного и чередующегося мышления. Компромисс: блоки мышления, которые вы больше никогда не увидите в ответах, всё равно вносят вклад в использование входных токенов при чтении из кэша.
Находятся ли предыдущие блоки в контексте вообще, зависит от модели. Этим управляет значение сохранения по умолчанию. На моделях, сохраняющих всё, блоки мышления предыдущих ходов остаются закэшированными и в контексте. На моделях, сохраняющих только последний ход, как только вы отправляете пользовательское сообщение, которое не является результатом инструмента, все предыдущие блоки мышления удаляются из контекста. На таких моделях разговор вроде этого:
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]обрабатывается так, как если бы блоков мышления никогда не было:
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]На моделях, сохраняющих всё, тот же запрос сохраняет thinking_block_1 и thinking_block_2 в контексте и в кэше.
Деградация удаляет мышление из кэшируемой истории. Если мышление становится отключённым в середине хода и вы передаёте содержимое мышления в текущем ходе использования инструментов, содержимое мышления удаляется, и мышление остаётся отключённым для этого запроса (см. мягкую деградацию). Чередующееся мышление усиливает эффекты инвалидации кэша, потому что блоки мышления могут возникать между несколькими вызовами инструментов.
Мышление и контекстное окно
max_tokens, который включает всё мышление, генерируемое Claude в текущем ходе, применяется как строгий лимит. В моделях Claude 4.5 и новее, если входные токены плюс max_tokens превышают размер контекстного окна, API принимает запрос. Если генерация затем достигает лимита контекстного окна, она останавливается с stop_reason: "model_context_window_exceeded" вместо возврата ошибки. В более ранних моделях API вместо этого возвращает ошибку валидации. См. Обработка причин остановки.
Как мышление учитывается в окне, зависит от того, когда оно было сгенерировано:
- Мышление текущего хода всегда учитывается в
max_tokens, тарифицируется как выходные токены и занимает пространство контекстного окна для хода, который его сгенерировал. - Мышление предыдущих ходов зависит от значения сохранения по умолчанию. На моделях, сохраняющих все предыдущие ходы, предыдущие блоки мышления остаются в контексте, учитываются в окне и тарифицируются как входные токены, как и остальная история разговора. На моделях, сохраняющих только последний ход, API автоматически удаляет более старые блоки мышления, когда вы передаёте их обратно, поэтому они не потребляют пространство окна или входные токены.
На практике:
- На моделях, сохраняющих всё, планируйте бюджет контекстного окна так, как если бы мышление было обычной историей разговора, потому что так оно и есть. Длительные агентные сессии накапливают мышление в контексте. Используйте очистку блоков мышления, если вам нужно освободить пространство.
- На моделях, сохраняющих только последний ход, мышление — это только стоимость за ход: мышление каждого хода учитывается в
max_tokensэтого хода, а затем выпадает из окна.
Следующие диаграммы иллюстрируют режим сохранения только последнего хода (с удалением). Первая показывает многоходовой разговор: блок мышления каждого хода генерируется в выводе, но не переносится во входные данные последующих ходов.
Вторая показывает тот же режим с использованием инструментов: мышление остаётся в контексте вместе со своим результатом инструмента на протяжении хода ассистента, затем выпадает на следующем пользовательском ходе.
Используйте API подсчёта токенов, чтобы получить точные подсчёты для вашего конкретного случая использования, особенно для многоходовых разговоров, включающих мышление.
Шифрование мышления
Полное содержимое мышления зашифровано и возвращается в поле signature каждого блока мышления. API использует подпись для проверки того, что блоки мышления были сгенерированы Claude, когда вы передаёте их обратно.
Учитывайте следующее при работе с подписями:
- Строго необходимо отправлять блоки мышления обратно только при использовании инструментов с мышлением. В противном случае вы можете опустить блоки мышления из предыдущих ходов. Если вы всё же передаёте их обратно, сохранит ли их API или удалит, зависит от модели (см. Сохранение блоков мышления по моделям). Используйте редактирование контекста, чтобы настроить это.
- При отправке блоков мышления обратно передавайте всё точно так, как вы это получили, для согласованности и во избежание потенциальных проблем.
- При потоковой передаче ответов подпись поступает как
signature_deltaвнутри событияcontent_block_deltaнепосредственно перед событиемcontent_block_stop. - Значения
signatureзначительно длиннее в Claude 4 и более поздних моделях, чем в предыдущих моделях. - Поле
signatureнепрозрачно: не интерпретируйте и не разбирайте его. - Значения
signatureсовместимы между платформами (Claude API, Amazon Bedrock и Google Cloud). Значения, сгенерированные на одной платформе, работают на другой.
Отредактированные блоки мышления
В дополнение к обычным блокам thinking API может возвращать блоки redacted_thinking, когда части рассуждений Claude отредактированы по соображениям безопасности. Блок redacted_thinking содержит зашифрованное содержимое мышления в поле data без читаемого текста:
{
"type": "redacted_thinking",
"data": "..."
}Поле data непрозрачно и зашифровано. Как и поле signature в обычных блоках мышления, передавайте блоки redacted_thinking обратно в API без изменений при продолжении многоходового разговора с инструментами.
Вывод мышления в Claude Fable 5 и Claude Mythos 5
В Claude Fable 5 и Claude Mythos 5 необработанная цепочка рассуждений никогда не возвращается. Получаемые вами блоки — это обычные блоки thinking, а не redacted_thinking, и настройка display работает так же, как на других моделях (суммированный текст или пустое поле thinking при опущении, что здесь является значением по умолчанию). Форму ответа блоков мышления см. в справочнике Messages API.
При продолжении разговора на той же модели передавайте каждый блок мышления обратно в API точно так, как он был получен, включая блоки, у которых поле thinking пустое. Не редактируйте и не реконструируйте их. Чтение текста сводки для отображения допустимо: API отклоняет блоки, возвращённое содержимое которых было изменено, а не блоки, которые вы прочитали. Текст, помещённый в пустое опущенное поле thinking, игнорируется, а не отклоняется.
О том, как обрабатываются блоки мышления при переключении моделей в середине разговора, см. Сохранение блоков мышления по моделям.
Два исключения, описанные в разделе Резервный кредит:
- Повторные попытки с резервным кредитом должны отправлять тело отклонённого запроса без изменений.
- Блоки
fallbackот резервного переключения в середине вывода остаются там, где они появились.
Чтобы получить представление о рассуждениях модели, читайте блоки thinking, описанные на этой странице, а не запрашивайте рассуждение в тексте ответа. В Claude Fable 5 запрос, который пытается извлечь внутреннее рассуждение модели как часть текста ответа, может быть отклонён с stop_details.category: "reasoning_extraction". См. Категории отказов для справки по полям и рекомендаций по обработке.
Ограничения и совместимость функций
Параметры сэмплирования. В моделях Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7 и Claude Sonnet 5 значения temperature, top_p или top_k, отличные от значений по умолчанию, возвращают ошибку 400 при каждом запросе, независимо от того, используется ли мышление. В более старых моделях ограничение применяется только при включённом мышлении: temperature и top_k несовместимы с мышлением, а top_p допускается при значениях от 0,95 до 1.
Предзаполнение ответа и принудительное использование инструментов. Вы не можете предварительно заполнить ответ ассистента при включённом мышлении. Принудительное использование инструментов (tool_choice: {"type": "any"} или {"type": "tool", ...}) несовместимо с ручным расширенным мышлением, но работает с адаптивным мышлением. См. Мышление с использованием инструментов.
Ограничения на вывод. Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6 и Claude Sonnet 4.6 поддерживают до 128 тыс. выходных токенов на запрос. Claude Haiku 4.5, Claude Sonnet 4.5 и Claude Opus 4.5 поддерживают до 64 тыс. В Message Batches API бета-заголовок output-300k-2026-03-24 повышает лимит до 300 тыс. для Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6 и Claude Sonnet 4.6. Ограничения для устаревших моделей см. в обзоре моделей.
Длинные запросы. SDK требуют потоковой передачи, когда max_tokens превышает 21 333, чтобы избежать тайм-аутов HTTP при длительных запросах. Это проверка на стороне клиента, а не ограничение API. Если вам не нужно обрабатывать события инкрементально, используйте .stream() с .get_final_message() (Python) или .finalMessage() (TypeScript), чтобы получить полный объект Message без обработки отдельных событий. См. Потоковая передача сообщений. Ожидайте более длительного времени ответа при активном мышлении, поскольку генерация блоков мышления увеличивает время обработки. Для рабочих нагрузок, при которых объём мышления превышает примерно 32 тыс. токенов на запрос, используйте пакетную обработку, чтобы избежать сетевых проблем: такие запросы могут выполняться достаточно долго, чтобы достичь системных тайм-аутов и лимитов на открытые соединения.
Дальнейшие шаги
Управляйте тем, как часто и насколько глубоко Claude размышляет, с помощью уровней усилий, указаний в системной подсказке и управления на уровне отдельных сообщений, а также разберитесь в стоимости и ценообразовании мышления.
Пройдите полный двухходовой цикл использования инструментов, который корректно сохраняет блоки мышления, и посмотрите, как чередующееся мышление меняет ход процесса.
Диагностируйте и устраняйте наиболее распространённые сбои мышления: ошибки конфигурации 400, пустые или отсутствующие блоки мышления, остановки по max_tokens и промахи кэша.
Управляйте количеством токенов, которые Claude использует при ответе, с помощью параметра effort, балансируя между полнотой ответа и эффективностью использования токенов.
Was this page helpful?