Skip to main content
一句話:GPT-5.4 起的模型,在 /v1/chat/completions同時傳 tools 和顯式的 reasoning_effortnone 除外)可能被上游直接拒掉,報 400 Function tools with reasoning_effort are not supported ...兩條出路:把帶工具的請求改走 /v1/responses(推理和工具都保留,推薦),或者顯式設 reasoning_effort="none"(保住端點,但放棄推理)。不帶 tools 的請求完全不受影響。

先確認你是不是撞上了這條

有三種表現,第二種最容易誤判。

表現一:明確的 400

響應裡 paramreasoning_effort。這是上游 OpenAI 的官方限制,不是 API易 閘道的問題——同一段請求直連 OpenAI 官方也是這個結果。

表現二:時靈時不靈

同一個模型可能掛著多條上游鏈路,這條限制並不是每條鏈路都會攔。我們 2026-09-02 在預設分組實測(同一把 KEY、同一時段,每個組合各發 6 次): 而同一天早些時候,有客戶在 gpt-5.6-sol 上實實在在收到了這條 400。
「我這次沒報錯」不能當作安全依據。 同一個模型、同一段程式碼,換個時間點、換個分組就可能開始 400。要麼改走 Responses,要麼顯式 reasoning_effort="none"——這兩條在所有鏈路上都是穩定的。

表現三:沒報錯,但工具壓根沒被呼叫

如果模型該調工具卻回了一句閒聊(finish_reasonstoptool_calls 為空),先別急著調提示詞:把 reasoning_effort 顯式設成 none 重發一次,工具能正常呼叫,就說明問題出在這個引數組合上,而不是提示詞寫得不好。

這條限制的範圍

觸發條件是顯式傳了非 none 的檔位low / medium / high / xhigh 四個檔位實測都會觸發。
不傳 reasoning_effort 不會觸發。gpt-5.6-luna 這條穩定復現 400 的鏈路上,四個檔位全部 400,而不傳該引數時 6/6 正常返回 tool_calls。所以最小改動的應急方案其實有兩個:顯式 none,或者乾脆把這個引數刪掉。

兩條出路怎麼選

帶工具的複雜任務,推理關掉之後模型的表現會明顯變差(少了「先想清楚該調哪個工具、按什麼順序調」這一步),所以 none 更適合當過渡手段。

不只是為了繞開報錯

即使你沒撞上這條限制,Responses 本身也是 OpenAI 給新專案的推薦端點。官方給出的差異是:同一個推理模型走 Responses 的 SWE-bench 成績更高、快取利用率比 Chat Completions 高一大截、web_search / code_interpreter 等內建工具只在這裡提供。細節和數字見 原生呼叫 對賬單最直接的是快取那一條:多輪 Agent 是快取命中的最大受益者,而多輪 Agent 恰恰也是最容易撞上本頁這條限制的場景。快取怎麼算、怎麼看命中,見 快取計費

你屬於哪一類

程式碼怎麼改

完整的欄位對映表見 原生呼叫。這裡只講工具呼叫相關的四處差異,因為這正是本頁場景要動的部分:
兩套 tools 格式不能混用。把 Chat Completions 的巢狀 function: {...} 定義發給 /v1/responses(或反過來)是 SDK 報「引數無效」最常見的原因。更多細節見 FC函式呼叫
同一個「查天氣」工具迴圈,改前改後完整對照:
兩段程式碼都在 API易 預設分組實測跑通:改前那段穩定復現 400,改後那段正常走完「呼叫 → 回傳 → 最終回答」全迴圈。
history += resp.output 這一步別省。Responses 的 output 裡除了 function_call,還可能有 reasoning item —— 把它原樣帶回下一輪,模型才能接著上一輪的思路繼續,這也正是 Responses 在多步工具任務上更強的原因。

遷移時最容易踩的坑

output 是一個 item 陣列,裡面可能同時有 reasoningmessagefunction_call 三類,順序和數量都不固定。取文本用 resp.output_text,取工具呼叫要遍歷篩 type == "function_call",不要寫死下標。
max_tokens(或 max_completion_tokens)改成 max_output_tokensresponse_format 改成 text.format;系統提示詞可以從 messages 裡拿出來放到頂層 instructions。另外 gpt-5 系列推理模型不支援 temperature / top_p,兩個端點都一樣,傳了會報錯,刪掉改用 reasoning.effort 控制。
usage.prompt_tokensusage.input_tokenscompletion_tokensoutput_tokens,快取命中在 usage.input_tokens_details.cached_tokens。做用量統計的程式碼要一起改,否則會靜默統計成 0。
最穩的做法是自己維護 input 陣列,把每輪的 output 原樣接回去——這條在任何分組、任何模型上都成立,也是本頁示例的寫法。previous_response_id 鏈式在 2026-09-02 的預設分組實測可用(gpt-5.6-sol / terra / luna / gpt-5.4 均能記住上一輪,且 store 預設為 true;顯式傳 store: false 後再鏈式會正確報「找不到上一條」)。但 GET /v1/responses/{id} 回取歷史仍不可用。上線前請在你自己的分組裡驗一次,別把它當作預設保證。相關背景見 多輪對話指南
Chat Completions 流式是一串 delta 增量,Responses 是帶型別的事件流(response.output_text.deltaresponse.function_call_arguments.delta 等)。流式解析邏輯要重寫,不能沿用。寫法見 原生呼叫

遷移後怎麼驗證

改完別隻看 HTTP 200,按這四條過一遍:
1

確認 output 裡真的有 function_call

列印 [i.type for i in resp.output],應該能看到 function_call(推理檔位高時前面還會有 reasoning)。只有 message 說明工具沒被呼叫。
2

確認 usage 欄位讀到了值

檢查 usage.input_tokens / output_tokens 不為 0,output_tokens_details.reasoning_tokens 能反映推理檔位的變化。
3

確認快取開始命中

多輪跑幾次,看 usage.input_tokens_details.cached_tokens 是否大於 0。這是 Responses 相比相容模式最直接的賬單收益。
4

把原來會 400 的那個請求重跑一遍

同樣的 tools + reasoning_effort 組合,走新端點應該穩定通過。留一條迴歸用例,之後換模型時能立刻發現問題。

什麼時候可以不遷

不必一刀切。以下場景留在相容模式完全合理:
  • 根本不用工具呼叫 —— 這條限制與你無關,reasoning_effort 隨便傳
  • 需要用同一套程式碼調多家模型 —— Claude、Gemini 等只有 /v1/chat/completions 這條通路,為 OpenAI 單獨分叉未必划算
  • 框架 / 客戶端鎖死了端點 —— 先用 reasoning_effort="none" 頂住,等框架跟進
  • gpt-5.2 及更早的模型 —— 不在影響範圍內
相容模式的完整能力邊界見 相容模式呼叫

常見問題

模型不再做顯式推理,直接輸出。單步、工具選擇明確的任務影響不大;多步編排、需要「先想清楚呼叫順序」的 Agent 任務會明顯變差。它適合當過渡,不適合當終態。
可以,而且是常見的漸進式做法:普通對話繼續走 /v1/chat/completions,只把帶 tools 的那條鏈路改成 /v1/responses。兩個端點用同一把 KEY、同一個 base_url,價格也完全一致。
不變。同一個模型在兩個端點上的輸入 / 輸出單價一樣,計費口徑也一樣。價格見 模型與價格總覽。差別只在快取命中率——Responses 通常更高,實際賬單反而更省。
不受影響。這是 OpenAI 對自家 GPT-5.4+ 模型的限制。Claude 走 /v1/messages 或相容模式、Gemini 走原生或相容模式,工具呼叫和思考都可以同時開。
gpt-5.4-pro / gpt-5.5-pro 這類模型在實務上只有 /v1/responses 可用(且需要 SVIP 分組)。它們執行時間長,配合 background 模式使用,相容模式承載不了這個互動形態。見 原生呼叫
不會。被官方計劃關停的是 Assistants API,不是 Chat Completions。兩個端點都會長期支援,只是新功能優先落在 Responses。

相關頁面

原生呼叫

Responses 端點的完整用法:引數、響應結構、內建工具、客戶端支援清單

相容模式呼叫

Chat Completions 的用法與能力邊界,各語言 SDK 配置

FC函式呼叫

兩個端點各自的工具呼叫完整示例與流式拼裝