如何從 n8n 連接本地執行的「vllm gpt-oss-20b」?

描述問題/錯誤/問題

我想要用 URL(http://localhost:8000/v1)存取我的本地 llm(vllm gpt-oss-20b)。我該如何連線?

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

請分享你的工作流程

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

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

關於你的 n8n 設定的資訊

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

你好 @doyoungim999

這取決於你如何安裝 n8n。如果它是一個 Docker 容器,那麼你需要將 LLM 移動到另一個 Docker 容器並通過容器名稱訪問它(最簡單的方式),或者允許 Docker 容器訪問主機服務

歡迎 @doyoungim999

vLLM 提供與 OpenAI 相容的 API,因此您可以在 n8n 中使用 OpenAI Chat Model 節點來連接它。在 OpenAI 認證中,將 Base URL 設定為 http://localhost:8000/v1(如果 n8n 在 Docker 中執行,則使用實際的主機 IP - 在 Mac/Windows 上使用 http://host.docker.internal:8000/v1,或在 Linux 上使用您機器的 LAN IP)。輸入任何非空字串作為 API 金鑰,因為 vLLM 預設不需要身份驗證。然後在 OpenAI Chat Model 節點中,手動輸入模型名稱 - 它應該與 vLLM 提供的模型 ID 相符(使用 curl ``http://localhost:8000/v1/models 檢查)。

@nguyenthieutoan 說對了,Localhost 就是讓你卡住的地方。把它改成你的 LAN IP 位址:8080

vLLM 已經公開了與 OpenAI 相容的 API,所以你不需要特殊的節點——只需使用 OpenAI 節點,將其指向你的本機伺服器。

逐步說明:

  1. 在 n8n 中建立一個「OpenAI」憑證。
  2. 在「基礎 URL」中輸入你的 vLLM 位址,末尾加上 /v1(在你的情況下,localhost 在連接埠 8000 後面加上 /v1)。末尾的 /v1 是必要的——這是 vLLM 提供的路徑。
  3. 在「API 金鑰」欄位中,vLLM 通常不需要金鑰,但 n8n 要求填寫此欄位:輸入任何值,例如:sk-local。
  4. 在節點中的「模型」欄位中,使用 vLLM 正在提供的確切名稱(–served-model-name / --model,可能是 gpt-oss-20b)。如果名稱不符,會出現 model not found 錯誤。

最常見的陷阱:如果 n8n 在 Docker 中執行,localhost 會指向容器而不是你的機器。在這種情況下,將 localhost 替換為 host.docker.internal(Mac/Windows)或你在 LAN 上機器的 IP,保留連接埠 8000 和 /v1。若要確認 URL 正確無誤再連接到 n8n,請在 /v1/models 端點上執行 curl——如果列出 gpt-oss-20b,就只需在憑證中複製相同的位址。

嘿,所以:問題可能是你的 n8n 在 Docker 中執行,而在那裡「localhost」不是你的電腦,而是容器本身。所以當你告訴它在 localhost:8000 上尋找 vLLM 時,它在自己內部尋找,當然那裡什麼都沒有,所以拋出了錯誤。

解決方法是將基礎 URL 改為:

http://host.docker.internal:8000/v1

如果你在 Linux 上,還需要用 --add-host host.docker.internal:host-gateway 啟動 n8n,否則它不會識別那個地址(或者更簡單的做法是直接用你電腦的 IP)。

然後快速檢查兩件事:確保你用 --host 0.0.0.0 啟動了 vLLM(否則它只會監聽自己),以及在 API 金鑰欄位中輸入任何隨意的內容,比如 dummy,因為 n8n 需要它,雖然 vLLM 不會用到。

只有在 n8n 不在 Docker 中而是直接安裝在你電腦上時,localhost 才沒問題——但那可能不是你的設置,所以用 host.docker.internal 應該就沒問題了。

來源(n8n 文件——Ollama 頁面,但 Docker 的 localhost 修正同樣適用於 vLLM,因為它使用相同的 OpenAI 相容 API):

@Michael_Frostbutter 在我更改IP(http://x.x.x.x:8000/v1)後,我就能成功存取了。謝謝你

謝謝,它可以運作了。我改成了 x.x.x.x 而不是 localhost。

很樂意幫助,localhost 在 Docker 容器內永遠無法解析。

@doyoungim999

這裡有一點要注意。如果你在一台裝置上託管它,而該裝置曾經離開你的區域網路並連接到另一個網路,你的 IP 位址會改變,另外如果你沒有在家用路由器中為該裝置設定 DHCP 保留,你的 IP 位址也有可能改變而導致連線中斷。

如前所述,試試 host.docker.internal:PORT,如果能正常解析,那就是能解決上述靜態 IP 兩個問題的永久解決方案