先講結論
- n8n 的 AI Agent 是一個節點,底下再接三種東西:模型(一定要)、工具(官方說至少一個)、記憶(可以不接)。模型可以用 Ollama 跑在自己的機器上,不用任何金鑰。
- 同一句「5 萬日圓可以換多少台幣」,沒給工具時模型答 278 台幣;接上查匯率的工具,它自己查到 1 日圓換 0.203034 台幣,算出 10,151.7。只用 CPU,這一題跑了 74 秒。
- 它也會錯。接著問「那 300 塊呢?」,它記得前面在講美元,也用了計算機,最後卻寫成「300 台幣可以換 9,642.47 美元」,方向反了。模型加 n8n 大約吃掉 3.8 GB 記憶體。
搜「n8n AI Agent」找到的教學,第一步幾乎都是去申請 OpenAI 的 API 金鑰。金鑰要綁信用卡,用多少付多少。還不確定要不要用,就得先準備付錢,很多人會停在這裡。
n8n 的 AI Agent 其實可以接 Ollama,用跑在自己機器上的模型,不需要任何金鑰。我想知道這樣做實際上是什麼樣子:能不能用、要等多久、會錯在哪裡,所以在一台測試機上從頭做了一次。
例子很小:問它「我有 5 萬日圓,照現在的匯率可以換多少台幣?」,讓它自己去查匯率、自己算。兩個流程檔都放在站上,可以直接匯入。如果你還沒做過 n8n 的流程,建議先看第一個流程那篇,這篇的匯率資料來源跟那篇是同一個。
AI Agent 在 n8n 裡長什麼樣子
在 n8n 裡,AI Agent 是一個節點。它跟一般節點不一樣的地方,是底下還要接幾個小節點,官方叫子節點(sub-node)。會接的有三種:
- 模型(Chat Model):負責想、決定下一步要做什麼。一定要接。
- 工具(Tool):它能用的能力,例如打一個網址拿資料、算數學、讀試算表。官方文件寫至少要接一個。
- 記憶(Memory):讓它記得同一段對話前面講過什麼。可以不接。
它運作的方式是這樣:你丟一個問題進去,模型看了問題和手上有哪些工具,決定要不要用、用哪一個;工具跑完把結果交回去,模型再決定下一步,直到它覺得可以回答了。官方文件寫,從 1.82.0 開始,AI Agent 節點一律用這種方式運作,叫 Tools Agent。
跟一般的流程比,差別在「誰決定下一步」。第一個流程那篇的匯率流程,抓匯率、留數字、判斷,每一步都是我排好的。這篇的 AI Agent,我只給它工具和一段說明,要不要查、查哪一種貨幣,是模型自己決定的。這也是 AI Agent 這個詞最基本的意思。
另外有一件容易搞混的事。n8n 2.x 加了一個也叫 Agents 的新功能,在專案裡的 Agents 分頁用 Agent Builder 建立,跟流程並列,可以接 Slack、Telegram、Linear,也能排程。官方文件寫它目前還是 Preview,自架的版本要 2.32.3 以上,而且關掉它不影響 AI Agent 節點。這篇講的、測的都是 AI Agent 節點。
我做的兩個流程
手動版,用來確認它查得到、算得對:
https://yuntech.idv.tw/files/n8n-ai-agent.json
聊天版,多了聊天視窗和記憶:
https://yuntech.idv.tw/files/n8n-ai-agent-chat.json
在畫布右上角的流程選單選 Import from URL,貼上網址就能匯入。匯入之後要自己選 Ollama 的憑證,下面會講怎麼設。
手動版的主線只有三格:手動測試、問題(用 Edit Fields 放一句問題)、AI Agent。AI Agent 底下接三個子節點:
- Ollama Chat Model:模型用 qwen3:4b-instruct。
- get_exchange_rate:把 HTTP Request 節點當成工具,去 ExchangeRate-API 查匯率。
- calculator:n8n 內建的計算機工具。
兩個工具的名字我用英文。模型是看工具的名字和說明,來決定什麼時候用哪一個,所以說明要寫清楚它能做什麼、要給它什麼。
AI Agent 的系統訊息(System Message)我是這樣寫的:
你是幫忙換匯試算的助理。匯率一定要用 get_exchange_rate 工具查,不能自己猜;需要計算的時候用 calculator 工具。用繁體中文回答,答案裡寫出用了哪個匯率,以及匯率資料的更新時間。
查匯率的工具怎麼設
匯率網址的最後一段是貨幣代碼,查日圓就是 latest/JPY。這一段我沒有寫死,讓模型自己填。實際的設定是一整行,這裡為了手機好讀拆成幾行:
https://open.er-api.com/v6/latest/
{{ $fromAI(
'currency',
'三個大寫英文字母的貨幣代碼,例如 JPY',
'string'
) }}
$fromAI() 是 n8n 給工具用的函式,意思是「這個值由模型決定」。第一個參數是名字,第二個是寫給模型看的說明。
這個網址回來的資料很長,一百多種貨幣全部列出來。整包交給模型,光是讀就要很久,這台機器處理提示每秒只有 7 到 21 個 token。HTTP Request 當工具用的時候,多了一個 Optimize Response 的選項,可以只留需要的欄位,官方文件也說這樣模型比較不會被不重要的細節帶偏。我只留三個:
base_code,rates.TWD,time_last_update_utc
實際跑的時候,工具交回給模型的就只剩這一小段:
{
"base_code": "JPY",
"rates": { "TWD": 0.203034 },
"time_last_update_utc":
"Wed, 14 Oct 2026 00:02:32 +0000"
}
先問一次沒有工具的模型
接上工具之前,我先把同一句話直接丟給模型,什麼工具都不給,看它怎麼回。
它寫了很長一段,中間還把匯率的方向寫錯又自己改過來,最後的結論是:
5 萬日圓 ≈ 278 台幣(四捨五入)
它用的匯率是「1 台幣 ≈ 180 日圓」,旁邊註明「截至 2024 年 6 月,僅供參考」。當天實際的匯率是 1 日圓換 0.203 台幣,5 萬日圓大約是 10,152 台幣。它差了三十幾倍,語氣卻很肯定,最後還問我要不要幫忙查即時匯率——它其實查不了。
這不是這個模型特別差。模型知道的東西停在訓練的那一天,它不知道今天的匯率,只能拿記得的數字湊一個答案。AI Agent 要解決的就是這件事:不知道的時候,讓它自己去查。
接上工具之後
同一句話,這次交給 AI Agent。整個執行花了 74 秒,模型被叫了兩次。
第一次花 24 秒。模型讀了問題和工具清單,決定呼叫 get_exchange_rate,貨幣填 JPY。工具去查,0.14 秒就拿回來:1 日圓換 0.203034 台幣。
第二次花 48 秒。模型拿著這個數字寫答案:
根據最新的匯率資料,1 日圓可以換 0.203034 台幣,此資料的更新時間為 2026年10月14日 00:02:32 UTC。……50,000 × 0.203034 = 10,151.7 台幣
我驗算過,50,000 乘以 0.203034 是 10,151.7,對的。匯率和資料更新時間也照系統訊息的要求寫出來了。
有一件事它沒照做。系統訊息叫它計算時要用 calculator,它沒用,自己算了。這次剛好算對,但這說明寫在說明裡的規則,模型不一定會遵守。
加上聊天視窗和記憶
聊天版把起點換成 Chat Trigger,再接一個 Simple Memory 當記憶。Chat Trigger 打開 Make Chat Publicly Available,選 Hosted Chat,n8n 就會給一個聊天網址,打開就是一個聊天視窗,不用自己寫網頁。網址的格式是 /webhook/一串代碼/chat。
我發佈這個流程、啟動 n8n 之後,用指令對這個網址送訊息(跟聊天視窗送出去的是同一種請求)。先在同一段對話裡連問兩句,再開一段新的對話問一句。
第一句「1 美元現在可以換多少台幣?」花了 27 秒。它查了 USD,回答 1 美元換 32.14 台幣,也附上資料時間。
第二句「那 300 塊呢?」花了 33 秒。這句話本身沒有說是哪一種錢。它沒有再查一次匯率,直接拿前一句的 32.141562,叫計算機算 300 × 32.141562,得到 9,642.4686。這表示記憶有作用:它知道前面在講美元,也記得那個匯率。
但它最後寫的是:
300 台幣可以換 9,642.47 美元。
它算的是「300 美元換多少台幣」,寫出來卻變成「300 台幣換多少美元」,方向反了。300 台幣其實只換得到 9 塊多美元。
公平地說,「300 塊」在台灣通常是指台幣,這句話本來就有兩種讀法,是我問得不夠清楚。但不管照哪一種讀法,它最後那句話都跟它自己算的東西對不上。
第三句是新的一段對話,一樣問「那 300 塊呢?」,花了 18 秒。沒有前面的對話,它把 300 塊當成台幣,反問我要換成哪一種貨幣,沒有亂猜,也沒有用任何工具。同一句話,有沒有記憶,結果完全不一樣。
這次還遇到一個小狀況。n8n 一啟動,健康檢查已經回應正常,我在同一秒打開聊天網址,拿到的是 404,送訊息也只回一行 Cannot POST,網址還不存在。過了半分鐘再試就好了。剛重開 n8n 的時候,聊天視窗要等一下才能用。
跑起來要多少資源
測試機是 4 核心、8 GB 記憶體、沒有顯示卡。量到的數字是這些:
- 模型 qwen3:4b-instruct 載入後占 3.2 GB 記憶體。
- n8n 本體約 460 MB,另外一個執行程式碼用的 task runner 約 120 MB。
- 整台用掉約 4.3 GB,包含 Docker 本身。
- 模型產生文字的速度,每秒 4 個 token 左右。接上工具之後的四次回答,最快 18 秒,最慢 74 秒;沒給工具的那一次寫了一大段,花了 90 秒(其中 12 秒是第一次載入模型)。
只用 CPU 的話,回答一句要等二十秒到一分多鐘。拿來做背景的工作還可以,例如每天早上整理一次資料、寫一段摘要;放在網站上當即時的客服就太慢了。
所以要讓它整天開著,有兩條路。第一條是模型也放在自己的主機上,記憶體至少要 8 GB。例如 Hostinger 的 n8n 方案,8 GB 的是 KVM 2,不過它是 2 核心,比我的測試機少一半,可以預期回答會更慢。各家的規格和價格在 VPS 比較那篇。第二條是模型改用 OpenAI、Anthropic、Gemini 這類雲端的 API,n8n 本身吃不了多少資源,用官方雲端版或小台的主機就好,模型的費用照用量另外付。兩邊的 n8n 各要花多少在 n8n 費用。n8n 要選 Hostinger 哪一級方案、續約價多少,我整理在 Hostinger 評價。
照著做的話
先讓 Ollama 跑起來,抓一個支援工具呼叫的模型。我用的是:
ollama pull qwen3:4b-instruct
Ollama 怎麼裝、模型怎麼挑,在 Ollama 教學和 Ollama 模型推薦。
接著在 n8n 建一個 Ollama 的憑證,只要填 Base URL。這裡最常卡住:n8n 裝在 Docker 裡的話,網址寫 localhost,指的是容器自己,連不到 Ollama。官方文件依你的裝法給了不同的寫法:
- n8n 在 Docker 裡、Ollama 直接裝在主機上:啟動 n8n 時加
--add-host host.docker.internal:host-gateway(Docker Desktop 已經內建,不用加),網址填http://host.docker.internal:11434。Ollama 要設成聽所有網路介面,例如用OLLAMA_HOST=0.0.0.0啟動。我這次就是這樣接的,在 n8n 的容器裡打得到 Ollama。 - 兩個都在 Docker 裡:放在同一個 Docker 網路,網址用 Ollama 容器的名字,例如
http://ollama:11434。這篇的 n8n 我沒有這樣接;後來在 Ollama Docker 教學 用另一個容器實測過,同一個網路連得到,沒放在同一個網路會找不到這個名稱。 - 兩個都沒有用 Docker:用預設的
http://localhost:11434。官方文件提醒,如果出現ECONNREFUSED ::1:11434,改成http://127.0.0.1:11434。
然後匯入流程檔,打開 Ollama Chat Model 節點,選你剛建的憑證和模型。手動版按 Execute workflow 看結果;聊天版發佈之後,打開 Chat Trigger 節點上的聊天網址。
n8n 本身怎麼裝,在 n8n 安裝教學。
我改了兩個設定
在 Ollama Chat Model 的 Options 裡,我加了兩個設定。溫度設成 0,讓同一題每次答得一樣,比較好對照。思考(Think)關掉:會先思考再回答的模型,開著思考就要先寫一大段推理,只用 CPU 的時候特別慢。我在模型推薦那篇遇過問一句話、100 個 token 用完還在想,而且那個模型(qwen3:4b)要求關掉思考也照想。所以我直接挑名字裡有 instruct、本來就不先思考的 qwen3:4b-instruct,關掉 Think 只是保險。
用之前要知道的
官方文件 Tools Agent 那一頁,列出的支援模型是 OpenAI、Groq、Mistral、Anthropic、Microsoft Foundry 這幾家,沒有 Ollama。我實測 Ollama 配 qwen3:4b-instruct 可以正常呼叫工具,但換別的模型要自己先試,模型本身一定要支援工具呼叫。
聊天網址設成公開,知道網址的人都能用,每問一句都在用你主機的資源。Chat Trigger 的驗證可以選 Basic Auth,或限定登入 n8n 的使用者。
Simple Memory 的對話紀錄不會一直留著。官方文件寫它不會跨 session 保存,也不能用在 queue mode。
小模型會錯,像上面把方向寫反。跟錢有關的答案,送出去之前要有人看過。換成大一點的模型、或改用雲端的模型,通常會好一些,但這次沒有測,沒辦法跟你說好多少。
同樣這兩個工具,也可以不放在 n8n 的 AI Agent 裡,而是開成 MCP 伺服器,讓 Claude Code 這類工具來呼叫。我實際接過一次,同一題 7.9 秒答完,在 n8n MCP 教學。
這篇沒有測的
編輯器畫面上的操作。我是用指令匯入、執行和發佈的,沒有建立登入帳號。
雲端的模型。OpenAI、Anthropic、Gemini 都要金鑰,這次沒有接。
n8n 新的 Agents 功能。它要在畫面上用 Agent Builder 建立。
接 LINE、Telegram 這類聊天軟體,以及能長期保存對話的記憶節點。
有顯示卡的機器。有顯示卡的話速度會差很多,這次的秒數只代表只用 CPU 的情況。
同一題重跑很多次看穩不穩定。上面每一句都只問了一次。
常見問題
n8n 的 AI Agent 一定要付錢買 OpenAI 的 API 嗎?
不用。模型可以接 Ollama,用跑在自己電腦或主機上的模型,不用金鑰,也不用按用量付費。代價是速度和準確度:我在 4 核心、沒有顯示卡的機器上,一句話要 18 到 74 秒,小模型也比較容易出錯。要接 OpenAI、Anthropic、Gemini 的模型,就要它們的 API 金鑰,費用照用量另外算。
用 Ollama 的話,要選哪個模型?
要選支援工具呼叫的模型,Ollama 的模型頁會標 tools。我用的是 qwen3:4b-instruct,它會呼叫工具,也不會先寫一大段思考。官方文件 Tools Agent 那頁列的支援模型沒有 Ollama,但我實測可以用;換別的模型要自己先試。
n8n 的 Agents 跟 AI Agent 節點差在哪?
AI Agent 節點是放在流程裡的一個節點,這篇測的是它。Agents 是 n8n 2.x 新加的功能,在專案的 Agents 分頁用 Agent Builder 建立,跟流程並列,可以發佈、接 Slack、Telegram、Linear,也能排程。官方文件寫雲端所有方案都有,自架要 2.32.3 以上,目前還是 Preview;關掉 Agents 不影響 AI Agent 節點。
它記得的對話會一直留著嗎?
這篇用的 Simple Memory 不會。官方文件寫記憶不會跨 session 保存,也不能用在 queue mode(多台 worker 的架構)。要長期保存,n8n 有把對話存進 Postgres、Redis、MongoDB 的記憶節點,我沒有測。
這篇怎麼查證的
這篇只有一部分實際跑過,其餘依官方文件整理,查證日期 2026/10/14(n8n 2.43.4(官方 Docker 映像檔)、Ollama 0.40.4、模型 qwen3:4b-instruct,跑在雲端測試機上(4 核心 8 GB,沒有顯示卡)。兩個流程檔都是從站上的網址下載、用指令匯入的。手動版用指令執行一次;聊天版發佈後啟動 n8n,用 curl 對聊天網址送了三句話。我沒有建立登入帳號,所以沒有在編輯器畫面上操作,畫面相關的說明依官方文件。OpenAI、Gemini 這類雲端模型要金鑰,沒有測;n8n 新的 Agents 功能也沒有測)。哪些有跑、哪些沒跑,文中各段有寫。價格與方案以官方頁面為準,工具改版後內容可能過期。
- n8n 官方文件:AI Agent
- n8n 官方文件:Tools Agent
- n8n 官方文件:Ollama Chat Model 的常見問題(Docker 怎麼連)
- n8n 官方文件:Ollama credentials
- n8n 官方文件:Chat Trigger
- n8n 官方文件:Simple Memory
- n8n 官方文件:HTTP Request(Optimize Response)
- n8n 官方文件:Use AI for parameters($fromAI)
- n8n 官方文件:Build and manage agents
- ExchangeRate-API:Open Access Endpoint(匯率資料來源)