Open AI:不當請求 - 請檢查您的參數 找不到函數呼叫的工具輸出

嘿各位,我遇到了 OpenAI 的「Bad request - please check your parameters」問題。一切都運作正常,直到昨天我開始在模型之間切換。現在,無論我使用哪個模型,我都會得到相同的錯誤。


n8n 版本:

2.21.7 (Cloud)

更新:我連接了 OpenRouter Chat,並使用了 Gemini、minimax、deepseek 和 glm,代理可以正常工作。我試著透過 OpenRouter 使用 OpenAI 模型,但同樣的問題仍然存在。不過,Sub-agents 與 OpenAI Chat 運作良好。

歡迎 @Ali4 加入我們的社群!我是 Jay,我是一位 n8n 認證建立者。

螢幕截圖顯示「Use Responses API」在 OpenAI Chat Model 節點中已啟用 - 這就是問題所在。Responses API 使用不同的工具呼叫格式,當附加工具涉及時,與 n8n 的 AI Agent 節點不完全相容。關閉該切換並改回標準的 Chat Completions API - 「No tool output found for function call」錯誤應該會立即消失。Responses API 切換主要在您需要串流或特定 Responses API 專用功能時才有用,但對於帶有工具的代理工作流程,它會導致這種失敗。

我收到了這個錯誤:Bad request - please check your parameters
An assistant message with ‘tool_calls’ must be followed by tool messages responding to each ‘tool_call_id’. The following tool_call_ids did not have response messages: call_CPQTMJQP1aC9K7szYjBk97kl

@Ali4

這個錯誤來自 OpenAI 的 tool calling 規則,當 assistant 生成 tool_calls 時,每個 id 都需要收到對應的工具響應。在 n8n 中,這指向連接到 AI Agent 的某個工具/子代理(例如 Call Mortgage Agent 或 Call Expense Agent)沒有在某些路徑上返回有效輸出。我會建議逐個斷開工具連接進行測試,並確保每個子代理在任何情況下都能返回有效輸出,包括錯誤或沒有結果的情況。

Function calling | OpenAI API

1 個讚

@Ali4 基於 @tamy.santos 的想法——停用 Responses API 後出現的「tool_call_ids did not have response messages」錯誤,代表至少有一個連接的子代理在父代理呼叫它時回傳空值或未定義。OpenAI 的工具協定要求每個 tool_call_id 都必須獲得工具回應,即使在無結果的路徑上也是如此。修正方式是讓每個子代理始終輸出字串,絕不輸出空陣列。

在每個子代理的最後一個節點(回傳到父代理之前)放入這個代碼節點:

現在即使子代理沒有任何東西要回傳(篩選器拒絕了所有項目、API 回傳空值等),父代理仍會收到一個 output 欄位,tool_call_id 也就得到滿足。找出哪個子代理出問題的最簡單方法是:一次從主代理斷開一個,然後執行——當錯誤消失時,那就是缺少輸出的那個。

1 個讚

感謝你提供這些細節。但奇怪的是,除了 OpenAI 以外,我在任何其他模型上都沒有遇到過這個問題。所以現在我沒問題了

1 個讚

@Ali4 很高興能幫上忙!歡迎標記任何人的貼文作為解決方案,祝你有美好的一天!如果你想要幫助我們修正 OpenAI 的問題,請告訴我們!