Azure OpenAI Chat 節點錯誤

描述問題/錯誤/問題

Azure OpenAI 聊天節點在我們的聊天代理工作流程中無法運作。即使我們未對這些流程的設定或內容進行任何變更,我們仍然收到錯誤的請求錯誤。我們認為 OpenAI API 端可能發生了變化,但節點尚未更新以反映該變化。

錯誤訊息是什麼(如果有的話)?

錯誤的請求 - 請檢查您的參數

缺少必需的參數:‘tools[0].type’。

請分享您的工作流程

分享最後一個節點返回的輸出

錯誤的請求 - 請檢查您的參數
缺少必需的參數:‘tools[0].type’。

關於您的 n8n 設定的資訊

  • n8n 版本: 2.29.10
  • 資料庫(預設:SQLite): SQLite
  • n8n EXECUTIONS_PROCESS 設定(預設:own、main): own
  • 透過以下方式執行 n8n(Docker、npm、n8n cloud、桌面應用程式): Docker
  • 作業系統: RHEL

你可以使用 OpenAI 聊天模型嗎?
只需更改基礎 URL。它能運作嗎?

嘿,感謝你的快速回覆!

我們的 Azure OpenAI 認證的基礎 URL 是「https://swedencentral.api.cognitive.microsoft.com/」

你認為它能在 OpenAI node 上運作嗎?我們應該如何修改基礎 URL?

要使 OpenAI 節點與 Azure 搭配運作,你需要設置一個代理伺服器(例如 LiteLLM),將 OpenAI 格式的請求轉譯為 Azure 格式的請求。

這個錯誤「Missing required parameter: tools[0].type」幾乎總是 Azure 的 api-version 問題,而不是憑證本身。最近一些地區(包括 Sweden Central)開始嚴格驗證 tools 陣列,要求每個 tool 都是 {“type”:“function”,“function”:{…}} 的格式。如果你的 api-version 指向「latest」/preview,端點會期望新格式,但 node 送出的 payload 不符合,你就會看到這個錯誤,即使你沒有改變流程中的任何東西。把 api-version 固定在穩定的 GA 版本,例如 2024-10-21(或 2024-08-01-preview),直接在部署的憑證/base URL 上設定,而不要留在最新版本。這樣可以讓 node 送出的 payload 與端點接受的內容對齊。在做任何改動之前,有兩個快速檢查可以確認診斷:1) 暫時從 AI Agent 中移除 tool 的子節點,只執行純 chat;如果有效,就確認了是 tools 的序列化與 api-version 相關,而不是憑證問題。2) 確認部署使用的是支援最近版本 tool calling 的模型(gpt-4o / gpt-4-turbo);gpt-35-turbo 的舊部署會拒絕 tools 格式。LiteLLM 這類代理可以解決,但那是變通方案,這個情況下不需要這麼做。

你好,非常感謝你的詳細回覆!在更改 api-version 並嘗試了你提供的穩定 GA 範例後,我們遇到了另一個錯誤,但這次是來自 AI Agent 節點,而不是 Azure OpenAI Chat 節點。以下是錯誤追蹤:

NodeOperationError: Cannot read properties of undefined (reading ‘toLowerCase’) at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts:418:13 at Array.forEach () at ExecuteContext.toolsAgentExecute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts:406:17) at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/V2/AgentV2.node.ts:142:10) at WorkflowExecute.executeNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1080:8) at WorkflowExecute.runNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1380:11) at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1842:27 at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:2534:11

你認為這可能與聊天節點中的 api-version 變更有關嗎?因為在偵錯編輯器中,我在左下方的聊天視窗中看到了這則訊息:

AI Agent(ToolsAgentV2)中的 toLowerCase 錯誤是與 api-version 分開的問題 — 通常在工具呼叫傳回 undefinednull 而非字串時觸發,代理程式會嘗試在該字串上呼叫 .toLowerCase() 來正規化工具名稱,然後才進行路由。有兩件事要檢查:

  1. 找出哪個工具導致此問題 — 從 AI Agent 逐一移除工具,直到代理程式順利執行為止。導致問題的工具會傳回格式不正確的回應。
  2. 確保每個連接的工具節點始終傳回 { json: { output: "some string" } } — AI Agent 預期工具結果在 output 欄位中以字串形式出現。如果您的工具節點未傳回任何內容或傳回非預期的結構,您就會遇到此錯誤。

聊天視窗中的「Connection rejected」表示 Azure OpenAI 連線本身在上游仍然失敗,因此先確保其穩定運作(如 nocoderobots 所述的修正 api-version)將有助於隔離工具錯誤是否為次要問題。

您好,

非常感謝您的詳細回覆!這其實是由連接到 AI Agent 的 Chat 節點造成的。所以當我們移除它後,就恢復正常了。我會研究如何修復它並將其重新連接到 AI Agent。

感謝大家的時間和支持!

你好 @nguyenthieutoan

我們一直在嘗試修復人類在迴圈聊天節點中的問題,但似乎節點之間的通訊存在問題。

我們仍然收到錯誤

不正確的請求 - 請檢查您的參數
400 缺少必填參數:‘tools[0].type’。

我們嘗試從頭開始新增節點(以查看是否存在節點版本相容性問題),並從頭開始重新進行所有配置。我不知道問題可能出在哪裡。你有什麼想法可以修復這個問題嗎?

從頭重建節點無法解決這個問題 - 問題在於 Azure 認證,而不是節點配置。檢查您的 Azure OpenAI 認證中設置的 API 版本。如果它指向較新的 API 版本(例如 2025-xx-xx 或任何預覽版),Azure 現在嚴格要求在每個工具定義中都包含 type: "function",但 n8n 節點目前還不會發送此項。

修復方法:打開您的 Azure OpenAI 認證,將 API 版本固定為 2024-10-21(穩定 GA)。該版本接受 n8n 目前發送的工具格式。如果您的認證使用的是在 URL 中內嵌版本的基礎 URL,請直接更新該 URL。

嘿!你的直覺100%正確——OpenAI API 端確實有所改變,而且正是造成這個問題的原因。

OpenAI 最近更新了他們對函數和工具呼叫的 API 要求。他們現在明確要求在裝載中的每個工具定義內傳遞一個 type 欄位(通常設定為 "function")。因為你的 AI Agent 使用舊版、已棄用的裝載結構將工具傳遞給 Azure OpenAI Chat 節點,所以 Azure API 拒絕了它,並出現 Missing required parameter: 'tools[0].type' 錯誤。

解決方案:
我看到你目前執行的是 n8n 版本 2.29.10。n8n 團隊已經意識到這個 OpenAI API 變化,並發布了專門解決此問題的修補程式。

你只需要將你的 n8n Docker 映像更新到版本 2.31.0 或更高版本

更新後,Azure OpenAI 節點會自動將 tools 陣列結構化以符合新要求,你的聊天代理會立即恢復上線。無需更改工作流程!


附註: 我實際上透過 n8n Mastery / Sensei(我為 n8n 社群建立的免費 AI 副駕駛)執行了你的確切論壇文章,它立即識別出了 OpenAI 裝載變化和確切的 n8n 版本不匹配!

我在下方附加了其完整分析的螢幕截圖。如果你想要一個助手來立即調試 AI Agent 錯誤或 API 版本不匹配,就在你的畫布旁邊,你可以在這裡查看:https://n8n-sensei-app-nu.vercel.app/

希望更新順利進行,讓你的工作流程重新執行!

是的,謝謝!這個改變似乎暫時解決了我們的問題。