RAG 資料處理到向量資料庫流程示意圖

← INSIGHTS & PERSPECTIVES | 生成式AI

使用 n8n 與 LINE Bot 搭建 RAG AI 應用

整理用 n8n 串接 LINE Bot 與 OpenAI Assistant 的 RAG AI 應用流程,包含憑證、Webhook、chatInput、LINE Reply API 與 JSON.stringify 設定。

使用 n8n 與 LINE Bot 搭建 RAG AI 應用,核心流程是讓 LINE 接收使用者訊息,n8n 負責整理事件資料與呼叫 OpenAI Assistant,最後再透過 LINE Messaging API 把回答回覆給使用者。這種做法適合想快速驗證「專屬知識問答機器人」的人:不用先寫完整後端系統,但仍能保留工作流控制、API 呼叫與資料格式調整的彈性。

需要注意的是,OpenAI 官方文件已將 Assistants API 標示為 deprecated,並記錄 shutdown date 為 2026-08-26;如果是 2026 年 8 月 28 日之後的新專案,請先查 Responses API 與 File Search 的最新做法,再決定要不要沿用本文的舊節點流程(OpenAI Platform,存取日期:2026-08-28)。

n8n 在 LINE Bot RAG AI 應用中負責什麼?

n8n 是 LINE Bot 與 OpenAI Assistant 之間的流程編排層。n8n 會接收 LINE Webhook 事件、整理輸入欄位、呼叫 AI 節點,再把結果送回 LINE。

n8n 是一款開源的工作流自動化工具,可以透過可視化節點設計和執行自動化流程,完成跨應用與服務的資料整合。無論是簡單的資料同步,還是複雜的跨平台自動化,n8n 都適合拿來做概念驗證與內部工具。

在這個應用裡,n8n 不只是「把 LINE 接到 AI」而已。n8n 比較像一個可以看得見每一步的中控台:LINE 傳來什麼、哪些欄位要轉換、OpenAI Assistant 回傳什麼、最後回覆格式是不是 LINE API 接受的 JSON,都可以在節點裡逐步調整。

n8n 串接 LINE Bot 前需要準備哪些憑證?

n8n 串接 LINE Bot 前,需要 LINE Developers 帳號、Messaging API Channel、Channel ID、Channel Secret 與 Channel access token。若要接收使用者訊息,也要設定 Webhook URL。

準備 LINE API 憑證的基本步驟如下:

  1. 前往 LINE Developers 註冊或登入帳戶。
  2. 建立一個新的 Messaging API Channel。
  3. 記下 Channel ID、Channel Secret 和 Channel access token,這些資料會用於 n8n 或 HTTP Request 節點的認證設定。
  4. 如果需要接收 LINE 的事件通知,將 n8n 提供的 Webhook URL 設定回 LINE Developers。

LINE Messaging API 的 Webhook 機制,是 LINE Platform 在使用者傳訊息、加入好友或觸發事件時,用 HTTPS POST 把事件送到開發者設定的 Webhook URL(LINE Developers,存取日期:2026-08-28)。正式測試前,記得確認 LINE Developers 裡的 Webhook 已啟用,LINE 官方帳號後台也沒有用預設自動回應蓋掉機器人的回覆。

如何在 n8n 中接收 LINE 訊息?

在 n8n 中接收 LINE 訊息,可以先用 Webhook 或 LINE 相關節點接住 LINE 事件,再把使用者文字整理成後續 AI 節點需要的欄位。後續節點通常會讀取 `chatInput` 作為使用者問題。

在 n8n 裡新增 LINE 節點後,可以先確認兩個畫面:n8n 的節點設定畫面,以及 LINE Bot 的 channel 設定畫面。這一步先不急著串 AI,先讓 LINE 事件能穩定進到 n8n。

我自己的做法是先用最小流程測試:

  1. 使用手機傳一則文字訊息給 LINE 官方帳號。
  2. 在 n8n execution 裡確認 LINE 事件是否進來。
  3. 找到使用者文字與 `replyToken` 在 JSON 裡的位置。
  4. 再用 Edit Fields 節點整理後續 AI 節點要吃的欄位。

這裡最容易卡住的地方,不是 AI 回答,而是 LINE 事件 JSON 很深。後面要回覆 LINE 時會需要 `replyToken`,要呼叫 AI 時會需要使用者輸入文字;先把這兩個欄位找出來,後面會省很多時間。

如何用 OpenAI Assistant 建立 RAG 知識機器人?

OpenAI Assistant 可以先建立專屬知識機器人,並上傳檔案作為 RAG 問答資料。這是 2025 年常見的做法;新專案應先確認 OpenAI 目前推薦的 Responses API 流程。

可以前往 OpenAI 平台的 Assistant 相關頁面建立機器人:

https://platform.openai.com/playground/assistants

在這個案例裡,我建立的是一個了解我的書籍內容的機器人。當時的 OpenAI Assistant 可以上傳檔案,讓機器人有自己的知識資料來源;使用者從 LINE 問問題時,Assistant 就能根據這些資料回答,而不是只靠模型本身的通用記憶。

RAG(Retrieval-Augmented Generation,檢索增強生成)適合用在「回答必須貼近指定文件」的場景。比起把全部資料寫進提示詞,RAG 會先從知識資料中檢索相關內容,再交給模型產生回答,對書籍問答、內部文件客服、產品知識庫都很實用。

如何在 n8n 呼叫已建立好的 OpenAI Assistant?

n8n 呼叫 OpenAI Assistant 時,可以選擇與 Assistant 對話的 AI 節點,並指定剛剛建立好的機器人。若 n8n 節點已改版,請改用目前支援 Responses API 的節點或 HTTP Request。

這一步的重點有兩個:

  1. 在 n8n 裡選擇可以和已建立 Assistant 對話的節點。
  2. 把前面 LINE 事件整理出的使用者文字,放到 AI 節點需要的 `chatInput`。

如果前一個節點的欄位結構不是 AI 節點預期的格式,就先新增一個 Edit Fields 節點,把資料轉成乾淨的結構。這個小步驟很重要,因為 n8n 的節點通常不是只看「畫面上有文字」,而是會讀指定欄位名稱。

我會把資料流整理成這樣:

流程位置欄位重點用途
LINE Webhook 事件使用者訊息、`replyToken`接收問題與準備回覆
Edit Fields 節點`chatInput`轉成 AI 節點要讀的輸入
OpenAI Assistant 節點`output`取得 RAG 回答
HTTP Request 節點LINE reply body把 AI 回答送回 LINE

如何用 LINE Reply API 回覆使用者訊息?

LINE Reply API 需要 `replyToken`、`messages` 陣列與 Channel access token。當 n8n 取得 OpenAI Assistant 的回答後,可以用 HTTP Request 節點送出 reply message。

原本 n8n 裡有 notify 類型的 LINE 元件,但相關元件可能會因版本更新而變動。比較穩的做法,是直接參考 LINE Messaging API 的 reply message 格式,用 HTTP Request 節點呼叫 API。

LINE 官方文件提供的 reply message 範例如下:

```bash

curl -v -X POST https://api.line.me/v2/bot/message/reply \

-H 'Content-Type: application/json' \

-H 'Authorization: Bearer {channel access token}' \

-d '{

"replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",

"messages":[

{

"type":"text",

"text":"Hello, user"

},

{

"type":"text",

"text":"May I help you?"

}

]

}'

```

在 n8n 裡,`replyToken` 需要換成 LINE Webhook 事件裡的實際 token,`text` 則換成 OpenAI Assistant 回傳的回答。LINE reply token 只能用於回覆該次事件,所以不要把 reply message 延遲太久才送出。

為什麼 LINE 回覆內容要用 JSON.stringify?

OpenAI Assistant 回傳的文字可能包含換行、引號或特殊符號,直接塞進 JSON 會造成格式錯誤。n8n 回覆 LINE 時,用 `JSON.stringify(...)` 包住輸出字串,可以降低 JSON body 被打壞的機率。

我在 HTTP Request 節點會把 body 寫成這樣:

```js

{

"replyToken":"{{ $('If').item.json.body.events[0].replyToken }}",

"messages":[{"type":"text","text":{{ JSON.stringify($json.output) }}}]

}

```

這段設定做了兩件事。第一,`replyToken` 從前面判斷節點的 LINE 事件中取出;第二,`messages[0].text` 使用 `JSON.stringify($json.output)`,把 AI 回答轉成合法 JSON 字串。

如果沒有做 `JSON.stringify(...)`,AI 回答裡只要有雙引號、換行或部分特殊字元,就可能讓 HTTP Request 節點送出不合法的 JSON。這種錯誤看起來會像 LINE API 不收資料,但根因其實是 request body 在 n8n 端已經壞掉。

完整工作流應該長什麼樣?

完整工作流可以拆成 LINE 事件接收、欄位整理、OpenAI Assistant 問答、LINE Reply API 回覆四段。先讓每一段單獨成功,再串成完整 RAG AI 應用。

一個可測試的 n8n + LINE Bot + RAG AI 工作流,可以用這個順序檢查:

  1. LINE 使用者傳訊息給官方帳號。
  2. LINE Webhook 把事件送到 n8n。
  3. n8n 取出使用者文字與 `replyToken`。
  4. Edit Fields 節點建立 `chatInput`。
  5. OpenAI Assistant 節點用 RAG 知識回答問題。
  6. HTTP Request 節點呼叫 LINE Reply API。
  7. 使用者在 LINE 收到 AI 回覆。

我會建議先用一個非常小的知識檔案測試,例如一本書的章節摘要或一份 FAQ。確定 `chatInput`、Assistant 回答、LINE reply body 都正常後,再增加資料量與例外處理。這樣比較容易知道問題到底出在線路、憑證、AI 節點,還是 JSON 格式。

測試 n8n LINE Bot RAG AI 應用時要檢查什麼?

n8n LINE Bot RAG AI 應用測試時,不只要看 LINE 有沒有回話,也要確認回答是否引用正確知識、錯誤時是否可追蹤、金鑰是否安全保存。

我會用這份檢查表跑第一輪:

檢查項目怎麼看常見問題
LINE Webhookn8n execution 是否收到事件Webhook URL 貼錯、Use webhook 未開啟
使用者輸入`chatInput` 是否有文字LINE JSON 路徑抓錯、Edit Fields 設定錯
Assistant 回答`output` 是否符合知識內容檔案未上傳、Assistant 選錯、問題超出資料範圍
LINE 回覆使用者是否收到訊息`replyToken` 失效、Authorization header 錯誤
JSON 格式HTTP Request body 是否合法忘記使用 `JSON.stringify(...)`
安全性金鑰是否只存在後台或環境變數Channel access token 或 API key 被貼進公開文件

第一次測試時,我會只讓自己或少數測試者加入 LINE 官方帳號。RAG 類型應用很容易在「可回覆」之後才發現「回答不穩」,所以測試題目要包含知識庫內問題、知識庫外問題、長句問題與含特殊符號的問題。

延伸閱讀

如果想把 LINE Bot、RAG、OpenAI API 與工作流工具的脈絡補齊,可以接著看這幾篇站內文章:

常見問題

Qn8n 可以不用寫程式就串接 LINE Bot 嗎?

可以,n8n 可以用視覺化節點完成大部分 LINE Bot 串接流程。不過如果要自己呼叫 LINE Reply API,仍需要理解 HTTP header、JSON body、`replyToken` 與 access token 的位置。

Qn8n LINE Bot 一定要用 OpenAI Assistant 嗎?

不一定。OpenAI Assistant 曾經適合快速建立檔案型 RAG 問答;以 2026 年 8 月 28 日之後的新專案來說,應優先確認 OpenAI Responses API 與 File Search。若團隊已經有自己的向量資料庫、RAGFlow、Dify 或 LlamaIndex,也可以讓 n8n 改呼叫那些服務的 API。

QLINE replyToken 和 Channel access token 差在哪?

`replyToken` 是 LINE 針對單次使用者事件產生的回覆 token,用來回覆該次訊息。Channel access token 是 LINE Bot 呼叫 Messaging API 的授權憑證,用在 HTTP `Authorization` header。

Q為什麼 n8n 呼叫 LINE Reply API 會回傳錯誤?

常見原因是 `replyToken` 路徑抓錯、Channel access token 無效、HTTP header 少了 `Content-Type: application/json`,或 request body 不是合法 JSON。若 AI 回答含有換行或引號,請先檢查是否已使用 `JSON.stringify(...)`。

QRAG AI 應用可以直接上傳公司內部文件嗎?

不要在沒有確認權限前直接上傳公司內部文件。建立 RAG 知識庫前,應先確認文件是否含個資、客戶資料、合約、醫療資料、財務資料或其他機密內容,並確認 OpenAI 與相關平台的資料處理條款。

Qn8n LINE Bot 適合正式上線嗎?

n8n LINE Bot 可以作為內部工具或概念驗證,也可以支撐小規模服務。若要正式上線,建議補上錯誤重試、日誌監控、權限控管、費用上限、資料留存政策與資安審查。

參考資料

最後更新

本文最後更新於 2026-08-28。此次更新將 WordPress 區塊整理為 Markdown,補上 GEO Answer Blocks、測試檢查表、延伸閱讀、FAQ 與參考資料;來源截圖未在 `markdown-export/uploads` 或 `public/images/tech` 找到完整對應檔,因此本文先使用既有 RAG 示意圖作為封面。

關於作者 {#author}

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2025-02-01