描述問題/錯誤/問題
大家好,
我在使用 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
}