Расширенный thinking в Claude
На этой странице описано, как включить расширенный thinking в Claude и прочитать его содержимое. ID моделей и адреса API см. в обзоре семейства Claude.
ГлавноеВ нативном API передавайте thinking, в OpenAI-совместимом API — объект reasoning. При включённом thinking не задавайте temperature.
Расширенный thinking позволяет модели сначала провести рассуждение, а затем ответить; это полезно для математики, кода и многошаговых аналитических задач. По нашим замерам, следующие модели у провайдера по умолчанию стабильно возвращают содержимое thinking: Opus 5.5, Opus 5, Opus 4.8, Opus 4.6, Sonnet 4.6, Haiku 5.5, Haiku 4.5, Fable 5.
Нативный API Anthropic
Доступны два режима:
Python
claude_thinking.py
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.ofox.io/anthropic", api_key=os.environ["OFOX_API_KEY"])
message = client.messages.create(
model="anthropic/claude-opus-5.5",
max_tokens=4000,
thinking={"type": "enabled", "budget_tokens": 2000},
messages=[{"role": "user", "content": "Ракетка и мяч вместе стоят 1,10 доллара, ракетка на 1 доллар дороже мяча. Сколько стоит мяч?"}],
)
for block in message.content:
if block.type == "thinking":
print("[Thinking]", block.thinking)
elif block.type == "text":
print("[Ответ]", block.text)- В
contentответа сначала идёт блокthinking, затем блокtext. Блокthinkingсодержитsignature, который в многошаговых вызовах инструментов нужно передавать обратно без изменений. - При потоковом выводе содержимое thinking приходит в событиях
thinking_delta, за ними следует одно событиеsignature_delta, и только затем начинаютсяtext_delta. - При включённом thinking не задавайте
temperature(или установите 1) и не задавайтеtop_k. - Токены, израсходованные на thinking, учитываются в
output_tokensи оплачиваются по цене вывода.
OpenAI-совместимый API
Thinking включается объектом reasoning, где max_tokens задаёт бюджет thinking:
claude_thinking_openai.py
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.io/v1", api_key=os.environ["OFOX_API_KEY"])
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-4.6",
max_tokens=4000,
extra_body={"reasoning": {"max_tokens": 2000}},
messages=[{"role": "user", "content": "Ракетка и мяч вместе стоят 1,10 доллара, ракетка на 1 доллар дороже мяча. Сколько стоит мяч?"}],
)
msg = resp.choices[0].message
details = getattr(msg, "reasoning_details", None) or []
print("[Thinking]", "".join(d.get("text", "") for d in details))
print("[Ответ]", msg.content)- В непотоковом ответе содержимое thinking находится в
message.reasoning_details; склейте поляtextвсех элементов по порядку. - В потоковом ответе содержимое thinking находится в
delta.reasoning_content.
Другие ошибки см. в разделе Типичные ошибки.
Обновлено