thinking 档位统一(designs/provider-reliability.md §7;Keelson Providers/ThinkingKeys.cs、
OpenAICompatibleChatClient.ApplyThinkingCall、AnthropicChatClient.ApplyThinkingCall)。
上层只说一句「档位 / 开关」,这里按各家风格生成 wire:
| config 键 | 含义 |
|---|---|
:thinking-effort | 档位名(字符串 / 关键字),原样上 wire(DeepSeek 的 "max" 也行);有档位即开 |
:thinking-enabled | 只开 / 关,不带档位(effort 在场时被忽略) |
:thinking-style | OpenAI 兼容线的写法::plain / :nested / :top-level / :qwen / :none;缺省按 provider 预设 |
:thinking-budget-tokens | Anthropic 旧式预算(压过档位与「只开」,只有「关」压得过它) |
:thinking-always-on? | Anthropic:关不掉思考的模型,「关」时省略字段 |
不破坏现有透传:config 里显式给了 :thinking(或 OpenAI 的 :reasoning-effort、Responses 的
:reasoning)→ 对应字段不由本 ns 生成,显式值原样发。两个新键都没给 → 什么都不生成。
thinking 档位统一(designs/provider-reliability.md §7;Keelson `Providers/ThinkingKeys.cs`、 `OpenAICompatibleChatClient.ApplyThinkingCall`、`AnthropicChatClient.ApplyThinkingCall`)。 上层只说一句「档位 / 开关」,这里按各家风格生成 wire: | config 键 | 含义 | |---|---| | `:thinking-effort` | 档位名(字符串 / 关键字),**原样上 wire**(DeepSeek 的 "max" 也行);有档位即开 | | `:thinking-enabled` | 只开 / 关,不带档位(effort 在场时被忽略) | | `:thinking-style` | OpenAI 兼容线的写法:`:plain` / `:nested` / `:top-level` / `:qwen` / `:none`;缺省按 provider 预设 | | `:thinking-budget-tokens` | Anthropic 旧式预算(压过档位与「只开」,只有「关」压得过它) | | `:thinking-always-on?` | Anthropic:关不掉思考的模型,「关」时省略字段 | **不破坏现有透传**:config 里显式给了 `:thinking`(或 OpenAI 的 `:reasoning-effort`、Responses 的 `:reasoning`)→ 对应字段不由本 ns 生成,显式值原样发。两个新键都没给 → 什么都不生成。
(anthropic-fields config)Anthropic 请求体里要并进去的思考字段:{:thinking {...}},档位时另有 {:output_config {:effort e}}。
thinking{type:disabled}(:thinking-always-on? 时省略);关压得过预算:thinking-budget-tokens n → thinking{type:enabled, budget_tokens:n}(不带 effort)thinking{type:adaptive, display:summarized} + output_config.effort ethinking{type:adaptive}
显式 :thinking 在场 → 不生成 :thinking(output_config 仍按档位生成)。Anthropic 请求体里要并进去的思考字段:`{:thinking {...}}`,档位时另有 `{:output_config {:effort e}}`。
- 关 → `thinking{type:disabled}`(`:thinking-always-on?` 时省略);关压得过预算
- `:thinking-budget-tokens` n → `thinking{type:enabled, budget_tokens:n}`(不带 effort)
- 档位 e → `thinking{type:adaptive, display:summarized}` + `output_config.effort e`
- 只开 → 裸 `thinking{type:adaptive}`
显式 `:thinking` 在场 → 不生成 `:thinking`(`output_config` 仍按档位生成)。(merge-output-config params fields)把 anthropic-fields 的结果并进 params(output_config 与已有的合并而不是覆盖)。
把 `anthropic-fields` 的结果并进 params(`output_config` 与已有的合并而不是覆盖)。
(openai-fields config stream?)OpenAI 兼容请求体里要并进去的思考字段(map;可能为空)。
stream? 目前没有风格在用(保留参数位以免破坏调用方):qwen 曾按 Keelson / 旧版百炼文档
「非流式必须 false」只在流式时写 true;2026-11-10 LiteGate 真机 qwen3.8-flash / max 非流式
enable_thinking:true 正常返回思考内容、不 400,于是放开——开就是 true,不看流式。
reasoning_effort;nested → thinking{type:enabled, reasoning_effort:e};
top-level → thinking{type:enabled} + 顶层 reasoning_effortthinking{type:enabled|disabled}enable_thinking(开 true / 关 false,流式与否一样;档位不上线);none:不写OpenAI 兼容请求体里要并进去的思考字段(map;可能为空)。
`stream?` 目前没有风格在用(保留参数位以免破坏调用方):qwen 曾按 Keelson / 旧版百炼文档
「非流式必须 false」只在流式时写 true;2026-11-10 LiteGate 真机 qwen3.8-flash / max 非流式
`enable_thinking:true` 正常返回思考内容、不 400,于是放开——开就是 true,不看流式。
- 档位 e:plain → 顶层 `reasoning_effort`;nested → `thinking{type:enabled, reasoning_effort:e}`;
top-level → `thinking{type:enabled}` + 顶层 `reasoning_effort`
- 只开 / 关:各风格一律 `thinking{type:enabled|disabled}`
- qwen:`enable_thinking`(开 true / 关 false,流式与否一样;档位不上线);none:不写(resolve-call config)读两格:→ {:effort "high"} / {:enabled bool} / nil(都没给)。effort 压过 enabled。
读两格:→ `{:effort "high"}` / `{:enabled bool}` / nil(都没给)。effort 压过 enabled。
(responses-fields config)OpenAI Responses API:档位 e → {:reasoning {:effort e}};显式 :reasoning 优先(不生成)。
OpenAI Responses API:档位 e → `{:reasoning {:effort e}}`;显式 `:reasoning` 优先(不生成)。
provider 名 → OpenAI 兼容线的缺省思考写法(Keelson ChatProviders.cs:DeepSeek=nested、GLM=plain)。
provider 名 → OpenAI 兼容线的缺省思考写法(Keelson ChatProviders.cs:DeepSeek=nested、GLM=plain)。
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |