返回 DeepSeek-Reasonix
REASONING_PROVIDERS.zh-CN.md
根目录 / docs / REASONING_PROVIDERS.zh-CN.md
1 # 按提供商划分的推理控制
2
3 <a href="./GUIDE.zh-CN.md">使用指南</a>
4 &nbsp;·&nbsp;
5 <a href="./REASONING_PROVIDERS.md">English</a>
6
7 Reasonix 只暴露一个 `/effort` 开关(以及 provider 级的 `effort` / `thinking`
8 配置字段),但 OpenAI-compatible 后端对*如何*在线上请求思维链(chain-of-thought)
9 存在分歧。`openai` provider 会按后端调整请求形态;下表是参考依据,说明每个已知
10 后端使用哪种协议、会采纳或忽略哪些参数。
11
12 ## 自动识别的后端
13
14 这些后端按 Base URL 识别(见 `internal/provider/openai/host.go`),并自动获得
15 定制的请求形态——无需额外配置。
16
17 | Provider | Base URL | 推理控制 | `/effort` 档位 | 备注 |
18 |-------------------|-------------------------------------------------------------|----------------------------------------------|------------------------------------------|-------|
19 | DeepSeek V4 Flash | `api.deepseek.com`、`*.deepseek.com` | `thinking.type` + `reasoning_effort`(深度) | `auto`、`disabled`、`low`、`high`、`max` | 默认开启思考;`disabled` 通过 `thinking.type=disabled` 关闭。兼容性输入 `medium` 归一化为 `high`,`xhigh` 归一化为 `high`。 |
20 | DeepSeek V4 Pro | `api.deepseek.com`、`*.deepseek.com` | `thinking.type` + `reasoning_effort`(深度) | `auto`、`disabled`、`high`、`max` | 默认开启思考;`disabled` 通过 `thinking.type=disabled` 关闭。兼容性输入 `low`/`medium` 归一化为 `high`,`xhigh` 归一化为 `max`。 |
21 | MiniMax M3 | `api.minimaxi.com`、`*.minimaxi.com` | `thinking.type`(`adaptive`\|`disabled`) | `auto`、`adaptive`、`disabled` | 无深度档位;`reasoning_effort` 会被省略。 |
22 | Zhipu GLM | `open.bigmodel.cn` / `*.bigmodel.cn`、`api.z.ai` / `*.z.ai` | `thinking.type`(`enabled`\|`disabled`) | `auto`、`enabled`、`disabled` | **端点会静默忽略 `reasoning_effort`**,因此推理完全由 `thinking.type` 驱动。 |
23
24 ## 显式的逐模型档位
25
26 | Provider/模型 | Base URL | 推理控制 | `/effort` 档位 | 备注 |
27 |----------------------------|--------------------------------------------|-----------------------------------------------|-------------------------------|-------|
28 | Kimi CN/Global `kimi-k3` | `api.moonshot.cn/v1`、`api.moonshot.ai/v1` | `reasoning_effort` | `low`、`high`、`max` | 始终思考;默认 `max`。Reasonix 会回放完整的 assistant 消息、使用 `max_completion_tokens`,并省略 K3 固定的采样字段。 |
29 | OpenCode Go `kimi-k3` | `opencode.ai/zen/go/v1` | `reasoning_effort` | `high`、`max` | 中转站专属档位;默认 `max`,并保留中转站标准的 OpenAI-compatible 请求形态。 |
30 | Token Rhythm DeepSeek V4 | `tokenrhythm.studio/v1` | DeepSeek `thinking.type` + `reasoning_effort` | 模型专属的 DeepSeek 档位 | 通过预设的模型覆盖选择,与网关主机无关。 |
31 | Token Rhythm GLM 5/5.1/5.2 | `tokenrhythm.studio/v1` | GLM `thinking.type`(`enabled`\|`disabled`) | `auto`、`enabled`、`disabled` | 通过预设的模型覆盖选择;`reasoning_effort` 会被省略。 |
32
33 在 Token Rhythm 端点上,精确的 GLM 模型 ID(`glm-5`、`glm-5.1` 和 `glm-5.2`)
34 会自动选择官方的 GLM 请求形态,即使现有配置没有 `reasoning_protocol` 字段也
35 如此。端点检查让不相关的混合模型网关保持向后兼容。对于别名和自定义模型 ID,
36 仍可在一个 `model_overrides` 条目中显式设置 `reasoning_protocol = "glm"`。
37 GLM 思考开启时,Reasonix 会按 GLM 交错与保留思考的要求,在后续历史中原样保留
38 并返回原始 `reasoning_content`。
39
40 ## DeepSeek Anthropic-compatible 端点
41
42 可选的 `deepseek-anthropic` 预设指向 `https://api.deepseek.com/anthropic`。
43 Reasonix 默认仍使用官方 Chat Completions provider,但它为兼容性测试和面向
44 Anthropic 的客户端提供了一条原生 Messages API 路径。Reasonix 会发送
45 `thinking.type=enabled|disabled` 与 `output_config.effort`,回放历史工具调用轮次
46 中未签名的 DeepSeek 思考块,省略不支持的图片,并依赖 DeepSeek 的自动前缀缓存,
47 而不是被忽略的 `cache_control` 标记。
48
49 该预设暴露当前模型专属的 effort 档位:Flash 支持 `auto`、`disabled`、`low`、
50 `high` 和 `max`,而 Pro 暴露 `auto`、`disabled`、`high` 和 `max`,因为其当前的
51 `low` 输入会映射到 `high`。Anthropic-compatible 端点在线上接受 `low|high|max`。
52 遗留的 `medium` 归一化为 `high`;遗留的 `xhigh` 对 Flash 归一化为 `high`、对
53 Pro 归一化为 `max`。Claude Opus 别名使用 Pro 映射,而 Sonnet/Haiku 以及不支持
54 的模型名遵循 DeepSeek 文档记载的 Flash 回退。
55
56 ## 其他所有后端(标准 `reasoning_effort`)
57
58 任何其他 OpenAI-compatible 后端都会回退到标准的 `reasoning_effort` 档位
59 (`low`\|`medium`\|`high`)。解析出的 provider/模型条目可以显式声明不同的支持
60 档位;在这种情况下,Reasonix 会保留这些声明的值,而不是套用通用上限。精选的
61 逐模型能力元数据可以像上面展示的那样选用其他档位。
62
63 以下主流提供商经调研无需**特殊处理**,因为它们已经遵循标准约定:
64
65 Qwen (`dashscope.aliyuncs.com`)、Yi (`api.01.ai`)、SiliconFlow
66 (`api.siliconflow.cn`)、Stepfun (`api.stepfun.com`)、Groq (`api.groq.com`)、
67 Together (`api.together.xyz`)、OpenRouter (`openrouter.ai`)、Perplexity
68 (`api.perplexity.ai`)、xAI (`api.x.ai`)。
69
70 对于使用二值 `thinking.type` 开关但**未被**自动识别的后端,在 provider 条目上
71 设置与厂商无关的 `thinking` 字段:
72
73 ```toml
74 [[providers]]
75 name = "my-glm-proxy"
76 kind = "openai"
77 base_url = "https://my-gateway.example.com/v1"
78 model = "glm-4.6"
79 api_key_env = "MY_API_KEY"
80 thinking = "disabled" # enabled | disabled — 发送 thinking.type
81 ```
82
83 ## 故障排查
84
85 如果模型在你要求它不要思考时仍在思考(或反过来):
86
87 1. 对照上表——后端可能**忽略**你设置的参数(例如 Zhipu 会忽略
88 `reasoning_effort`;改用 `thinking`/`/effort`)。
89 2. 如果后端未被自动识别,就显式设置 `thinking` 字段。
90 3. 如果后端完全使用非 OpenAI 协议(例如百度文心),`openai` kind 无法驱动它
91 的思考模式——那需要专门的 provider kind。
92
93 区分“provider 忽略字段”与 Reasonix 自身的 bug 从这里入手:Reasonix 发出的
94 请求形态按表格固定,因此表格与实际行为不一致时,问题在提供商而不是 Reasonix。
95
95 lines MARKDOWN