推理模型与 Thinking

区分推理控制参数、Thinking 内容和最终回答,理解不同协议的转换差异。

查看 Markdown

能力与输出的区别

推理模型可能使用额外计算处理复杂任务,也可能返回推理用量或可见的 Thinking 内容。这些是不同能力:支持推理不代表一定返回可见思考文本,返回推理字段也不代表所有推理控制参数都有效。

选型时核对 模型库 的能力信息,再确认具体通道。本文使用 GFW 模型 ID deepseek-v4-pro 展示兼容参数,参数能否生效由模型和上游决定;本文不提供实际速度、准确率或成本对比。

端点与参数转换

协议参数当前网关行为
Chat Completionsreasoning_effort 等扩展参数请求 JSON 转发;取值支持由模型及通道决定
Responsesreasoning、reasoning_effort转发至内部 Chat 请求,不构成原生 Responses 推理项支持承诺
Anthropic Messagesthinking: {"type":"enabled","budget_tokens":...}转发 thinking,同时设置内部 reasoning_effort=high
Anthropic Messagesmax_tokens请求必填且大于 0;thinking.budget_tokens 不得超过它,建议严格小于它以给最终回答留出预算;两者都受模型限制
任一协议输出长度参数受模型限制;推理可能占用预算,不能保证全部用于最终文本

Anthropic 转换器只处理 thinking.type=enabled 的兼容路径。不要据此假定 adaptive、禁用参数或厂商专属开关都被实现。Responses 对部分 GLM 模型在桥接时主动设置关闭 Thinking,不能用这一端点承诺它们返回完整思考内容。

完整 Thinking 示例

以下使用 POST /v1/messages。请先确认该模型与通道接受 Thinking 请求;若不支持,应移除参数或选择确认支持的模型。Python 依赖 anthropic 包,密钥来自 GFW_API_KEY。

curl --fail-with-body --silent --show-error \
  --max-time 120 \
  https://api.gfw.net/v1/messages \
  -H "x-api-key: ${GFW_API_KEY:?请先设置 GFW_API_KEY}" \
  -H 'anthropic-version: 2023-06-01' \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "deepseek-v4-pro",
    "max_tokens": 2048,
    "thinking": {"type": "enabled", "budget_tokens": 1024},
    "messages": [{"role": "user", "content": "比较重试与幂等设计的作用,给出一个订单创建的例子。"}],
    "stream": false
  }'

响应字段与转换限制

下面是 Anthropic 桥接可能输出的内容块结构示意,不是实际推理文本:

{
  "content": [
    {"type": "thinking", "thinking": "示意:比较两种机制的作用范围。"},
    {"type": "text", "text": "重试处理临时失败,幂等防止重复操作。"}
  ],
  "stop_reason": "end_turn"
}
字段说明
Chat message.reasoning_content部分上游的扩展推理字段;不是所有模型的统一格式
Chat message.content最终文本字段;应用应与推理字段分开处理
Chat usage.completion_tokens_details.reasoning_tokens若上游提供,可用于观察推理用量;缺失或为 0 不应解释为确定未发生推理
Messages content[].thinking当前桥接从 reasoning_content 转换而来,不保证原生签名或全部语义
Responses output当前转换只构造文本消息,不提供完整推理项

当前 Messages 非流式转换在上游只有 reasoning_content、没有 content 时,会把推理文本作为 text 返回。因此不能仅凭内容块类型保证返回的是独立最终回答。对结果敏感的应用应选择确认输出行为的模型和协议,并校验是否完成任务。

预算、流式与结果处理

输出预算要同时考虑模型的推理和最终回复规则。请求中的 thinking.budget_tokens 应不超过 max_tokens,并建议严格小于 max_tokens,为最终回答留出空间;两者都受模型 limits 约束。部分兼容转换为处理差异可能自动扩大内部 max_tokens,但这只是适配回退,不能依赖它控制输出长度或费用。增大预算可能增加等待时间与用量,并不保证提高答案质量。先从适合业务的上限开始,用实际调用记录评估,不要假定所有模型都接受相同的 reasoning_effort 枚举。

Messages 流式路径会把 reasoning_content 转成 thinking_delta,普通文本转成 text_delta。界面可以分别展示,但业务处理应保持分离。Responses 流式桥接主要读取 delta.content,不适合要求保留推理事件的应用。

Token 用量是计量字段,不是货币金额;推理费用是否已包含在输出用量及价格规则中,应以具体模型和 计费与充值 为准,不要重复加总推理明细。账单核对使用 用量与调用日志。

注意事项与相关文档

Thinking 内容属于模型输出,可能不完整或不正确,不应直接作为系统操作依据。保存日志时遵循应用的数据最小化规则,避免把推理文本当作必须长期存储的调试信息。

相关文档:Anthropic 兼容 API、Responses API、流式输出、结构化输出、错误码与重试。

本页目录