前言
大家好,今天要為大家介紹一個在網路上非常熱門的平台——n8n。n8n 是一個能讓你實現自動化流程的工具,它可以減輕我們生活和工作中的許多負擔。本課程的最終目標是教大家建立一支 AI 財經助理的 LINE Bot,也就是你可以向這支機器人詢問相關股價、財經知識,甚至是今天該買進還是賣出。本課程大致會分成四周進行,以下是各周的主要內容。
第一周:基礎介紹與環境建置
在第一周,我們將先介紹一些基礎知識,包括 n8n 以及 Docker。Docker 是一個用於在本地架設 n8n 的工具,我們也會教大家如何在自己的本地端搭建 n8n 伺服器。
n8n 簡介
n8n 的全名是 nodemation,由於在開頭和結尾都有字母“n”,而中間的字母總共有 8 個,所以簡稱為 n8n。在英文中,這種簡稱方式很常見,例如 i18n(Internationalization 的簡稱)。n8n 是由“node”和“mation”兩個單字組成,“node”代表 Node View,即我們的界面是由一個個節點組成的,透過不同節點的連接和流程控制可以達到我們想要的效果。此外,“node”也有雙關的意思,因為 n8n 是使用 Node.js 開發的。而“mation”代表自動化(Automation),這也是 n8n 重要的功能之一,例如我們可以定時在每天 8 點推播股價的最新資訊。
n8n 的操作界面就像右邊所看到的,有一個個節點,每個節點有不同的模組可供運用,我們可以把每個模組串在一起,按照想要的流程完成任務。n8n 是一個 Low-Code 工具,基本上不太需要寫程式碼,但如果想要有一些客製化的功能,也可以透過寫程式來實現。它的優勢在於可以串接不同的 APP 或服務,例如 Google 服務、OpenAI 的 ChatGPT 等,並且可以客製化我們想要的東西,操作非常方便。我們可以使用 npm 或者 Docker 在本地端架設 n8n 伺服器,這次的課程會教大家如何使用 Docker 來架設。此外,由於 n8n 伺服器可以架設在自己的本機上,資料不會上傳到雲端,因此也可以確保資料的隱私性。
n8n 價格
n8n 有不同的等級,每個等級能做到的事情不太一樣,詳細內容可以參考下面的連結。雲端版本都是需要付費的,一開始有 14 天的試用期,一個 email 只能註冊一個帳號。在試用期內,只能執行 1 萬次的 workflow,最多只能建立 15 個工作流程。需要注意的是,當試用期到期後,如果在 28 天內沒有升級方案,工作區裡面所有的專案會自動被刪除,所以要提前備份。
第二周:結合 LINE 建立機器人
在第二周,我們將結合 LINE 建立一支可以透過 LINE 平台的機器人。在講到 LINE 時,有一個很重要的觀念叫做 Messaging API,它包括 Push 和 Reply 的 Message,分別代表主動推播和回覆使用者訊息。
Messaging API
在 LINE 的 API 計費中,Push API 是需要計費的,而 Reply API 是不需要收費的,所以在設計上,我們盡量使用 Reply API 的方式,讓使用者提問,我們再根據他輸入的訊息回覆,這樣就不需要付費。LINE 的訊息收費分成輕用量、中用量和高用量的用戶。一般註冊成官方帳號的話,都會是輕用量的用戶,一個月有 200 則的免費訊息額度,且不能加購任何訊息數。如果覺得一個月 200 則不夠,可以花 800 塊升級到中用量的用戶,一個月有 3000 則免費訊息,但還是不能加購訊息。如果想要加購訊息,就必須升級到高用量的用戶,一個月 1200 塊,有 6000 則免費訊息,超過 6000 則可以額外加購,每則 0.2 元。詳細內容可以參考官方文件。
API 概念
API 的英文全名叫 Application Programming Interface,即應用程式的介面。簡單來說,當我們想要取得某些資料時,我們是 Client,我們會發送一個請求(Request)到 API,API 再去伺服器取得資料,最後返回給我們。需要記住的是,API 必須要有請求才會有回覆。
Webhook 概念
Webhook 中文叫做網路的鉤子,它與 API 的主要差別在於,API 是必須有 Client 的 Request 才會有 Response,而 Webhook 是主動通知。例如,當餐點做好時,櫃檯人員主動通知外送員,這時櫃檯人員就扮演了 Webhook 的角色。
LINE Messaging API 流程
LINE Messaging API 的流程如下:當使用者在 LINE 應用程式中輸入訊息(發送一個事件)時,這個事件會傳送到 LINE 的 Platform(LINE 的伺服器),伺服器接收到之後,會主動通知我們的機器人伺服器。這裡強調主動,是因為我們必須設定 Webhook,當 LINE Platform 有收到新的訊息時,就會主動告訴我們的機器人伺服器,而不需要我們一直去問 LINE 的 Server 有沒有新的訊息傳給我們。當機器人伺服器接收到這些事件或訊息時,就可以做對應要做的事情。如果要回覆給使用者,就必須透過 Messaging API(Reply API),發送到 LINE 的伺服器,再由 LINE 的伺服器傳送訊息到使用者的聊天室中。
LINE 官方帳號後台與 LINE Developers 後台
LINE 有兩個容易搞混的平台,分別是 LINE 的 Official Account Manager(官方帳號後台)和 LINE Developers(開發者後台)。官方帳號後台主要用於管理官方帳號,不需要寫程式,例如可以設定優惠券、拿集點卡、做問卷等。而 LINE Developers 後台是給開發者使用的,需要寫程式,例如可以使用 LINE Login 或 Messaging API。官方帳號後台限制較多,但開發成本低;LINE Developers 後台彈性高,但開發成本也相對較高。
在建立官方帳號的過程中,會碰到 Provider 和 Channel 兩個概念。Provider 可以是個人開發者或公司組織,他們提供服務並可以獲得使用者的一些資訊。在 Provider 底下可以建立不同的 Channel,例如 Messaging API、LINE Login、liff 等。需要注意的是,在同一個 Provider 底下,同一個 User 才能拿到相同的 UID,不同的 Provider 底下的 Channel 是不能轉移的。
第三周:串接股票 API
在第三周,我們將正式教大家串接股票的 API。透過 n8n 這個工具,我們可以做到自動化的流程,定時推播最新的股票資訊。
第四周:建立 AI 財經助理 LINE Bot
在最後一周,我們將建立最終的目標——AI 財經助理 LINE Bot。這涉及到一些 LLM(大型語言模型,例如 ChatGPT)的概念,由於財經股票有相關的專業知識,所以我們會討論到另外一個技術叫做 RAG。
RAG 概念
RAG 的全名是 Retrieval-Augmented Generation,由 Retrieval(檢索)、Augmented(增強)和 Generation(生成)三個部分組成。在大型語言模型中,它的知識是有限的且無法更新,所以我們需要透過 Retrieval 去檢索相關的資料,例如網路上的資料或財經相關專業的書籍。有了這些資料之後,再透過 Augmented 去增強我們要問的問題,即結合檢索到的相關文件和原先問的問題,重新問大型語言模型。最後,透過大型語言模型生成我們想要的東西。
RAG 整個的 Pipeline
當使用者在 Query 的地方問了一個問題時,如果使用 RAG,我們會先把相關專業的書籍進行 Chunking(切成小塊),然後轉成向量,透過 Embeddings 的 model 存到向量資料庫。Embeddings 就是轉換成向量的過程,轉成向量的好處是可以比較不同向量的相似度,從而找出與使用者提問最相似的向量,增強使用者的提問。接著,把檢索到的相關知識加上使用者原先的問題,重新丟到 LLM(例如 ChatGPT),請它生成想要的東西。
RAG 與直接問 LLM 的差別
-
知識來源:直接問 LLM,其知識來源是當時訓練的資料,可能無法包含最新的發展;而使用 RAG,在丟到 LLM 之前會先做檢索,補充 LLM 沒有的知識,回答會更準確。
-
更新資訊:直接問 LLM 無法更新資訊,需要重新 Train 一個 LLM 的 model;而使用 RAG,只需要更新 Document,重新丟到向量資料庫,就可以檢索到新的資訊。
-
知道來源:直接問 LLM 不知道答案的來源,甚至可能憑空捏造;而使用 RAG,由於是用向量比對相似度,可以知道答案是從哪個 Document 來的。
-
速度:使用 RAG 因為多做了一個檢索的步驟,所以速度比直接使用 LLM 慢。
-
適用地方:直接問 LLM 適合一般的對話或比較 General 的問題;而使用 RAG 適合有專業任務的時候。
小結
本課程詳細介紹了 n8n 平台的相關知識,包括基礎概念、價格、與其他自動化平台的比較、介面操作、節點類型等,還教大家如何使用 Docker 在本地端架設 n8n 伺服器,以及如何結合 LINE 建立機器人、串接股票 API 和建立 AI 財經助理 LINE Bot。希望大家通過本課程的學習,能夠掌握 n8n 的使用方法,並建立出自己想要的自動化流程。