Skip to main content
推理模型(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,失敗則降級處理。

相關連結