跳转到主要内容
推理模型(reasoning models)在回答前会先「思考」。通过 兼容模式 调用时,它们的输出比普通模型多了一些细节。本页讲清三件事:思考内容怎么拿、多轮怎么传、结构化输出怎么稳
本页聚焦 /v1/chat/completions 兼容模式。Claude 原生格式的思考块(/v1/messagesthinking)见 Claude Effort 思考指南;Gemini 原生的 thinking_levelthought_signatureGemini 原生调用

推理模型输出总览

兼容模式下,推理模型在「是否输出思考文本」上分三类:
无论哪一类,正文永远在 content。只要你只读 content,所有推理模型都能像普通模型一样接入;想额外展示思考过程,再去读 reasoning_content

思考型:reasoning_content

会输出思考文本的模型,把思考链放在与 content 平行的 reasoning_content 字段。 非流式——message 同时含两者:
流式——先推送一连串 delta.reasoning_content,思考完才开始推送 delta.content。务必把两者分流渲染(思考折叠、正文上屏),否则界面会先刷一大段思考:
流式里 reasoning 与 content 的「互斥」写法三家不同,解析时三种都要容忍:
  • grok-4.3:思考阶段只有 reasoning_content 键,正文阶段只有 content 键(另一个键直接不出现)。
  • qwen3.6-plus:两个键都在,非当前的为 null
  • glm-5.1:思考阶段 content""(空串)+ reasoning_content 有值。
统一做法:用「真值判断」取值(if reasoning: / if content:),自动跳过缺失、null"" 三种空态。
推理 token 可能远超正文。实测一个「1+1」级问题,grok-4.3 的 reasoning_tokens 可达数百,而正文只有几个 token。思考链按输出 token 计费,对延迟和成本敏感的场景请评估是否需要开启 / 展示思考

思考签名与多轮对话

「思考签名」(thought signature)是 Gemini 原生格式的概念:原生多模态 / 函数调用里,模型会返回加密的 thought_signature,多轮时需原样回传以保持推理连续性(详见 Gemini 原生调用Gemini 函数调用)。 /v1/chat/completions 兼容模式下,推理模型是无状态的:
  • 多轮对话只需把上一轮 assistant 的 content 放进 messages 历史即可;
  • 无需回传 reasoning_content,响应里也不出现任何 signature 字段
  • 实测 gemini-3.1-flash-lite、grok-4.3 在仅回传 content 的情况下,多轮上下文记忆均正常。
需要跨轮保留 Gemini 的思考签名、或用 Claude 的原生思考块做多轮,请改用对应的原生格式端点,而非兼容模式。

结构化输出

通过 response_format 让模型只吐 JSON。两种类型:

各模型实测支持度

json_schema 各家支持参差,这是结构化输出最大的坑

跨模型稳定拿 JSON 的建议

不要假设 json_schema 在所有模型上都生效。要跨模型稳定,推荐组合拳:
  1. 优先用 json_object,兼容性比 json_schema 好;
  2. prompt 里明确写「只返回 JSON」并出现 “json” 字样(qwen 强制要求,其它模型也更稳);
  3. 解析前做容错:剥离 ```json 代码块围栏、剥离 <think>…</think> 前缀,再 json.loads,失败则降级处理。

相关链接