OpenAI 節點錯誤:「messages must be a non-empty array, got null」儘管有輸入

描述問題/錯誤/問題

大家好,
我在使用 OpenAI 節點(使用「Message a Model」操作)時遇到問題,希望能得到任何關於如何修復它的見解。

我已設定該節點以發送簡單的文字訊息。如您在附加的螢幕截圖中所見,參數已填寫:

類型:文字
角色:使用者
提示:Hi

但是,當我點擊「Execute step」時,它失敗並顯示此輸出:

Bad request - please check your parameters
messages must be a non-empty array, got null

看起來該節點發送的是 null 承載,而不是我在 UI 中配置的訊息陣列。

其他背景:

我正透過自訂基礎 URL 使用自訂模型名稱 (CSU/PRO/GLM-5.1)。

有人以前遇過此 UI 故障或承載格式問題嗎?是否有解決方法來確保節點正確地將訊息打包到 JSON 陣列中?

提前感謝您的幫助!

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

請分享您的工作流程

(在畫布上選擇節點,並使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 複製並貼上工作流程。)

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

您的 n8n 設定的相關資訊

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

請參考我下面的回應,我進行了更多研究,找到了更好的解決方案!

@CuO 我想我現在真的可以釘住它了。我進一步研究了一下,n8ns v2 message a model 針對的是 OpenAI 的較新 Responses API,它在輸入欄位中發送提示,而不是在 messages 陣列中。你的自訂閘道幾乎肯定只支援較舊的 chat/completions API,所以它接收的主體沒有 messages 金鑰,並完全按原樣返回,得到 null,所以這其實不是你的配置問題。有兩種解決方法:如果你可以選擇節點版本,就使用舊版 OpenAI 節點(1.4,它仍然會呼叫 chat/completions),或者使用 HTTP 請求節點直接連接到你的閘道的 /chat/completions,並使用 messages 陣列。和這個已解決的討論串有相同的 v2 responses-api 根本原因

@CuO

這是一個已知的行為,在使用自訂基礎 URL自訂模型名稱(例如 CSU/PRO/GLM-5.1)時偶爾會出現,因為節點的內部驗證邏輯可能無法識別自訂模型,導致它發送不完整或空值的有效載荷:

1)在最近的 n8n 版本中,基礎 URL 已從節點參數移至憑証設定。

  • 前往憑証 →→ 選擇你的 OpenAI 憑証。
  • 確保基礎 URL 已在此輸入(例如 https://your-proxy-url.com/v1)。
  • 關鍵: 確保包括 /v1 後綴,如果你的提供者要求的話,因為某些閘道在沒有它的情況下無法正確路由請求。

2)模型名稱 CSU/PRO/GLM-5.1 包含斜杠。OpenAI 節點的某些版本會嘗試針對已知清單或 /models 端點驗證模型名稱。如果驗證失敗或自訂名稱觸發解析錯誤,節點可能會「放棄」構建有效載荷。

  • 嘗試在運算式中包裝模型名稱(點選齒輪圖示 →→ 運算式​),並將其作為字串輸入:{{ "CSU/PRO/GLM-5.1" }}。這有時會繞過 UI 層級的驗證故障。

3)如果原生 OpenAI 節點仍繼續發送空值有效載荷,最可靠的修復方法是使用 HTTP 要求節點​。這會繞過 n8n 的內部 OpenAI 包裝器,並允許你發送 API 預期的確切 JSON。

按如下方式設定 HTTP 要求節點:

  • 方法: POST
  • URL: [你的自訂基礎 URL]/chat/completions
  • 驗證: 標頭驗證(名稱:Authorization、值:Bearer YOUR_API_KEY
  • 發送本文: 開啟
  • 本文內容類型: JSON
  • 指定本文: 使用固定欄位(或使用 JSON 進行完全控制)

4)如果使用「JSON」模式,請使用此確切有效載荷:

{
  "model": "CSU/PRO/GLM-5.1",
  "messages": [
    {
      "role": "user",
      "content": "Hi"
    }
  ],
  "temperature": 0.7
}