Без применённого серверного промпта Claude /v1/messages сохраняет нативные thinking-блоки Claude. У Sonnet 5.5 adaptive thinking включён по умолчанию с effort high, у Haiku 5.5 — с effort medium; у Opus 5 мышление тоже включено по умолчанию. Глубину задайте через output_config.effort. Для Opus 4.8 его нужно включить явно — "thinking": {"type": "adaptive"}.
{
"model": "claude-opus-5",
"max_tokens": 4096,
"thinking": {"type": "adaptive"},
"output_config": {"effort": "medium"},
"messages": [{
"role": "user",
"content": "Сравни два алгоритма и обоснуй выбор"
}]
}| effort | Когда |
|---|---|
low | простые и чувствительные к задержке задачи |
medium | баланс качества и расхода |
high | сложные задачи; значение по умолчанию |
xhigh / max | самые сложные coding и agentic-задачи на поддерживающих моделях |
В ответе thinking приходит отдельным блоком вместе с полем signature, после него — обычный text. В streaming используются thinking_delta и signature_delta.
Для gpt-6.1-sol Guard использует default effort low и поддерживает low, medium, high, xhigh, max. Значения none, minimal и прямой ultra отклоняются с 400. Raw native catalog рекламирует ultra, поэтому клиент Codex может показать этот уровень и сам перевести его в max; это не поддерживаемое значение прямого API. GPT-6 Sol и GPT-6 Luna по-прежнему используют default medium и поддерживают none, low, medium, high, xhigh, max; none подтверждено с reasoning_tokens: 0, хотя native dropdown его не показывает.
| Модели | Глубина в Chat Completions |
|---|---|
k3, k3-256k | поле reasoning_effort с любым непустым значением; сам Kimi документирует уровни low, high и max. Поле thinking эти модели не принимают, оно отклоняется локально |
kimi-for-coding, kimi-for-coding-highspeed | поле thinking ровно в виде {"type": "enabled", "keep": "all"}; поле reasoning_effort они тоже принимают, как и обе модели K3 |
| Composer 2.5 | уровней нет |
| Grok 4.7 и 4.6 | уровень входит в сам id: -low, -medium, -high, -xhigh. Отдельного поля для него нет; у 4.7 все восемь id используют окно 256K |
На /v1/chat/completions полей два, и они не равнозначны. Поле reasoning_effort понимают все четыре модели, и значение уходит наверх как прислано. Поле thinking есть только у kimi-for-coding и kimi-for-coding-highspeed: у k3 и k3-256k оно отклоняется локально, до резерва и списания. На Messages все четыре модели принимают thinking по контракту Messages; в Responses используется reasoning.effort.
| Модель | Поле | Что принимается в Chat Completions |
|---|---|---|
k3 | reasoning_effort | любое непустое значение; у Kimi документированы low, high и max |
k3-256k | reasoning_effort | любое непустое значение; у Kimi документированы low, high и max |
kimi-for-coding | reasoning_effort либо thinking | thinking ровно {"type": "enabled", "keep": "all"} |
kimi-for-coding-highspeed | reasoning_effort либо thinking | thinking ровно {"type": "enabled", "keep": "all"} |
Поле необязательное. Если не передать ничего, уровень выбирает сам Kimi: по его схеме это max.
{
"model": "k3",
"max_tokens": 2048,
"reasoning_effort": "high",
"messages": [{"role": "user", "content": "Сравни два алгоритма и обоснуй выбор"}]
}{
"model": "kimi-for-coding",
"max_tokens": 2048,
"thinking": {"type": "enabled", "keep": "all"},
"messages": [{"role": "user", "content": "Найди ошибку в этой функции"}]
}| Что отправлено в Chat Completions | Что придёт в ответ |
|---|---|
reasoning_effort пустой строкой или не строкой | 400 invalid_reasoning_effort |
tool_choice: "required" у kimi-for-coding и kimi-for-coding-highspeed | 400 invalid_tool_choice |
thinking в другой форме | 400 invalid_thinking |
thinking у модели K3 | 400 invalid_thinking |
Для Chat Completions: поле reasoning_effort понимают все четыре модели. Поле thinking есть только у kimi-for-coding и kimi-for-coding-highspeed, и у моделей K3 оно отклоняется локально, до резерва и списания.
У трёх API нет одного универсального переключателя. Guard сохраняет исходные поля и события thinking/reasoning выбранного протокола без перевода.
| API | Что подтверждено |
|---|---|
| Chat | thinking: {"type":"disabled"} отключает thinking; usage показывает completion_tokens_details.reasoning_tokens. |
| Messages | Native thinking/tool blocks, если модель их вернула, нужно сохранять целиком при следующем tool turn. |
| Responses | Reasoning приходит отдельными items/events; output_tokens_details.reasoning_tokens входит в общий output. |
{
"model": "glm-5.3",
"messages": [{"role": "user", "content": "Reply briefly"}],
"max_tokens": 4096,
"thinking": {"type": "disabled"}
}Reasoning расходует output budget и оплачивается как output. В Responses первые SSE-кадры могут содержать только reasoning, а видимый текст прийти позже.
Размышления Gemini полностью выключить нельзя. Уровень задаётся полем выбранного API.
| API | Поле уровня | Дополнительно |
|---|---|---|
| Chat Completions | reasoning_effort | других полей нет |
| Responses | reasoning.effort | с reasoning.summary: "auto" модель отдаёт краткое изложение размышлений |
| Messages | output_config.effort | поле thinking допускает {"type": "adaptive"} с необязательным display или {"type": "enabled"} без других полей, в том числе без budget_tokens; display: "omitted" вместе с adaptive прячет текст размышлений |
| Модель | Значения уровня | По умолчанию |
|---|---|---|
gemini-4-argon | low, medium, high | high |
gemini-3.8-flash | low, medium, high | medium |
Другое значение уровня получает ошибку 400 с кодом invalid_request (в Chat Completions и Responses — param: "reasoning_effort"); Guard не подменяет его другим. Остальные настройки, которых у модели нет (например, выключение размышлений), тоже получают понятную ошибку, а не подмену.
Уровень размышлений задаётся полем выбранного API. Полного текста размышлений Muse не возвращает; в Responses с reasoning.summary: "auto" Meta может вернуть их краткое изложение (элемент reasoning с полем summary).
| API | Поле уровня |
|---|---|
| Chat Completions | reasoning_effort |
| Responses | reasoning.effort |
| Messages | output_config.effort |
Значения уровня: minimal, low, medium, high, xhigh, max. Значение none не принимается и получает отказ.