# 目錄 ## 1. 介紹與基礎概念 * Introduction * Discussing Internet Standards, REST and OAuth2 --- ## 2. n8n 自架環境與第一個 AI Workflow(Chatbot) * Getting Started – Setup n8n on Hostinger (self-hosted) * Create First Workflow Example (AI – Chatbot) * Add an AIAgent Node to Workflow * Add OpenAI Chat Model sub node to AiAgent Node * Add Credentials to OpenAI Chat Model sub node * Add a System Prompt to AIAgent Node * Add Memory Sub Node to AiAgent (to Add Context) * Test ChatBot WorkFlow --- ## 3. Hostinger 與 n8n 操作說明 * Logging on to Hostinger and n8n --- ## 4. Workflow 範例二:WhatsApp Panic App(註冊流程) * Create Workflow Example 2 (WhatsApp Panic App Registration) * Create Google Spreadsheet * Add and Setup OnSubmission Form Trigger Node * Add and Setup Google Sheets Node * Setup Credentials for Google Sheets Node (using OAuth2) --- ## 5. Workflow 範例三:WhatsApp Panic 通知系統 * Create Workflow Example 3 (WhatsApp Panic Notifications) * Add WhatsApp Trigger Node and Setup Credentials * Setup other Workflow Nodes (WhatsApp Panic Notifications) * Test WhatsApp Panic App Notifications Workflow --- ## 6. Workflow 範例四:履歷審核/面試排程(Human in the Loop) * Create Workflow Example 4 (CV Approval / Interview Scheduler) * Setup Google Drive Node and Configure Credentials * Setup Loop Node * Setup Human in the Loop Node * Setup AIAgent Node for Scheduling Interview on Google Calendar * Test CV Approval / Interview Scheduler Workflow – Human in the Loop --- ## 7. 架構優化與進階應用 * Abstract Sub-WorkFlow to Create Separation of Concerns * Extra Information --- ## 8. 其他實用整合技巧 * Use WhatsApp to Converse with ChatBot * Use a WebHook Trigger Node to Trigger your Workflow * Use the HttpRequest Node to Make Requests to External Web APIs * Integrate JavaScript Code into Workflow using Code Node --- ## 9. 結尾 * Outro --- # 1. 介紹與基礎概念 ## 課程定位與目標 * n8n 是一個開源的工作流程自動化平台,用來串接各種 App、API、服務以自動化任務 * 課程設計從新手到能做出實務解決方案,強調不用大量寫程式也能做出複雜流程 * 講師 Gavin Lon 以四個範例工作流程帶學,逐步示範整合 WhatsApp、Google Sheets、Google Drive、Gmail、AI agent 等服務 ## n8n 的核心概念 * 透過圖形化介面把「節點(node)」串成「工作流程(workflow)」來自動化任務 * 節點代表一步操作,工作流程代表一連串自動化步驟 * 設計流程的思考方式和寫程式類似:條件判斷、迴圈、分離關注點、抽象化 * 需要更細緻功能時也可在流程中嵌入程式碼,但範例主軸是低碼/少碼 ## 先備網路整合標準:REST 與 OAuth 2 * REST 常用於呼叫 Web API,使用標準網路協定與常見資料格式(JSON/XML)交換資料 * OAuth 2 用於安全授權與權限取得,例如讓 n8n 以 Gmail 身分在流程中寄信 * 這些標準讓不同系統即使由不同團隊、不同時間、不同地點開發,也能安全互通 * n8n 把底層複雜度抽象掉,讓開發者聚焦在流程的業務規則 ## 範例 1:AI 排行聊天機器人(可延伸到 WhatsApp) * 用 ChatGPT 類模型做一個「依提示產出排行清單」的聊天機器人(如電影前五名、最大哺乳類等) * 作為入門範例,重點是熟悉 n8n 工作流程與把 AI 納入流程 * 之後示範把 WhatsApp 接進來,讓使用者能用 WhatsApp 和聊天機器人互動 ## 範例 2:WhatsApp 緊急求助通知(WhatsApp Panic App) * 用 WhatsApp 觸發緊急求助流程,從 Google Sheets 讀取使用者地址並通知值班人員 * 背景動機是提供低成本求助方式,讓沒有私人保全的人也能透過手機與網路求援 * 使用者在緊急狀況可只傳送簡短代碼(例如「1」)以節省時間 * 值班人員收到包含地址的通知後,可派遣應變人員前往處理 ## Panic App 的兩段流程設計 * 註冊流程:使用者填表提供 WhatsApp 號碼、姓名、地址等資料,寫入 Google Sheets;WhatsApp 號碼作為識別鍵 * 求助流程:WhatsApp Trigger 收到「1」後啟動,查表對應號碼取得地址,再把求助通知發給值班人員 ## 範例 3:履歷/CV 自動處理與「Human-in-the-loop」 * 把履歷 PDF 放入指定 Google Drive 資料夾,流程讀取檔名與檔案 ID 並逐一處理 * 透過迴圈逐份下載履歷,將 PDF 由二進位轉成文字後交給 AI 產生特定格式的摘要 * 摘要用 email 寄給負責人,信中提供「核准/拒絕」兩個按鈕讓人做決策 * 流程會暫停直到人按下核准或拒絕,體現人類參與的審核關卡 ## 範例 3 的後續自動化:核准後排面試 * 若核准,流程繼續並用 AI agent 協助在面試官的 Google Calendar 安排面試 * 若拒絕,跳過排程步驟並進入下一份履歷的迴圈處理 * 若資料夾有多份履歷,迴圈會對每份執行一次,逐一完成篩選與排程 ## 範例 4 與延伸內容的鋪陳 * 文中提到共四個完整範例,但此段主要詳述前三個與基礎標準,第四個細節未在這段文字中展開 * 影片結尾會再補充一些更酷但較不細講的工作流程點子,目的是刺激觀眾發想自己的自動化需求 ## 節點串接示意:以 Panic App 為例 * WhatsApp Trigger 節點接到 Google Sheets 查詢節點,再接到讀取/處理節點,最後接到 Gmail 發信節點 * 透過把節點依序串接,達到「收到求助→查表取地址→通知值班」的自動化任務 * WhatsApp 與 Google 服務能在同一流程中無縫整合,根本原因是 REST、OAuth 2 等互通與授權標準 --- # 2. n8n 自架環境與第一個 AI Workflow(Chatbot) ## 在 Hostinger 以自架模式部署 n8n ![image](https://hackmd.io/_uploads/BJknwRqfbx.png) * 使用 Hostinger 的 VPS(Virtual Private Server)搭配預先配置的 n8n 範本,安裝相對簡單 * 流程是先選方案與付款週期(例如 1 個月/12 個月/24 個月),再選機房地區與作業系統 * 登入並填寫帳單資訊後完成設定,可選擇取消不需要的加購項目(如惡意掃描) * 系統會自動安裝,完成後到 VPS 管理頁面進入 n8n 應用管理 ## 建立 n8n 擁有者帳號 * 在 n8n 應用的管理頁面建立 owner 帳號 * 設定之後登入 n8n 會用到的密碼 * 可依需求自訂 n8n 的基本設定與介面外觀 ## 建立工作流程與資料夾整理 ![image](https://hackmd.io/_uploads/B1puu05zZx.png) * 先建立資料夾集中管理新的工作流程(例如「my workflows」) * 進入資料夾後建立新 workflow,會看到工作畫布(canvas) ## 工作流程的 Trigger 概念 ![image](https://hackmd.io/_uploads/rk75dA9fZe.png) * 每個 workflow 必須從 Trigger 開始 * Trigger 可能是手動觸發、Webhook、表單提交等 * 建立 AI Agent 節點時,通常會自動加上「When chat message received」作為 Trigger ## AI Agent 節點介面與資料流 ![image](https://hackmd.io/_uploads/HkUnuRqGWx.png) ![image](https://hackmd.io/_uploads/BJSsuA9Mbx.png) * 畫布呈現由左到右的資料流:Trigger 接收訊息 → 傳給 AI Agent * AI Agent 的「User Message / Prompt」通常會用表達式讀取輸入(例如從 JSON 的 chatInput) * 若尚未有輸入資料,執行節點會失敗或顯示無輸入狀態 ## 產生輸入與常見錯誤 ![image](https://hackmd.io/_uploads/ry3ltC9zbe.png) * 可先在聊天輸入區輸入問題,讓 Trigger 產生輸入資料 * 常見錯誤是 AI Agent 尚未連接 Chat Model(缺少模型子節點),會提示必須連接並啟用 ## 連接 OpenAI Chat Model ![image](https://hackmd.io/_uploads/SyMQtA5f-x.png) * 在 AI Agent 的 Chat Model 連接點新增子節點 * 從清單中選 OpenAI Chat Model,讓 AI Agent 具備可用的 LLM ![image](https://hackmd.io/_uploads/H1lNFC5fWg.png) * 在模型下拉選單可挑選目標模型(示範使用 GPT-4.1 mini) ## 建立 OpenAI 憑證與 API Key ![image](https://hackmd.io/_uploads/rkUL9RcfWe.png) * 在 OpenAI Chat Model 的憑證欄位選擇建立新憑證 * 需要填入 API key 才能呼叫 OpenAI ![image](https://hackmd.io/_uploads/Sy4wq05GZl.png) * 到 OpenAI 平台建立帳號並在儀表板建立新的 secret key * 新建 key 只會顯示一次,需立刻複製貼回 n8n 並儲存 ![image](https://hackmd.io/_uploads/rk3O9Aqf-l.png) ## 測試執行與輸出過於冗長的問題 ![image](https://hackmd.io/_uploads/BJ655A5GWl.png) * 連接模型與填好憑證後,可在 AI Agent 直接執行節點測試 * 範例提問「前五名國家橄欖球隊」會得到含大量說明的回覆 * 需求是只要清單結果,避免多餘文字以節省 token ## User Prompt 與 System Prompt 的差異 * User Prompt 是使用者的問題或指令,用來描述想要的內容 * System Prompt 是在使用者互動前設定的規則,用來控制風格、格式、邊界與行為 * 透過 System Prompt 可要求更精簡、只輸出清單、限制格式等 ## 在 AI Agent 設定輸出格式的方向 * AI Agent 介面可調整 Prompt/參數來影響模型回應 * 可啟用「要求特定輸出格式」之類的設定,讓輸出符合預期結構 * 目標是讓回覆只輸出項目名稱,不附帶額外說明文字 --- ## 在 n8n 新增 system prompt 的位置與用途 ![image](https://hackmd.io/_uploads/Syy7j05GZx.png) * 透過新增選項加入「System message」來設定 system prompt * system prompt 用來定義 AI 的角色與行為規範 ## 用 Markdown 結構化 system prompt 內容 ![image](https://hackmd.io/_uploads/Bkm8i0qzZl.png) * 用標題區分段落,讓開發者更易閱讀與維護 * 角色區塊:定義 AI 是提供精簡排行清單的助理 * 指令區塊:規定輸出格式與內容限制 ## 輸出格式規則設定 * 每個排行項目必須獨立一行 * 每個項目只包含名稱,不包含額外資訊或描述 ## 用範例引導輸出格式(One-shot / Few-shot) ![image](https://hackmd.io/_uploads/SJPtoA5GZe.png) * 在 prompt 中提供輸出範例,讓模型學到期望的格式 * 例子包含「前五名國家橄欖球隊」與「前五名電影」 * 這屬於 few-shot(提供多個例子),介於 zero-shot 與更多例子的 few-shot 之間 ## 工作流程資料流與回傳格式 ![image](https://hackmd.io/_uploads/B19JhA9M-e.png) * Chat Trigger 的輸入流向 AI agent,再交由 LLM(例如 OpenAI)生成回覆 * 回傳內容會依 system prompt 的格式規則輸出 * 可在節點中查看輸出結果與 JSON 格式 ## 問題:沒有記憶就沒有對話脈絡 * 初次詢問「前五名電影」可正常回答 * 追問「下一個五名」會失敗,因為缺乏前一次問題的上下文 * 造成回覆要求使用者重新提供類別或背景 ## 為聊天機器人加入 Memory ![image](https://hackmd.io/_uploads/rkLN3A9G-l.png) * 在 AI agent 下方的 Memory 連接點加入記憶模組 * 選擇「Simple memory」作為基本記憶方案 ![image](https://hackmd.io/_uploads/SkGrh05z-g.png) * Context window length 設定記住最近幾次互動(範例使用 5) * Session ID 用來維持同一段對話的連續性,確保記憶能套用到同一會話 ## 加入 Memory 後的效果驗證 ![image](https://hackmd.io/_uploads/BJ5E60qGZg.png) * 問「前五名橄欖球國家隊」後再問「下一個五名」可正確延續脈絡並補出第 6–10 名 * 更換主題(例如作者排行)後再問「下一個五名」也能延續該主題的上下文 ## 聊天機器人與 Agent 的差異定位 * 這裡做的是可對話的 chatbot,重點是回答問題並保留上下文 * 真正的 agent 會採取行動完成任務(例如安排面試並寫入行事曆) --- # 3. Hostinger 與 n8n 操作說明 ## 在 Hostinger(n8n)建立與命名工作流程 ![image](https://hackmd.io/_uploads/rJBP6R5f-l.png) * 登入 Hostinger 後進入 n8n 管理介面 * 在個人空間建立資料夾(例如 my workflows)集中管理 * 將上一段建立的工作流程重新命名為「Example 1 - Chatbot」 # 4. Workflow 範例二:WhatsApp Panic App(註冊流程) * 新增另一個工作流程命名為「Panic App Registration」 ## 建立 Google Sheets 作為註冊資料庫 ![image](https://hackmd.io/_uploads/S1RaVkof-l.png) * 登入 Google Sheets 並建立新的空白試算表 * 將試算表命名為「panic app registration」 * 建立欄位標題:First name、Last name、Email、Address 1、Address 2、WhatsApp number * Address 1/2 以非正式聚落為例:Address 1 可放門牌或屋號、Address 2 放區塊/區域(如 Block B) * WhatsApp number 作為唯一識別欄位,用來對應每位註冊者 ## 在 n8n 新流程加入 Trigger:On Form Submission ![image](https://hackmd.io/_uploads/S1T0EysGZl.png) * 在畫布中央按加號新增節點,工作流程必須從 trigger 開始 * 選擇「On form submission」作為觸發方式並建立註冊表單 * 設定表單標題(例如 Register user for security response) * 設定表單描述(註冊後可透過 WhatsApp 在緊急狀況發出求助) ## 表單欄位設定與驗證規則 ![image](https://hackmd.io/_uploads/rJMWryofbe.png) * 依照 Google Sheets 欄位建立表單元素:First name、Last name、Email、Address 1、Address 2、WhatsApp number ![image](https://hackmd.io/_uploads/Syn4SkjMZe.png) * 所有欄位都設定為必填(required) * Email 欄位使用 email 類型以自動驗證格式,格式錯誤會阻止送出 ![image](https://hackmd.io/_uploads/BJoLHkiGZg.png) * WhatsApp number 以可實際測試的有效號碼填入,用於後續 WhatsApp 求助流程測試與識別 ## 執行表單節點以產生測試資料 ![image](https://hackmd.io/_uploads/HycdSyozZl.png) * 在 On form submission 節點中按 Execute step 生成可填寫的表單頁 * 填入測試資料並提交表單,確認表單送出成功 * 回到節點輸出查看提交結果,確認輸出欄位與內容正確 ## Pin 資料用於後續節點測試 ![image](https://hackmd.io/_uploads/HJJcBysf-l.png) * 將表單提交的輸出資料 pin 起來 * 之後測試後續節點時,不必每次重新填表即可重用同一份輸入資料 * 方便逐步建構流程並單獨測試每個節點 ## 串接 Google Sheets:Append Row ![image](https://hackmd.io/_uploads/SkXsrysG-g.png) * 在畫布上將 On form submission 節點接到 Google Sheets 節點 ![image](https://hackmd.io/_uploads/HJAhHJjG-g.png) * 選擇 Google Sheets 節點的操作為「Append row」把註冊資料新增成一列 * 提到已先設定好連線憑證,並準備示範如何建立這些憑證以連到指定試算表 --- ## 目標與節點角色 * 在 n8n 的「Append row in sheet」節點建立新憑證,讓 workflow 有權限把資料新增到你的 Google 試算表 * 節點輸入端有 pinned data,可直接用來測試新增一列,不必重跑前面的表單輸入 ## 建立 Google Sheets OAuth2 憑證的必要欄位 ![image](https://hackmd.io/_uploads/rkf-UkoMWe.png) * n8n 會用 OAuth2,需要填入 Client ID 與 Client Secret * 這兩個值需到 Google Cloud Console 建立後再貼回 n8n ## 在 Google Cloud Console 建立專案 ![image](https://hackmd.io/_uploads/HkWGLyofZe.png) * 進入 console.cloud.google.com 並登入 * 建立新 Project,並切換到該專案作為目前專案 ## 啟用 Google Sheets API ![image](https://hackmd.io/_uploads/S1FQUkszWx.png) * 進入「APIs & Services」→「Library」 ![image](https://hackmd.io/_uploads/rJAE8JsMZl.png) * 搜尋並啟用「Google Sheets API」 ## 建立 OAuth Client ID 與 Consent Screen ![image](https://hackmd.io/_uploads/r1BwL1ifbx.png) * 進入「APIs & Services」→「Credentials」→「Create Credentials」→ 選「OAuth client ID」 * 先建立/設定 OAuth consent screen,填入 App name、支援/聯絡信箱、選 External audience、同意政策並建立 ![image](https://hackmd.io/_uploads/ryidIyjM-e.png) * 建立 OAuth client 時選 Web application,並準備填入 redirect/callback URI ## 設定 Callback URI 並取得 Client ID/Secret * 從 n8n 憑證畫面複製 Callback/Redirect URI * 回到 Google Cloud 的 OAuth client 設定,把 URI 貼到 Authorized redirect URIs * 建立後複製 Client ID 與 Client Secret,貼回 n8n 對應欄位並儲存 ## 加入測試使用者並完成授權同意 ![image](https://hackmd.io/_uploads/BJu9IJiGWe.png) * 在 OAuth consent screen 的 Audience/Users 新增 Test user(通常加自己登入用的 Google 帳號) * 回到 n8n 憑證畫面點「Sign in with Google」 * 在同意畫面勾選/允許需要的權限後完成授權,n8n 顯示連線成功 ## 選擇目標試算表與工作表 ![image](https://hackmd.io/_uploads/r1EnIyizbl.png) * 在 n8n 的 Document/Spreadsheet 欄位改用「By ID」 ![image](https://hackmd.io/_uploads/SkwCIksz-e.png) * 從 Google 試算表網址複製 Spreadsheet ID(只取 ID 本身,不要包含多餘 URL 片段) ![image](https://hackmd.io/_uploads/ry4bv1ozZl.png) * 貼回 n8n 後,Sheet 下拉選單應能讀到工作表(例如 Sheet1) ## 欄位對應與動態表達式 ![image](https://hackmd.io/_uploads/S1YQDJizWg.png) * n8n 會讀取試算表第一列欄位名稱並顯示成可對應的欄位 * 從 Input JSON 把各欄位拖拉到對應欄位(First name、Last name、Email、Address1、Address2、WhatsApp number 等) * 對應值使用 Expression 形式,確保每次執行都能帶入不同資料 ## 以 Pinned Data 測試新增列 * 欄位對應完成後,直接執行「Append row」節點 * 回到試算表確認新資料列已新增且落在正確欄位下 ## 解除 Pin 並用正式 URL 跑整條流程 ![image](https://hackmd.io/_uploads/SJB8P1jzZl.png) * 解除前一節點的 pinned data,改用實際表單提交來觸發 ![image](https://hackmd.io/_uploads/ryM_w1sfWl.png) * 在 workflow 啟用 Active * 使用 Production URL 開啟表單並送出資料 * 回到試算表確認正式提交的資料也能成功新增為新列 --- # 5. Workflow 範例三:WhatsApp Panic 通知系統 ## 建立「Panic App Notification」工作流程的目的 * 新建工作流程命名為「panic app notification」 * 功能是處理使用者緊急求助:使用者透過 WhatsApp 傳訊息觸發流程 * 流程會用使用者的 WhatsApp 號碼到註冊用的試算表查找資料 * 若找到對應註冊資料,就把包含地址等資訊的通知寄給值班人員,由值班人員派遣支援 ## 以 WhatsApp 訊息作為 Trigger 的設計 * 每個工作流程都從 trigger 節點開始 * 使用者在緊急狀況不需要打長訊息,只要傳單一字元(例如「1」) * 流程會從 WhatsApp 訊息中取得發送者 WhatsApp 號碼,作為查表的唯一識別 ## 在 n8n 加入 WhatsApp Business Cloud Trigger ![image](https://hackmd.io/_uploads/SypX9eofbe.png) * 新增節點並選擇 WhatsApp Business Cloud * 選擇事件類型為「On messages」以接收訊息觸發 ![image](https://hackmd.io/_uploads/SyIEcxofZe.png) * 需要建立並設定 WhatsApp 的 OAuth 2 憑證,才能連接 Meta/WhatsApp ## 建立 WhatsApp 憑證的整體流程(Meta Business) ![image](https://hackmd.io/_uploads/SJ_LqxsG-x.png) * 前往 Meta Business(Facebook Business)後用 Facebook 帳號登入 * 建立 Business Portfolio(商業組合/商業帳戶) ![image](https://hackmd.io/_uploads/SyYO9xsMbl.png) * 進入設定後在 Apps 區新增 App(Client app) * 設定 use case 為「Connect with customers through WhatsApp」 * 建好 App 後回到 App Dashboard 取得 App ID 與 App Secret ## 在 n8n 建立 OAuth 憑證並綁定 ![messageImage_1765636784978](https://hackmd.io/_uploads/rkgTqeoMZg.jpg) * 在 n8n 的 WhatsApp 節點新增 credential * 將 Meta App 的 App ID 填入 Client ID * 將 Meta App 的 App Secret 填入 Client Secret * 儲存後憑證建立成功,並套用到 WhatsApp trigger 節點 ## 在 Meta 的 WhatsApp API Quick Start 取得測試資源 * 進入 Use cases → Quick start → Start using the API * 系統會提供測試用 WhatsApp 號碼與 Phone Number ID * 這個測試號碼用來接收你送出的訊息以觸發工作流程 ## 產生 Access Token 並加入測試收訊者 * 在 Quick start 產生 access token 以便送測試訊息 * 管理 phone number list,新增要接收測試訊息的 WhatsApp 號碼 * Meta 會發送驗證碼到該 WhatsApp 號碼,完成驗證後才能用來測試 ## 發送測試訊息確認 WhatsApp Cloud API 可用 * 透過 Quick start 介面直接送出測試訊息(範例為 Hello World) * 成功收到訊息代表已具備從 Meta Cloud API 發送訊息的能力 * 也可用 cURL 或 Postman 執行同樣的測試請求 ## 在 n8n 執行 Trigger 節點並進入監聽狀態 ![image](https://hackmd.io/_uploads/rk5logsG-g.png) * 回到 n8n 畫布,確認 trigger 節點已綁定正確的 WhatsApp OAuth 憑證 * 執行 trigger 節點讓它開始「listen」等待訊息 * 從 WhatsApp 送出單一字元(例如「1」)到測試號碼以觸發流程 --- ## 釘選測試資料以便後續節點測試 ![image](https://hackmd.io/_uploads/HkWfoljzbe.png) * 試算表輸出包含使用者唯一識別值與 WhatsApp 號碼(WA_ID) * 將包含 WA_ID 的輸出資料 pin 起來,避免每次都要從 WhatsApp 再觸發一次流程 ## 新增 Google Sheets 節點查找使用者資料 ![image](https://hackmd.io/_uploads/B11moxjMWx.png) * 在畫布新增 Google Sheets 動作節點並選擇「Get row(s) in sheet」 * 使用既有的 Google Sheets 帳號憑證(例如 Google Sheets account 3) * 到 Google Cloud Console 確認專案內已啟用 Google Sheets API ## 以 Spreadsheet ID 連接註冊名單試算表 * 在 Google Sheets 節點的 Document 欄位改選「By ID」 * 從註冊名單試算表網址複製 Spreadsheet ID(只保留 ID 本體) ![image](https://hackmd.io/_uploads/HJxrsxiz-g.png) * Sheet 欄位用下拉選單選到 Sheet1,表示已成功讀取文件結構 ## 以 WhatsApp number 欄位過濾並取得該使用者整列資料 ![image](https://hackmd.io/_uploads/BybvogjMWe.png) * Filter 的 Column 選「WhatsApp number」 ![image](https://hackmd.io/_uploads/rkzKoeozWe.png) * Value 改用 Expression,拖入前一節點的 WA_ID 作為比對值 * 執行節點後會輸出該使用者的姓名、地址、WhatsApp number 等欄位資料 ## 第二次查表:依區塊找出值班人員 Email ![image](https://hackmd.io/_uploads/B1DsogjM-l.png) ![image](https://hackmd.io/_uploads/r1UTsloMWx.png) * 準備另一份試算表:Block Name 對應 On-duty Email * 再新增一個 Google Sheets「Get row(s)」節點,Document 改成另一份表的 Spreadsheet ID * Filter 的 Column 選「Block Name」 * Value 用 Expression,拖入使用者資料列中的 address two(例如 Block B)做比對 * 執行後輸出該 Block 對應的值班 email ## 啟用 Gmail API 以便從工作流程寄信 ![image](https://hackmd.io/_uploads/B1DAjeofZe.png) * 在同一個 Google Cloud 專案的 API Library 啟用 Gmail API ![image](https://hackmd.io/_uploads/Syxx2xiGZx.png) * 到 Credentials 建立新的 OAuth Client(Web application) * 從 n8n Gmail 憑證畫面複製 Redirect URL,貼回 Google Cloud 的 Authorized redirect URIs ![image](https://hackmd.io/_uploads/SJM-hlsf-x.png) * 複製 Client ID 與 Client Secret 回填 n8n,並進行 Sign in with Google 完成授權 ## 新增 Gmail「Send message」節點並組裝通知內容 ![image](https://hackmd.io/_uploads/HkAMhgszWe.png) * 新增 Gmail 節點選「Send message」 * To 欄位用 Expression,拖入「值班人員查表」節點輸出的 email * Subject 固定填「Panic」 * Message 改用 Expression,拖入「使用者查表」節點輸出的 first name、last name、address one、address two * Email type 選 text ## 節點測試與驗證結果 * 先用 pinned data 執行 Gmail 節點,確認信件成功送出且內容包含姓名與地址 * 到收件匣確認主旨為 Panic,內文含使用者姓名與地址資訊 ## 上線測試整條 WhatsApp → 查表 → 寄信流程 ![image](https://hackmd.io/_uploads/Byb4nxozbe.png) * 取消釘選測試資料,改用真實 WhatsApp 訊息觸發流程 * 將 workflow 切換為 Active * 從 WhatsApp 傳送指定訊號(例如「1」)到測試號碼觸發 * 確認流程會用 WA_ID 找到使用者資料、用 address two 找到值班 email,並寄出 Panic 通知信 --- # 6. Workflow 範例四:履歷審核/面試排程(Human in the Loop) ## 工作流程目標:自動安排第一輪面試(Senior C Developer) * 應徵者把履歷 PDF 放進指定 Google Drive 資料夾 * 工作流程逐一處理每份履歷,擷取重點摘要 * 摘要用 email 寄給面試流程負責人 * email 內提供「Approve / Decline」兩個按鈕讓負責人決策 * 若 Approve,AI agent 會在下週找最早可用時段,排一小時實體面試到主管 Google Calendar * 若 Decline,略過排程並處理下一份履歷 ## Human-in-the-loop 的核心設計 * 流程在關鍵節點暫停,等待人類做出批准或拒絕 * 人類負責判斷是否進入面試,AI 負責加速資訊整理與後續排程 * 透過摘要降低人工閱讀完整履歷的時間成本 ## 準備資料:Google Drive 履歷資料夾與 PDF ![image](https://hackmd.io/_uploads/Hy_SN7sMbl.png) * 使用 ChatGPT 生成多份履歷內容並匯出成 PDF(範例為 8 份) * 建立/指定一個 Google Drive 資料夾作為履歷投遞位置 * 工作流程會以該資料夾為來源批次處理所有 PDF ## 建立工作流程與 Trigger ![image](https://hackmd.io/_uploads/H1xPV7izWl.png) * 在 n8n 建立新 workflow,命名為「interview scheduler」 * 使用「Trigger manually」作為觸發節點,方便測試用按鈕手動啟動 * 也提到可改成監控 Google Drive 資料夾變動自動觸發,並在處理後移動檔案避免重複處理 ## 加入 Google Drive 節點:搜尋檔案 ![image](https://hackmd.io/_uploads/HkadE7sGbx.png) ![image](https://hackmd.io/_uploads/ByvKNXjz-x.png) * 新增 Google Drive 節點並選擇「Search files and folders」 * 目標是列出指定資料夾內所有履歷 PDF 的檔名與檔案 ID * 節點輸出會包含每個檔案的 ID 與名稱,供後續迴圈逐份處理 ## 建立 Google Drive OAuth 2 憑證(Google Cloud Console) ![image](https://hackmd.io/_uploads/HyzjEQiMWx.png) * 進入 Google Cloud Console 並選定專案(示範沿用既有專案) * 在 API Library 啟用 Google Drive API * 到 Credentials 建立 OAuth Client ID,應用類型選 Web application ![image](https://hackmd.io/_uploads/S1XhN7sfZl.png) * 設定 Authorized redirect URI(從 n8n 複製提供的 redirect URL) * 取得 Client ID 與 Client Secret,回填到 n8n 建立 credential * 使用 Google 帳號登入並授權存取後,連線成功即可在 workflow 中讀取 Drive ## 用資料夾 ID 與進階查詢只抓 PDF ![image](https://hackmd.io/_uploads/rk-AEmoM-l.png) ![messageImage_1765647593517](https://hackmd.io/_uploads/SJ9xBXiM-g.jpg) * 從 Google Drive 資料夾 URL 取得 folder ID * 在 n8n 的 Search Query 使用該 folder ID 作為 parents 條件 ![image](https://hackmd.io/_uploads/ByFbHQozbg.png) * 設定 search method 為 Advanced search ![image](https://hackmd.io/_uploads/rJ0MHmjzZg.png) * 用 mimeType=application/pdf 過濾非 PDF 檔案 * 設定 return all 以取得資料夾內全部履歷 PDF ## 執行與 Pin 搜尋結果以便後續測試 ![image](https://hackmd.io/_uploads/HJiQH7szbe.png) * 執行 Google Drive 搜尋節點確認能回傳所有履歷檔案的 ID 與檔名 * 將輸出結果 pin 起來,避免每次測試都要重新跑搜尋步驟 --- ## 目標與整體流程 * 逐份處理多個 PDF 履歷檔,每次只處理一份 * 每份履歷先下載、抽取文字、摘要,再送給人員審核 * 審核結果(同意/拒絕)決定該份履歷是否繼續往下走流程 ## 為何需要 Loop 節點 * 需要「一份履歷一個迭代」的順序處理,避免同時並行導致人審節點混亂 * 使用 Loop 可確保每次只處理一個 PDF,完成後才進下一個 * 每次迭代代表一份 CV 的下載、抽取、摘要、送審 ## 設定 Loop Over Items / Split In Batches ![image](https://hackmd.io/_uploads/rJVBHQjGZe.png) * 選用「Loop over items / Split in batches」類型節點 * Batch size 設為 1,確保一次只取一個 PDF * 節點會產生預設的 Replace me 等節點,示範中先刪除以保持流程乾淨 * Done 連接點代表所有批次都跑完後的後續動作,Loop 連接點代表每個批次都會跑一次的分支 ## 測試 Loop 的輸出行為 ![image](https://hackmd.io/_uploads/HkSLBmofbx.png) * 執行 Loop 節點後可看到它會先取清單中的第一個項目(例如 Janet Winslow CV PDF) * 後續會依序輪到下一個項目,直到所有 PDF 都處理完 ## 每次迭代下載 PDF ![image](https://hackmd.io/_uploads/BJ0wBXjfbg.png) * 在 Loop 分支上新增 Google Drive「Download file」節點 * 下載方式用「By ID」 ![image](https://hackmd.io/_uploads/Hya_SQsG-l.png) * File 欄位改成 Expression,拖入迭代項目的檔案 ID * 執行後會取得該 PDF 的 binary 檔案內容供下一步使用 ## 從 PDF 抽取文字 ![image](https://hackmd.io/_uploads/Hy7qr7izbl.png) * 在 Download file 後串接「Extract from file」節點並選「Extract from PDF」 * 執行後會把 PDF 內容轉成文字輸出(通常在 text 欄位) * 抽出的 text 將作為下一步 AI 摘要的輸入 * 為方便後續搭建與測試,可先把抽取結果 pin 起來 ## 下一步準備建立 AI Agent ![image](https://hackmd.io/_uploads/BkZhHXjG-x.png) * 在抽取文字後新增 AI Agent 節點 * AI Agent 會以抽取到的 text 作為輸入進行摘要 * 摘要結果將用於後續的人工審核與通知流程 --- ## 建立 AI Agent 節點與選擇模型 * 新增 AI Agent 節點 ![image](https://hackmd.io/_uploads/rybpB7jGZx.png) * 加入 Chat Model,選用 OpenAI Chat Models * 指定使用 GPT-4.1 Mini * 使用已設定好的 OpenAI 帳號與憑證連線模型 ## 設定 User Prompt 並注入 PDF 解析文字 ![messageImage_1765647818722](https://hackmd.io/_uploads/BJ6Rr7jf-l.jpg) ![image](https://hackmd.io/_uploads/HJc18QjzWe.png) * 將 AI Agent 的 prompt 來源設為「Define below」 * 貼上用來分析履歷(CV)的使用者訊息提示詞 * 以拖拉方式把「從 PDF 抽出的文字內容」節點插入 prompt 指定位置 * 確認 prompt 欄位顯示為可用狀態(綠色) ## 設定 System Prompt 角色與規則 ![image](https://hackmd.io/_uploads/BJlJZUmsGWe.png) * 新增 System Message 並貼上系統提示詞(Markdown 結構) * 指定角色為軟體公司 HR,目標職位為資深 C# 開發 * 要求擷取資訊:姓名、Email、C# 年資、資格亮點、工作經驗亮點、是否推薦 * 設定關鍵規則:C# 為最重要技能,若無 C# 經驗則不可推薦 ## 要求結構化輸出與 Output Parser ![image](https://hackmd.io/_uploads/BkSmI7jfbe.png) ![image](https://hackmd.io/_uploads/rJFE8Qiz-x.png) * 開啟「Require specific output format」 * 新增 Structured Output Parser 節點 ![image](https://hackmd.io/_uploads/ByTSLmoGWx.png) * 提供 JSON 範例格式作為 one-shot 範例 ![messageImage_1765647959221](https://hackmd.io/_uploads/S1LP87jzWx.jpg) * 欄位包含:fullName、email、cSharpYearsExperience、notableQualifications、notableWorkExperience、recommended ## 執行測試並驗證 AI 輸出 * 執行 AI Agent 節點確認可輸出符合 JSON 結構 * 例子輸出包含姓名、Email、C# 年資、資格與經驗摘要 * 依內容判斷 recommended 為 true 並建議進入第一輪面試 ## 加入 Human-in-the-loop 以 Gmail 寄信審核 ![messageImage_1765648017344](https://hackmd.io/_uploads/Sk-jU7sGZg.jpg) * 新增 Human in the loop 節點並選 Gmail ![image](https://hackmd.io/_uploads/BJgh87iG-x.png) * Resource 選 Message,Operation 選「Send and wait for response」 * 設定收件者為面試負責人信箱 * 設定 Email 主旨為「Approval required」 ## 組合 Email 內容與動態欄位 ![messageImage_1765648079310](https://hackmd.io/_uploads/SJCR8XiMbx.jpg) ![image](https://hackmd.io/_uploads/Symbw7jMWx.png) * Message 欄位切換為 Expression 以支援動態插值 * 內容包含:Applicant details、Notable qualifications、Notable work experience * 使用條件判斷字串輸出推薦語 * recommended 為 true 時顯示推薦 * recommended 為 false 時顯示不推薦 ## 設定審核按鈕並等待回覆 ![image](https://hackmd.io/_uploads/SkLXP7ozWl.png) * 在 Approval options 選「Approve and Disapprove」 * 執行節點後工作流進入等待狀態(waiting for input) ![image](https://hackmd.io/_uploads/BygYUvmsfWg.png) * 收件者在 Email 中看到 Approve 與 Decline 按鈕 ![image](https://hackmd.io/_uploads/S1IuDmoM-g.png) * 點擊後回傳結果至流程,輸出含 approved 布林值 ## 使用 If 節點依審核結果分流 ![image](https://hackmd.io/_uploads/H1XhwQifZg.png) * 新增 If 節點判斷 JSON.data.approved * approved 為 true 走 True 分支 * approved 為 false 走 False 分支 ## True 分支新增 AI Agent 以排程面試 ![messageImage_1765648344597](https://hackmd.io/_uploads/HycM_XizZl.jpg) ![image](https://hackmd.io/_uploads/Hk6V_7jGbe.png) * 在 True 連線新增 AI Agent 節點 * 目標是自動安排 1 小時面試 * 後續規劃使用 Google Calendar API 作為工具由 AI Agent 建立行程 * 新 AI Agent 需要替換預設 user prompt 為排程用提示詞 ---- ## Prompt 來源與使用方式 * 面試排程用的 prompt 已先寫好並放在 GitHub(interview scheduler AI agent prompt) * 為了省時未另外做 system prompt,而是把所有規則寫成一段 user prompt * 因為流程不是從 chat trigger 開始,所以在 AI agent 節點用「define + expression」把 prompt 貼到 user message 欄位 * prompt 內大量使用雙大括號動態欄位,會帶入應徵者姓名、email 等資料 ## Prompt 的任務角色設定 * 指定 AI 的角色是「協助在 Google Calendar 排面試」的助理 * 面試雙方包含面試官與應徵者,兩者 email 都會被用在事件建立中 ## Prompt 指令:抓取下週行事曆事件(Fetch events) * 要求呼叫「Get Calendar events」工具 * 抓取範圍限定為「下一個日曆週的週一 00:00 到週五 23:59」 * 若今天仍在本週,必須跳過本週,只看下週 * 以「當前日期」作為計算下一週區間的基準 ## Prompt 指令:找空檔(Find availability) * 解析抓回的事件,找出最早可用的 1 小時空檔 * 只在工作時段 08:00–18:00(當地時間)內選擇 * 不得與既有事件重疊 * 日期只允許下週週一到週五 ## Prompt 指令:建立面試事件(Schedule event) ![messageImage_1765648500036](https://hackmd.io/_uploads/HyqtO7oGWg.jpg) * 找到空檔後,呼叫「Create calendar event」工具建立行事曆事件 * 工具名稱必須和 prompt 內引用的名稱一致,否則模型無法正確呼叫 ## 在 AI agent 加入 Google Calendar 工具:Create event ![image](https://hackmd.io/_uploads/rJhoOmsfbg.png) * 在 AI agent 的 tools 區按加號新增 Google Calendar tool * 操作選擇建立事件(create) ![image](https://hackmd.io/_uploads/HJx6dmsGbl.png) * 需要建立 OAuth 2 憑證以授權存取 Google Calendar API * 在 Google Cloud Console 啟用 Google Calendar API 後建立 OAuth Client(Web application) * 設定 redirect URI,取得 client ID 與 client secret 回填到 n8n 憑證並完成授權同意 ![image](https://hackmd.io/_uploads/ByuJKQoMWl.png) ## 工具命名對齊 Prompt:create calendar event ![image](https://hackmd.io/_uploads/S1hJY7izZx.png) * 建立事件的工具需手動命名為「create calendar event」 * 目的是讓工具名稱與 prompt 指定的呼叫名稱一致 ## 再新增 Google Calendar 工具:Get events ![image](https://hackmd.io/_uploads/r1RZFmjzbx.png) * 另外新增第二個 Google Calendar tool 用來抓取既有事件 * 操作選擇取得多筆事件(get many) * 工具命名為「get calendar events」以對齊 prompt 中的工具名稱 * 兩個工具可共用同一組 Google Calendar OAuth 憑證(同一帳號授權) --- ## Create Calendar Event 節點的 AI 參數化設定 ![image](https://hackmd.io/_uploads/HkZ4KmjMZl.png) * Start 與 End 原本是 now 與 now+1h,改成由 AI 依提示自動決定 * 在 Start 欄位點星星按鈕,讓 AI 產生值 * 在 End 欄位點星星按鈕,讓 AI 產生值 * Calendar 欄位選擇對應的 Gmail 帳號,指定要寫入哪一個 Google Calendar ## 在日曆事件中加入需要顯示的欄位 ![image](https://hackmd.io/_uploads/ryD_KQifbe.png) * 新增 Attendees 欄位並加兩筆,分別代表面試官與面試者 * 每個 Attendee 欄位都點星星按鈕,讓 AI 從提示中抽出 email * 新增 Description 欄位並點星星按鈕,讓 AI 生成事件描述 * 新增 Summary 欄位並點星星按鈕,讓 AI 生成事件標題/摘要 ## Get Calendar Events 節點的 AI 參數化設定 ![image](https://hackmd.io/_uploads/ByecKQoGbe.png) * Calendar 欄位同樣選擇對應 Gmail 帳號,確保查同一個行事曆 * 設定 Return All 取得完整事件結果 * After 與 Before 欄位點星星按鈕,讓 AI 決定查詢的時間範圍 * 目的為讓 AI 先讀取既有行程,避免排到衝突時間並用於決定下週面試時段 ## 執行時遇到的錯誤與修正 ![image](https://hackmd.io/_uploads/rJDoFmiG-e.png) * 執行 workflow 出現「chat model sub node must be connected and enabled」 * 代表 AI agent 尚未掛上 Chat Model,無法運作 ![image](https://hackmd.io/_uploads/Skh2YXjM-l.png) * 在 AI agent 加入 OpenAI Chat Model 並選擇 GPT-4.1 mini 後即可正常執行 ## 測試結果驗證 * workflow 執行成功後會為該 CV 自動排定下週的面試事件 * 在 Google Calendar 可看到已建立的事件,例如「Interview with Janet…」並帶有 8–9 a.m. 時段 * Attendees 會帶入提示中提供的 email(示範用假 email) * 因測試時 pin 了資料,Human-in-the-loop 未被迫等待審核而直接通過 ## 取消釘選資料以回到真實流程 * 為正式跑完整批 CV,需要把先前 pin 的資料全部 unpin * 包含 Human-in-the-loop 的 Send a message 節點等任何被釘選的節點輸出 * 取消釘選後,流程會在每份 CV 進入人工審核時真正停下等待回覆 ## 依核准/拒絕結果接回 Loop 的流程調整 ![messageImage_1765648880818](https://hackmd.io/_uploads/BkZ-9QjMZg.jpg) * Human-in-the-loop 的 True 分支接到 AI agent,完成排程後再接回 Loop 節點以處理下一份 CV * Human-in-the-loop 的 False 分支直接接回 Loop 節點,略過 AI agent,不建立面試事件 * 兩條分支都回到 Loop,確保不論核准或拒絕都會繼續處理下一份履歷 ## 完整批次執行的預期行為 * Loop 以 batch size=1 逐份取出 CV * 每份 CV 先經人工審核 * 核准才會排面試並寫入日曆 * 拒絕則跳過排程直接進下一份 * 全部 CV 跑完後才會走到 Loop 的 Done 分支(若有接後續通知節點) --- ## 整體執行方式:8 份履歷逐一處理並卡在人類決策 * 工作流程會把資料夾內 8 份履歷依序處理 * 每份履歷都會寄出一封「需要決策」的 email * 流程每次都會暫停,直到人類按下 Approve 或 Decline 才會繼續下一份 ## 先修正 Prompt 內的 email 避免退信 ![image](https://hackmd.io/_uploads/Bkzm5miGbe.png) * prompt 裡 attendees 的 email 若是假的會造成 mail delivery error * 示範改成兩個有效 email,避免流程因退信干擾測試 * 實務上 email 應該由前面節點輸出欄位動態帶入,不會硬寫死 ## 執行工作流程後的停點:Send email/Send a message * 啟動「Execute workflow」後流程開始跑 * 流程會停在寄信相關節點,這就是 human-in-the-loop 的等待點 * 每次暫停代表當前履歷的審核信已寄出,等待人類回覆決策 ## Email 審核內容:摘要+推薦+按鈕 * 每封信包含 AI 摘要的履歷重點(姓名、email、C# 年資、經驗、資格等) * 信中提供 Approve 與 Decline 按鈕作為唯一操作介面 * 信內也包含 AI 的推薦結論(例如推薦/不推薦) ## Approve 的結果:AI agent 排入下週最早 1 小時面試 * 人類按 Approve 後流程繼續 * AI agent 會依 prompt 規則在面試官 Google Calendar 下週週一到週五、08:00–18:00 找最早可用 1 小時空檔 * 找到空檔後建立行事曆事件並排入面試 ## Decline 的結果:跳過排程直接處理下一份 * 人類按 Decline 後不會建立行事曆事件 * 流程直接進入下一份履歷的迴圈處理 * 示例中拒絕原因包含:不符合 C# 年資、技能不匹配、缺乏工作經驗等 ## 逐次審核的示範決策走向 * 前幾位候選人因年資與經驗較符合而多數被 Approve * 遇到不符合需求者(例如沒有 C# 經驗、轉向 Python、零工作經驗)則 Decline * 每次按下按鈕後流程立即從暫停處恢復並進入下一輪 ## 最終結果驗證:Google Calendar 生成面試行程 * 流程結束後到行事曆確認排程結果 * 例子中總共排了 6 場面試,每場 1 小時,集中在週一連續時段 * 行事曆事件標題與描述會包含「Interview with {候選人姓名}」等欄位,顯示 AI 已正確帶入與組裝資訊 --- # 7. 架構優化與進階應用 ## 目的:把 AI 排面試相關節點抽成子工作流程 ![image](https://hackmd.io/_uploads/BkVvcmoGWg.png) * 主流程節點越來越多,畫布像蜘蛛網一樣難維護 * 將「AI agent + 工具節點 + 模型子節點」抽出成 subworkflow 讓主流程更乾淨 * 子流程可重複被不同主流程呼叫,降低耦合並方便平行修改 ## 建立新的子工作流程並搬移節點 * 開新分頁建立新 workflow 作為子工作流程 * 在主流程中先移除/斷開原本 AI 排程區塊的連線 * 選取 AI 排程相關節點群組並複製 * 在新 workflow 中貼上這些節點 * 將子工作流程命名為可描述用途的名稱,例如 AI agent interview scheduler ## 在子工作流程加入 Execute Subworkflow Trigger 與輸入參數 ![image](https://hackmd.io/_uploads/BJ4_57oGZg.png) ![image](https://hackmd.io/_uploads/B1nFcQsGZg.png) * 在子工作流程新增 Trigger:「When executed by another workflow」 * 在 Trigger 節點新增要由主流程傳入的欄位 * 範例新增 full name(string) * 範例新增 email(string) * 將 Trigger 節點接到子流程內的 AI agent 起點,讓子流程接到參數後開始排程 ## 在主工作流程改用 Execute Subworkflow 呼叫子流程 ![messageImage_1765649039038](https://hackmd.io/_uploads/rkEicQif-l.jpg) * 在主流程新增「Execute Subworkflow」節點 * 在節點內選擇剛建立的子工作流程 ![image](https://hackmd.io/_uploads/S1Eh57oMWg.png) * 主流程會看到子流程要求的參數欄位(full name、email) * full name 改用 Expression,從主流程的資料來源拖入申請者姓名 * email 可先用固定值測試,實務上應從資料來源動態帶入 ## 常見錯誤:子流程內引用了已不存在的欄位 ![image](https://hackmd.io/_uploads/rJvpcmiMZx.png) * 改成子流程後,原本 prompt 中引用的欄位路徑會失效 * 典型現象是 prompt 或欄位表達式顯示紅色,執行錯誤提示 reference node 不存在 * 修正方式是把子流程內所有需要用到的姓名/Email 都改成引用 Trigger 參數 * 將 prompt 中「Interview with …」等片段改拖入 full name 參數,確保表達式變綠 ## 驗證子流程呼叫成功 * 重新執行主流程,流程會到 human-in-the-loop 節點等待審核 * 審核通過後會呼叫 Execute Subworkflow 節點 * 子流程執行成功代表 AI 排程邏輯已被成功抽離並可被主流程正常使用 ## 清理主流程並接回 Loop * 子流程可用後,主流程中原本被抽走的 AI agent 與其工具/模型節點可以刪除 * 將「Execute Subworkflow」節點後的輸出接回 Loop,讓每個申請者排程完成就處理下一份 * 讓主流程保留:人審判斷與迴圈控制,排程細節交由子流程負責 ## 觀察結果與提示 * 跑完整批後,日曆會出現多個面試事件,表示子流程在迴圈中被多次呼叫成功 * 排程是否完全避免衝突取決於提示詞與限制條件是否夠明確 * 這段示範重點是工作流程拆分與可重用性,不是保證排程策略永遠正確 --- # 8. 其他實用整合技巧 ## 額外示範的目的與範圍 ![image](https://hackmd.io/_uploads/HyoGj7of-g.png) * 這段不再逐步帶做工作流程,只展示一些延伸用法 * 目標是說明 n8n 能用不同介面與不同資料來源來驅動同一類型的流程 ## 範例:把排行聊天機器人改用 WhatsApp 當介面 * 原本用 n8n 內建的 chat message received 觸發器與機器人對話 * 改成接上 WhatsApp trigger 後,可直接用 WhatsApp 對機器人提問 * 示範在桌面版 WhatsApp 發問並收到排行回覆(例如最快的車、電影明星) * 因為有加 memory,所以追問「下一個五個」仍能延續前一題脈絡 ## 介面不侷限於 WhatsApp ![image](https://hackmd.io/_uploads/rJpQiXjMbe.png) ![messageImage_1765649217420](https://hackmd.io/_uploads/HkZLjXsfbx.jpg) * 同樣的聊天機器人也能換成 Discord、Telegram 等不同平台作為輸入介面 * 核心流程不變,只是替換觸發器與訊息通道 ## 範例:註冊流程不一定要用 n8n 內建表單 ![image](https://hackmd.io/_uploads/HJzvjXsGWg.png) * 原本的 panic app registration 用 n8n 產生的表單節點收集資料 * 若想把註冊表單放在自家網站或第三方網站,可改用 Webhook 接收 HTTP POST 資料 * Webhook 節點會提供專屬 URL,外部表單可把資料送到該 URL 觸發流程 ![messageImage_1765649262083](https://hackmd.io/_uploads/BkpuiXjGWx.jpg) * 示範用 Postman 對 Webhook 發送資料後,註冊資訊成功寫入 Google Sheets ## 範例:用 HTTP Request 節點呼叫自訂 API 取得資料 ![messageImage_1765649321483](https://hackmd.io/_uploads/rywniXjfZg.jpg) * 透過 HTTP Request node 對指定 API endpoint 發出 GET 請求 * 範例 endpoint 回傳電影清單、類型、評分與影評情緒等資料 * 回傳資料可作為聊天機器人或 AI agent 的資料來源 ## 在流程中加入程式碼節點做資料整理 ![messageImage_1765649347489](https://hackmd.io/_uploads/HJ-0oXjMWx.jpg) * 由於 API 回傳資料層級較深,直接給 AI agent 不易有效提示 * 使用 Code node(JavaScript)把巢狀結構攤平成較可讀的格式 * 程式碼用途是「格式轉換」,讓後續 AI agent 更容易消化資料並產生回覆 ## 另一種作法:把 HTTP Request 當成 AI agent 的工具 ![image](https://hackmd.io/_uploads/ryZknmofWx.png) * 除了用 HTTP Request node,也可把 HTTP request tool 加到 AI agent 的 tools * 實測用 tool 取得資料時,AI agent 能直接理解回傳內容,較不需要額外寫 JavaScript 攤平 ![image](https://hackmd.io/_uploads/HJh137jf-g.png) * prompt 指示 AI 用 HTTP request tool 取回電影資料,再用資料回答使用者問題 * 示範詢問驚悚類電影推薦,AI 先取資料再根據資料給出推薦清單與理由 # 9. 結尾 --- # Terminology * 工作流程自動化(Workflow Automation):以流程方式自動執行跨系統任務 * 開源平台(Open-source Platform):原始碼公開、可自由修改與部署的軟體 * n8n:一種以節點為核心的開源工作流程自動化工具 * 無程式碼(No-code):不需撰寫程式即可建立系統或流程的方法 * 低程式碼(Low-code):僅需少量程式即可完成複雜功能的開發模式 * 節點(Node):工作流程中的單一功能單位 * 工作流程(Workflow):由多個節點依序組成的自動化任務 * 流程設計(Flow Design):規劃節點連接順序與邏輯的過程 * 流程圖式開發(Visual Workflow):以圖形化介面建構流程的方式 * 條件判斷(Conditional Logic):根據條件決定流程分支的機制 * 迴圈(Loop):重複執行某段流程的控制結構 * 關注點分離(Separation of Concerns):將不同功能責任拆分的設計原則 * 抽象化(Abstraction):隱藏底層細節、只暴露必要介面的設計方式 * API(Application Programming Interface):系統之間溝通的標準介面 * REST(Representational State Transfer):以 HTTP 為基礎的網路服務架構風格 * RESTful API:遵循 REST 原則設計的 API * OAuth 2.0:用於授權第三方安全存取資源的標準協定 * Client ID:OAuth 2.0 中用來識別應用程式的識別碼 * Client Secret:OAuth 2.0 中用來驗證應用程式身分的密鑰 * 存取權杖(Access Token):授權後用於存取資源的憑證 * JSON(JavaScript Object Notation):常見的資料交換格式 * XML(eXtensible Markup Language):另一種結構化資料交換格式 * 互通性(Interoperability):不同系統能彼此協作的能力 * 節點畫布(Canvas):以視覺方式排列與連接節點的操作介面 * 觸發器(Trigger):啟動工作流程的事件或條件 * WhatsApp Trigger:由 WhatsApp 訊息觸發流程的節點 * Google Sheets 節點:與 Google 試算表互動的流程元件 * Gmail 節點:用於寄送電子郵件的流程元件 * 即時通知(Real-time Notification):事件發生後立即發送的訊息 * 緊急通報系統(Emergency Notification System):用於緊急狀況的即時求助機制 * 人在迴圈中(Human-in-the-loop):流程中需要人類決策或確認的設計 * 審核節點(Approval Step):等待人工核准後才繼續執行的流程步驟 * 檔案觸發(File Trigger):因檔案新增或變更而啟動的流程 * Google Drive 整合(Google Drive Integration):與雲端檔案系統互動的能力 * 二進位轉文字(Binary-to-Text Conversion):將檔案內容轉為可讀文字 * AI 代理(AI Agent):能在流程中執行推理與任務的智慧元件 * 履歷自動處理(Automated CV Processing):自動分析與篩選履歷的流程 * 任務暫停(Workflow Pause):流程等待外部事件再繼續的機制 * 行事曆排程(Calendar Scheduling):自動在行事曆中建立事件 * 系統整合(System Integration):將多個獨立系統組合運作 * 商業規則(Business Rules):流程中反映實際需求的決策邏輯 * 標準化通訊(Standardized Communication):依共同標準進行跨系統資料交換 * NAT(n8n Automation Tool):用於建立自動化工作流程的開源工作流引擎 * n8n 自架模型(Self-Hosting Model):使用者自行在伺服器上部署與管理 n8n 的方式 * VPS(Virtual Private Server):提供獨立資源與系統權限的虛擬化伺服器 * Hostinger:提供 VPS 與應用模板的一站式雲端主機服務商 * 預設模板(Preconfigured Template):已完成基本安裝與設定的系統映像 * 工作流程(Workflow):由多個節點組成、描述自動化邏輯的執行流程 * 節點(Node):工作流程中的基本單位,負責特定功能 * 觸發器(Trigger):啟動工作流程的起始節點 * Chat Trigger(On Chat Message):以聊天訊息作為輸入來源的觸發器 * AI Agent Node:n8n 中用來建立 AI 代理與聊天行為的核心節點 * Canvas(畫布):用來視覺化編排工作流程的操作介面 * 子節點(Sub-node):附加在主要節點下、提供額外功能的節點 * Chat Model Sub-node:為 AI Agent 提供語言模型能力的子節點 * LLM(Large Language Model):可進行自然語言理解與生成的大型模型 * OpenAI Chat Model:n8n 中用於連接 OpenAI 語言模型的節點 * GPT-4.1 mini:OpenAI 提供的輕量化高效語言模型 * 憑證(Credentials):用來驗證第三方服務存取權限的設定 * API Key:存取 OpenAI API 所需的密鑰 * OpenAI Platform:管理模型、API 與金鑰的官方平台 * Token(權杖):語言模型計費與生成的基本單位 * 成本控制(Cost Control):透過限制輸出與提示降低 API 使用費用 * Execute Step:在 n8n 中即時測試單一節點的功能 * JSON Expression:以 JavaScript 表達式方式存取資料的語法 * {{$json.input}}:n8n 中用來引用輸入資料的常見 JSON 表達式 * 資料流(Data Flow):資料在節點之間傳遞的方向與過程 * UX(User Experience):使用者在操作系統時的整體體驗 * 預設輸出(Default Output):模型未經限制時產生的原始回應 * 冗詞輸出(Verbose Output):包含多餘解釋文字的模型回應 * System Prompt(系統提示):用來控制模型行為與輸出格式的高優先級指令 * User Prompt(使用者提示):由使用者提供的實際問題或請求 * Prompt Engineering(提示工程):設計提示以引導模型產生期望輸出的技術 * 輸出格式控制(Output Formatting):限制模型回傳內容結構的技巧 * Required Output Format:n8n 中強制指定輸出格式的設定 * 精簡輸出(Concise Output):只保留必要資訊的回應形式 * 清單式輸出(List Output):以條列方式呈現結果的輸出格式 * Token Efficiency:以最少 token 完成任務的設計原則 * 開發者控制(Developer Control):由系統或開發者主導模型行為的能力 * 模型行為設定(Model Behavior Configuration):透過 system prompt 定義模型角色 * 文字雜訊(Text Noise):對任務無實質幫助的多餘文字 * 回應裁剪(Response Trimming):去除不必要內容以優化輸出 * 聊天機器人(Chatbot):以對話形式與使用者互動的 AI 系統 * 工作流程測試(Workflow Testing):在部署前驗證流程是否正確運作 * 模組化設計(Modular Design):以可組合節點建構系統的架構方式 * 系統提示(System Prompt):用來定義模型整體行為與角色的最高優先指令 * 系統訊息(System Message):在對話層級中設定模型規則與背景的訊息 * 角色定義(Role Definition):明確指定 AI 在任務中扮演的身份與職責 * 提示工程(Prompt Engineering):設計輸入以引導模型產生理想輸出的技術 * Markdown 格式(Markdown):用於結構化與提升可讀性的輕量標記語言 * 標題標記(Header):使用 Markdown 定義區塊結構的語法 * 指令區塊(Instruction Section):明確告知模型輸出規則的提示部分 * 輸出格式約束(Output Formatting Constraint):限制模型回應格式的規則 * 範例引導(Example-based Guidance):透過範例示範期望行為的方式 * 單次示例提示(One-shot Prompting):在提示中提供一個示例來引導模型 * 零樣本提示(Zero-shot Prompting):不提供範例、直接要求模型完成任務 * 少樣本提示(Few-shot Prompting):提供多個示例以幫助模型歸納模式 * 排名列表生成(Ranked List Generation):產生有順序項目清單的任務類型 * 子節點(Subnode):工作流程中附屬於主要節點的功能模組 * 聊天觸發器(Chat Trigger):由使用者對話啟動流程的機制 * 聊天模型(Chat Model):專門處理多輪對話的語言模型 * 憑證設定(Credentials Configuration):設定 API 存取權限的步驟 * OpenAI 整合(OpenAI Integration):透過 API 與 OpenAI 模型互動 * JSON 輸出(JSON Output):以結構化格式呈現模型回應的方式 * 畫布(Canvas):視覺化配置工作流程節點的介面 * 上下文(Context):模型用來理解當前輸入的歷史對話資訊 * 對話狀態(Conversation State):多輪互動中累積的語境資訊 * 記憶模組(Memory Module):用來保存與讀取過去對話的元件 * 簡易記憶(Simple Memory):僅保留最近對話的基礎記憶機制 * 上下文視窗長度(Context Window Length):模型可回顧的對話數量上限 * 會話識別碼(Session ID):用來區分不同對話線程的唯一識別 * 對話線程(Conversation Thread):同一 Session 下的連續互動 * 多輪對話(Multi-turn Conversation):包含多次來回問答的互動形式 * 語境遺失(Context Loss):缺乏歷史資訊導致模型無法理解指代 * 狀態保持(State Preservation):在互動中維持對話一致性的能力 * 記憶注入(Memory Injection):將歷史對話加入模型輸入的過程 * 聊天機器人(Chatbot):以對話形式回應使用者的系統 * 代理區別(Agent vs Chatbot):代理能執行行動,聊天機器人僅回應 * 行動能力(Action Capability):是否能影響外部系統的能力 * 工具連接器(Tool Connector):讓模型可呼叫外部功能的介面 * 記憶持久化(Memory Persistence):跨請求保存對話資訊的能力 * 互動回合(Interaction Turn):使用者與模型的一次問答循環 * 語意延續(Semantic Continuity):模型在對話中保持主題一致的能力 * 上下文解析(Context Resolution):理解省略或指代內容的能力 * 會話管理(Session Management):控制與維護對話流程的機制 * 輸出一致性(Output Consistency):模型回應符合既定規則的程度 * 專案管理(Project Management):在平台中組織與命名不同工作流程的結構 * 工作區(Workspace):用來集中管理多個流程與專案的環境 * 雲端主機平台(Hosting Platform):提供應用程式部署與存取的服務 * 使用者驗證(User Authentication):透過帳號憑證確認使用者身分的機制 * 第三方登入(Third-party Login):使用 Google 等外部帳號進行登入 * 應用程式管理(Application Management):管理已部署應用的設定與存取 * 表單觸發器(Form Submission Trigger):由表單提交事件啟動流程的節點 * 線上表單(Web Form):讓使用者透過瀏覽器輸入資料的介面 * 表單元素(Form Element):表單中的單一輸入欄位 * 必填欄位(Required Field):使用者必須填寫才能提交的表單欄位 * 欄位驗證(Field Validation):檢查輸入資料是否符合格式規則 * 電子郵件驗證(Email Validation):確保電子郵件格式正確的驗證機制 * 預設提示文字(Placeholder Text):顯示在輸入框中的引導文字 * 試算表(Spreadsheet):以列與欄儲存結構化資料的文件 * Google Sheets:Google 提供的雲端試算表服務 * 欄位標題(Column Header):試算表中每一欄的名稱 * 資料列(Row):試算表中一筆完整資料紀錄 * 唯一識別碼(Unique Identifier):用來唯一識別使用者或資料的欄位 * WhatsApp 號碼(WhatsApp Number):用作使用者識別的通訊帳號 * 表單資料擷取(Form Data Capture):收集使用者提交資訊的過程 * 節點執行(Node Execution):單一流程節點的實際運行 * 測試執行(Test Execution):在設計階段驗證節點輸出的操作 * 節點輸出(Node Output):節點執行後產生的資料結果 * 資料釘選(Data Pinning):固定測試資料以供後續節點重複使用 * 釘選資料(Pinned Data):被鎖定、不隨重新執行而改變的資料 * 隔離測試(Isolated Testing):單獨測試流程某一段的方式 * 節點串接(Node Connection):將多個節點依序連結成流程 * Google Sheets 節點:與 Google 試算表互動的流程元件 * 新增資料列(Append Row):在試算表底部加入新資料的操作 * 憑證(Credentials):用來驗證系統存取權限的設定 * API 授權(API Authorization):允許流程存取外部服務的安全機制 * OAuth 2.0 授權流程(OAuth 2.0 Authorization Flow):取得存取權杖的標準流程 * 權限範圍(Scope):定義應用可存取資源範圍的設定 * 表單提交回饋(Submission Feedback):提交後顯示給使用者的訊息 * 使用者註冊(User Registration):將使用者資料加入系統的流程 * 緊急應用註冊(Emergency App Registration):為緊急服務建立使用者名單 * 非正式住址(Informal Address):不含郵遞區號的簡化地址格式 * 社群安全應用(Community Safety Application):用於社區安全的系統設計 * 測試帳號(Test Account):用於驗證流程功能的實際帳號 * 表單預覽(Form Preview):在正式使用前查看表單外觀 * 流程初始化(Workflow Initialization):流程建立後的第一個啟動階段 * 畫布操作(Canvas Interaction):在視覺介面中編輯流程的行為 * 流程持續建構(Incremental Workflow Building):逐步擴充流程功能的方法 * OAuth 2.0:一種標準授權協定,用於讓第三方應用在不暴露密碼的情況下存取使用者資源 * Google Sheets API:Google 提供的介面,用於以程式方式讀寫試算表 * 憑證建立(Credential Creation):在第三方平台建立存取權限所需識別資訊的流程 * Client ID:OAuth 中用來識別應用程式身分的公開識別碼 * Client Secret:OAuth 中用來驗證應用程式身分的私密金鑰 * Google Cloud Console:用於管理 Google 雲端專案與 API 的控制台 * 雲端專案(Cloud Project):Google Cloud 中用來集中管理資源與權限的單位 * API 啟用(API Enablement):在雲端專案中允許特定 API 被使用的設定 * API Library:Google Cloud 中列出所有可用 API 的服務庫 * OAuth 同意畫面(Consent Screen):使用者授權第三方應用存取資料時顯示的畫面 * External Audience:允許非組織內部使用者進行 OAuth 授權的設定 * Test User:在 OAuth 尚未正式發布前,用來測試授權流程的帳號 * 授權範圍(Scope):OAuth 中定義應用程式可存取資料範圍的設定 * Callback URI:OAuth 授權完成後回傳結果的指定網址 * Redirect URI:OAuth 流程中將使用者導回應用程式的路徑 * 應用程式類型(Application Type):OAuth 憑證中定義應用運作形式的設定 * Web Application:以瀏覽器與 HTTP 為主要互動方式的應用類型 * Google 帳戶驗證(Google Authentication):透過 Google 登入進行身分確認的流程 * 授權成功(Authorization Success):OAuth 流程完成並取得存取權限的狀態 * 存取權杖(Access Token):OAuth 流程中用來實際呼叫 API 的臨時憑證 * n8n 憑證管理(Credential Management):在 n8n 中集中管理第三方連線資訊的機制 * Append Row:在試算表中新增一列資料的操作 * Google Sheets 節點:n8n 中用於操作 Google 試算表的功能節點 * 表單提交觸發器(Form Submission Trigger):在表單送出時啟動流程的觸發節點 * Pinned Data:在測試流程時固定輸入資料以便重複執行的功能 * Execute Node:在 n8n 中單獨執行某一節點以進行測試的操作 * 文件 ID(Document ID):Google 試算表在 URL 中的唯一識別碼 * Sheet ID:試算表中單一工作表的識別資訊 * From List:以動態列表方式選擇資源的設定選項 * JavaScript Expression:n8n 中用來動態取得資料的表達式語法 * {{$json}}:n8n 中存取輸入 JSON 資料的預設物件 * 動態欄位對應(Dynamic Field Mapping):將輸入資料對應到目標欄位的機制 * 拖拉綁定(Drag-and-Drop Binding):以拖曳方式建立資料對應關係的操作 * 欄位標頭(Column Header):試算表中用來定義資料意義的第一列欄位名稱 * 表單資料收集(Form Data Collection):透過表單取得使用者輸入資訊的流程 * 生產環境(Production Environment):正式對外提供服務的執行環境 * 測試環境(Test Environment):用於驗證流程正確性的非正式環境 * Production URL:正式環境中觸發工作流程的網址 * Workflow 啟用(Workflow Activation):將流程切換為可實際執行狀態的操作 * 狀態切換(Active Toggle):控制流程是否啟用的開關設定 * 資料寫入(Data Ingestion):將外部資料存入系統或資料庫的過程 * 表單驗證(Form Validation):檢查使用者輸入是否符合格式規範的機制 * 自動化資料同步(Automated Data Sync):透過流程自動將資料寫入外部服務的技術 * 事件觸發式流程(Event-driven Workflow):由外部事件即時啟動的自動化流程 * WhatsApp 通知系統(WhatsApp Notification System):以 WhatsApp 作為訊息入口的通報機制 * WhatsApp Business Cloud API:由 Meta 提供的官方 WhatsApp 雲端通訊介面 * 訊息觸發器(Message Trigger):因收到訊息而啟動流程的節點 * 緊急通報流程(Panic Notification Workflow):處理緊急求助事件的自動化流程 * 使用者識別(User Identification):根據唯一資訊辨識使用者的機制 * 唯一鍵查詢(Unique Key Lookup):使用唯一欄位查找資料列的操作 * 試算表查詢(Spreadsheet Lookup):從試算表中搜尋符合條件資料的動作 * 條件比對(Conditional Matching):比對輸入資料與既有資料是否一致 * 註冊驗證(Registration Validation):確認使用者是否已完成註冊的檢查流程 * 即時回應系統(Real-time Response System):在事件發生後立即反應的系統 * 值班人員(On-duty Operator):負責接收與處理通知的人員角色 * 郵件通知(Email Notification):透過電子郵件傳送事件資訊的機制 * 事件派遣(Incident Dispatch):根據通報資訊派遣應對資源的流程 * 私人保全系統(Private Security System):非政府的安全應變服務 * 社群安全通報(Community Safety Alert):社區層級的緊急求助機制 * 最小輸入設計(Minimal Input Design):在緊急情境下減少使用者操作的設計原則 * 單字元指令(Single-character Command):以極簡訊息代表明確行為的指令設計 * 高壓情境設計(High-stress UX Design):針對使用者慌亂狀態設計的介面思維 * 第三方平台整合(Third-party Platform Integration):與外部服務系統進行串接 * Meta 商業管理平台(Meta Business Manager):管理 Facebook 與 WhatsApp 商業應用的後台 * 商業資產(Business Asset):隸屬於商業帳戶的應用與資源 * 商業組合(Business Portfolio):集中管理多個應用與資產的結構 * 應用程式建立(App Creation):在平台上註冊新應用的流程 * 用例選擇(Use Case Selection):指定應用目的以啟用對應功能 * 用戶端應用(Client App):代表第三方系統與 API 互動的應用 * OAuth 2.0 授權(OAuth 2.0 Authorization):安全授權第三方存取資源的標準 * 用戶端識別碼(Client ID):OAuth 中識別應用身分的公開參數 * 用戶端密鑰(Client Secret):OAuth 中驗證應用身分的私密金鑰 * 存取權杖(Access Token):授權後用來呼叫 API 的憑證 * 權杖生成(Token Generation):取得 API 存取憑證的過程 * API 快速入門(API Quick Start):協助初次使用者設定 API 的流程 * 測試號碼(Test Phone Number):供開發與測試使用的臨時 WhatsApp 號碼 * 電話號碼 ID(Phone Number ID):WhatsApp Cloud API 用來識別號碼的識別碼 * 訊息接收端(Message Receiver):負責接收訊息的 WhatsApp 號碼 * 驗證流程(Verification Flow):確認號碼或帳戶所有權的安全步驟 * 驗證碼(Verification Code):用於身分驗證的一次性代碼 * 桌面版 WhatsApp(WhatsApp Desktop):在電腦上使用的 WhatsApp 應用 * 即時監聽(Listening Mode):流程節點等待事件發生的狀態 * 模擬測試(Simulation Testing):以測試資料驗證流程行為的方法 * Curl 指令(cURL Command):以命令列方式呼叫 API 的工具 * API 測試工具(API Testing Tool):用於測試 API 請求與回應的軟體 * 端對端流程測試(End-to-end Testing):驗證整個流程是否正確運作的測試方式 * 使用者識別(User Identification):透過唯一欄位(如 WhatsApp 號碼)確認使用者身分 * WA_ID(WhatsApp ID):WhatsApp 平台中用來唯一識別使用者的號碼 * 資料釘選(Pinned Data):在測試流程中固定節點輸入資料以便後續重複使用 * 節點測試(Node Testing):單獨執行某一節點以驗證其功能是否正確 * Google Sheets 查詢(Google Sheets Lookup):從試算表中依條件查找資料的操作 * Get Row Operation:從 Google Sheet 中讀取符合條件的單一資料列 * 條件過濾(Conditional Filtering):依指定欄位值篩選符合條件的資料 * 欄位比對(Column Matching):將輸入值與試算表中特定欄位進行比對 * 動態條件(Dynamic Condition):由流程中即時產生的值作為查詢條件 * WhatsApp Trigger:以 WhatsApp 訊息作為流程啟動來源的觸發機制 * 事件驅動流程(Event-Driven Workflow):由外部事件觸發執行的自動化流程 * 使用者註冊表(Registration Sheet):儲存使用者基本資料的試算表 * 區域分流(Zone-Based Routing):依地理區域或區塊將事件導向不同負責人 * 值班人員(On-Duty Personnel):負責即時處理事件或通知的指定人員 * 區塊對應表(Block Mapping Sheet):將區域或區塊對應到負責人的資料表 * 第二層查詢(Secondary Lookup):在流程中進行第二次資料查找以補充資訊 * 地址解析(Address Resolution):從資料表中取得完整地址資訊 * 關聯式資料查詢(Relational Lookup):跨多個資料表取得關聯資訊的流程 * Gmail API:Google 提供用於發送與管理電子郵件的程式介面 * 郵件通知(Email Notification):以電子郵件方式傳送事件或警示資訊 * Panic Notification:緊急事件觸發後發送的即時警示訊息 * Gmail Send Message Node:n8n 中用於發送電子郵件的功能節點 * OAuth 憑證重用(Credential Reuse):在多個節點中使用同一組授權設定 * API Scope:定義 API 可執行操作範圍的權限設定 * 郵件主旨(Email Subject):電子郵件中用於快速識別內容的標題 * 郵件內文(Email Body):電子郵件中包含詳細資訊的主要內容 * 變數插值(Variable Interpolation):在文字中嵌入動態資料的技術 * 多來源資料組裝(Multi-Source Data Assembly):整合多個節點輸出形成完整訊息 * 即時告警(Real-Time Alert):事件發生後立即通知相關人員的機制 * 自動派遣(Automated Dispatch):系統自動將事件資訊交付處理單位 * 實體安全流程(Physical Security Workflow):用於處理實體安全事件的自動化流程 * 工作流程啟用(Workflow Activation):將流程切換為可接收事件的狀態 * 生產測試(Production Test):在正式環境中驗證流程端到端運作 * 訊息解析(Message Parsing):從收到的訊息中擷取關鍵資訊 * 單一指令觸發(Single-Command Trigger):使用極簡輸入(如「1」)啟動流程 * 容錯設計(Fault Tolerance):流程在非預期輸入下仍能正常運作的能力 * 節點串接(Node Chaining):將多個節點依序連接形成完整邏輯 * 流程可擴展性(Workflow Scalability):支援更多使用者或區域而不需重構的能力 * 多用戶支援(Multi-User Support):流程可同時處理多位使用者事件 * 多區域通知(Multi-Zone Notification):依不同區域發送不同通知對象 * 即時監控(Live Monitoring):持續觀察流程是否正常運作的能力 * 端到端流程(End-to-End Workflow):從事件輸入到通知輸出的完整自動化流程 * 人在迴圈(Human-in-the-loop):流程在關鍵決策點暫停,等待人類判斷後再繼續 * 面試自動化流程(Interview Scheduling Automation):結合 AI 與人工審核的招聘流程 * 履歷處理流程(CV Processing Workflow):自動讀取、分析並整理求職者履歷 * 指定資料夾監控(Designated Folder Processing):以特定 Google Drive 資料夾作為輸入來源 * PDF 履歷文件(PDF Resume Files):以標準化格式提供的求職文件 * 批次處理(Batch Processing):一次處理多份履歷文件的流程設計 * 迴圈節點(Loop / Iteration):針對每一份履歷逐一執行相同處理步驟 * AI 履歷摘要(AI Resume Summarization):由語言模型萃取重點資訊 * 關鍵資訊萃取(Key Information Extraction):擷取技能、經驗、背景等重要內容 * 招聘決策支援(Hiring Decision Support):輔助招聘人員快速做出判斷 * 電子郵件審核介面(Email-based Review Interface):透過 Email 提供摘要與操作選項 * 核准按鈕(Approve Action):允許候選人進入下一輪面試的人工操作 * 拒絕按鈕(Decline Action):終止候選人流程的人工操作 * 流程暫停(Workflow Pause):等待人類輸入前不繼續執行後續步驟 * 條件分支(Conditional Branching):根據人工選擇走不同流程路徑 * 面試排程代理(Interview Scheduling Agent):負責安排面試時間的 AI agent * Google Calendar 整合(Google Calendar Integration):自動寫入面試行程 * 最早可用時段搜尋(Earliest Available Slot):尋找下週最早可行的一小時時段 * 實體面試(In-person Interview):非線上、需排定地點與時間的面試形式 * 人工裁量權(Human Discretion):由人類負責最終錄取與否的關鍵判斷 * 手動觸發器(Manual Trigger):透過按鈕手動啟動流程以便測試 * Google Drive 搜尋節點(Google Drive Search Node):列出指定資料夾內檔案 * 進階搜尋(Advanced Search):使用條件式查詢精準篩選檔案 * MIME 類型過濾(MIME Type Filtering):只處理 application/pdf 類型檔案 * 資料夾 ID(Folder ID):唯一識別 Google Drive 資料夾的參數 * 父資料夾查詢(Parents Query):限定搜尋結果來源的查詢條件 * OAuth 2.0 驗證(OAuth 2.0 Authentication):安全授權存取 Google Drive * Google Drive API:用於存取與管理雲端檔案的 API * API 啟用(API Enablement):在 Google Cloud Console 中啟用服務 * 用戶端 ID 與密鑰(Client ID / Client Secret):OAuth 驗證必要憑證 * 授權重新導向 URI(Redirect URI):OAuth 授權流程中的回呼位址 * 使用者同意畫面(Consent Screen):請求使用者授權資料存取 * 檔案中繼資料(File Metadata):包含檔名與檔案 ID 的結構化資訊 * 測試資料釘選(Pinned Test Data):固定輸出以利後續節點開發與測試 * 迴圈節點(Loop Node):在工作流程中重複執行一組節點的控制結構 * Loop Over Items:n8n 中用來逐筆處理輸入項目的迴圈節點 * 批次大小(Batch Size):每次迴圈處理的項目數量設定 * 單筆處理(Single-Item Processing):一次只處理一個資料項目的執行模式 * for 迴圈(For Loop):程式設計中用於依序重複執行的控制結構 * while 迴圈(While Loop):依條件判斷是否持續執行的迴圈結構 * 人在迴圈中(Human-in-the-Loop):需要人類審核或決策才能繼續的自動化流程設計 * 文件逐筆審核(Per-Document Review):每份文件需獨立進行人工審核的流程模式 * CV(Curriculum Vitae):求職者的履歷文件 * PDF 處理流程(PDF Processing Pipeline):從下載到解析 PDF 的一連串處理步驟 * 迭代(Iteration):迴圈中單次重複執行的流程單位 * 並行處理(Parallel Processing):多個項目同時處理的執行方式 * 序列處理(Sequential Processing):項目依序、一個接一個處理的方式 * 流程控制(Flow Control):決定節點執行順序與條件的機制 * Done 連接點(Done Connector):表示迴圈所有項目處理完成後的出口 * Google Drive 節點(Google Drive Node):n8n 中用來操作 Google Drive 的功能節點 * 檔案下載(File Download):從雲端儲存服務取得檔案的操作 * Download File Node:n8n 中專門用來下載檔案的節點 * 檔案 ID(File ID):Google Drive 中每個檔案的唯一識別碼 * Binary Data(二進位資料):以非文字形式儲存的檔案內容 * Expression 模式(Expression Mode):允許使用動態資料與變數的設定模式 * 動態欄位綁定(Dynamic Field Binding):將流程中即時資料綁定到節點參數 * Extract From File Node:n8n 中用來解析檔案內容的節點 * PDF 文字擷取(PDF Text Extraction):將 PDF 內容轉換為可讀文字的技術 * 文件解析(Document Parsing):將結構化或非結構化文件轉成可用資料 * OCR 前處理(OCR Preprocessing):在文字擷取前對文件進行的準備流程 * 純文字輸出(Plain Text Output):移除格式後的文字內容 * Text Field:節點輸出中存放文字資料的欄位 * 資料釘選(Pinned Data):固定測試資料以便重複執行節點 * 節點單步執行(Execute Step):只執行單一節點以進行測試 * 節點輸入面板(Input Panel):顯示節點接收資料的介面 * 節點輸出面板(Output Panel):顯示節點執行結果的介面 * 履歷摘要(CV Summarization):將履歷內容濃縮成重點摘要的任務 * AI Agent:能自主接收輸入並產生智慧輸出的模型節點 * 文件理解(Document Understanding):模型理解文件語意與結構的能力 * 工作流程組裝(Workflow Assembly):逐步建立完整自動化流程的過程 * 節點替換(Node Replacement):以新節點取代預設或占位節點的操作 * Replace Me 節點(Placeholder Node):迴圈建立時自動產生的佔位節點 * 節點刪除(Node Deletion):移除不需要節點的操作 * 人工審核節點(Human Review Step):需要人類確認或決策的流程節點 * 招聘流程自動化(Recruitment Workflow Automation):自動處理履歷與審核流程的系統設計 * 流程可讀性(Workflow Readability):讓流程結構清楚易懂的設計特性 * AI 代理(AI Agent):可自主規劃並執行任務的智慧程式,能依目標做決策與調用工具 * 節點(Node):工作流程中的功能模組,用於處理資料或觸發動作 * 工作流程(Workflow):以節點串接的自動化流程,描述資料如何被處理與傳遞 * 低程式碼(Low-code):以圖形化配置為主、少量程式即可完成自動化與應用邏輯 * 流程編排(Orchestration):協調多個服務/節點的執行順序、依賴關係與資料流 * 連線器(Connector):用來連接外部服務(如 Gmail、Google Calendar、OpenAI)的整合元件 * 憑證(Credentials):存取外部服務所需的授權資訊(如 API Key、OAuth Token) * OAuth 2.0(OAuth 2.0):常用授權框架,讓應用以委派方式存取使用者資源 * API 金鑰(API Key):用於識別與授權呼叫 API 的密鑰字串 * 聊天模型(Chat Model):以對話形式輸入輸出、擅長指令理解與生成的語言模型 * GPT-4.1 mini(GPT-4.1 Mini):OpenAI 的輕量化聊天模型選項,平衡成本與效能 * 系統提示(System Prompt):用來定義模型角色、規則與行為邊界的最高優先級指令 * 使用者提示(User Prompt):用來描述當前任務需求與輸入內容的提示文字 * 提示工程(Prompt Engineering):設計提示結構以提升模型輸出品質與可控性的方法 * 護欄(Guardrails):限制模型行為的規則集合,用於降低偏差與錯誤輸出風險 * 結構化輸出(Structured Output):要求模型以固定結構(如 JSON)回傳可機器解析的結果 * 輸出剖析器(Output Parser):將模型輸出解析成結構化資料並驗證欄位格式的元件 * 一次示例(One-shot):在提示中提供單一範例以引導模型學習輸出格式與風格 * JSON 架構(JSON Schema):描述 JSON 欄位型別、必填與約束的規格,用於驗證輸出 * 布林值(Boolean):只有 true/false 的資料型別,常用於條件判斷 * 條件分支(Conditional Branching):根據條件結果走不同流程路徑(true/false) * IF 節點(IF Node):在流程中依條件運算結果進行分流的節點 * 人在迴圈(Human-in-the-loop):把人類決策嵌入自動化流程以提升可靠性與治理能力 * 核准/拒絕(Approve/Disapprove):在人在迴圈中以按鈕回傳決策狀態的互動機制 * 送出並等待回覆(Send and Wait for Response):發送訊息後暫停流程直到收到人工回應的操作模式 * 工作流程暫停(Workflow Pause):流程因等待外部事件(如人工核准)而停止後續執行的狀態 * 回呼(Callback):外部系統在事件發生時回傳資料以續跑流程的機制 * 事件觸發(Event Trigger):由外部事件(如按鈕點擊、收信)啟動或推進流程的方式 * Gmail 節點(Gmail Node):用於發送郵件、等待回覆等 Gmail API 整合的流程元件 * Google Calendar API(Google Calendar API):用於建立與查詢行事曆事件的介面 * 工具呼叫(Tool Calling):模型根據需求呼叫外部工具/API 以完成任務的能力 * 函式呼叫(Function Calling):以明確函式簽名讓模型產生參數並觸發特定操作的機制 * 工具鏈(Toolchain):多個外部工具與模型協作完成任務的整體組合 * PDF 擷取(PDF Extraction):從 PDF 中提取可用文字內容以供後續分析 * 文件解析(Document Parsing):將非結構化文件轉為可處理的結構化/半結構化資料 * 履歷(CV/Resume):求職者的經歷與技能文件,作為篩選與面試依據 * 候選人評估(Candidate Screening):依職缺要求對履歷進行初步審核與篩選 * 摘要生成(Summarization):將長文本壓縮為重點資訊的生成式任務 * 招募建議(Hiring Recommendation):基於條件與內容分析給出的錄用/面試建議結論 * 資料綁定(Data Binding):把上游節點輸出欄位映射到下游節點輸入欄位的機制 * 表達式(Expression):在節點欄位中用語法動態引用/運算資料(如 JavaScript 表達式) * 內嵌條件(Inline If):在文字模板中用條件運算決定要插入哪段內容的寫法 * 範本訊息(Template Message):由固定文本與動態欄位組合而成的可重用訊息格式 * 管線(Pipeline):資料依序通過多個處理步驟形成的端到端處理鏈 * 分離關注點(Separation of Concerns):將流程切分為獨立職責模組以提升可維護性與可測試性 * 釘選資料(Pin Data):固定某次執行輸出作為測試輸入,方便逐步開發與除錯 * 步進執行(Step Execution):只執行單一節點/步驟以驗證輸入輸出是否正確 * 面試排程(Interview Scheduling):依候選人核准結果自動建立面試事件並寫入行事曆 * 一小時面試(One-hour Interview Slot):常見面試時長配置,用於行事曆事件的時間區塊設定 * 系統提示(System Prompt):用於定義 AI agent 的角色、行為規則與整體目標 * 使用者提示(User Prompt):直接提供給模型的任務指令與操作流程描述 * 動態欄位(Dynamic Fields):在提示中以變數形式插入即時資料 * 表達式語法(Expression Syntax):用於在工作流中動態計算或引用資料 * 工具呼叫(Tool Calling):語言模型主動呼叫外部 API 以完成任務 * Google Calendar API:用於讀取與建立行事曆事件的介面 * 事件建立(Create Calendar Event):在行事曆中新增排程的操作 * 事件查詢(Get Calendar Events):取得既有行事曆事件的操作 * 工具命名對齊(Tool Name Alignment):提示中工具名稱需與實際工具一致 * OAuth 2.0 授權(OAuth 2.0 Authorization):安全存取 Google Calendar 的驗證機制 * Client ID(用戶端 ID):OAuth 驗證中識別應用程式的識別碼 * Client Secret(用戶端密鑰):OAuth 驗證中用於簽署請求的私密金鑰 * 重新導向 URI(Redirect URI):OAuth 授權流程完成後的回呼位置 * API 啟用(API Enablement):在雲端專案中啟用特定服務 * 雲端專案(Cloud Project):Google API 資源與權限的管理單位 * 行事曆事件衝突(Calendar Conflict):新事件與既有事件時間重疊的狀況 * 可用時段搜尋(Availability Search):找出未被占用的時間區段 * 工作時間限制(Working Hours Constraint):限定排程只能在特定時段內 * 下一週範圍(Next Week Window):僅考慮下個曆週的時間區間 * 本週排除(Current Week Exclusion):避免在當前週安排事件 * 最早可用時段(Earliest Available Slot):符合條件的第一個可行時間 * 在地時區(Local Time Zone):以使用者所在時區計算時間 * 行事曆同步(Calendar Synchronization):AI 與行事曆資料保持一致 * 多方參與者(Multiple Attendees):事件中包含面試官與應徵者 * 電子郵件欄位(Email Field):用於邀請行事曆參與者的聯絡資訊 * 事件標題(Event Title):行事曆中顯示的活動名稱 * 事件描述(Event Description):補充活動內容的文字說明 * AI 排程代理(AI Scheduling Agent):負責自動安排時間的 AI agent * 任務分解(Task Decomposition):將排程流程拆解為多個明確步驟 * 規則導向提示(Rule-based Prompt):以明確規則約束模型行為 * 工具鏈(Tool Chain):多個工具依序被 agent 呼叫完成任務 * 狀態感知(State Awareness):模型理解目前時間與既有事件狀態 * 指令明確化(Instruction Explicitness):以具體條件降低模型誤判 * API 操作模式(API Operation Mode):如 create、getMany 等操作類型 * 多工具整合(Multi-tool Integration):單一 agent 使用多個外部工具 * 憑證重用(Credential Reuse):多個工具共用同一組 OAuth 憑證 * 行事曆讀寫權限(Calendar Read/Write Scope):允許存取與修改事件的權限 * 自動化排程(Automated Scheduling):無需人工介入完成排程 * 任務可靠性(Task Reliability):確保排程結果符合所有限制條件 * 時間邊界檢查(Time Boundary Validation):防止事件超出允許範圍 * 提示對齊(Prompt–Tool Alignment):提示內容與實際工具行為一致 * API 回傳解析(API Response Parsing):解析行事曆事件資料 * 無系統提示設計(No System Prompt Setup):僅以單一大型提示控制行為 * AI 工具協調(AI Tool Orchestration):模型負責協調多個工具的使用順序 * 建立行事曆事件(Create Calendar Event):透過 API 在行事曆中新增排程事件的操作 * 行事曆工具節點(Calendar Tool Node):n8n 中用來操作行事曆的功能節點 * Start Time(開始時間):行事曆事件開始的時間欄位 * End Time(結束時間):行事曆事件結束的時間欄位 * AI 決策欄位(AI-Determined Field):由 AI agent 根據提示自動填入的欄位 * Star Selector(星號選擇器):n8n 中用來標示欄位由 AI 決定的設定按鈕 * Prompt-Based Scheduling:根據自然語言提示自動決定排程時間的技術 * 行事曆選擇(Calendar Selection):指定事件要建立在哪一個行事曆中的設定 * Google Calendar:Google 提供的雲端行事曆服務 * Attendees(與會者):行事曆事件中參與會議的人員清單 * 多與會者設定(Multiple Attendees):在單一事件中設定多位參與者 * AI Attendee Extraction:由 AI 從提示中推斷與會者身分與電子郵件 * Event Description(事件描述):行事曆事件中顯示的詳細說明文字 * Event Summary(事件摘要):行事曆事件的標題或簡要說明 * 欄位自動填寫(Automatic Field Population):由 AI 自動產生欄位內容的機制 * Get Calendar Events:查詢既有行事曆事件的工具節點 * 行事曆衝突檢查(Calendar Conflict Checking):檢查既有事件以避免時間重疊 * After / Before Filter:用來限制查詢事件時間範圍的條件 * AI 時間推理(Temporal Reasoning):AI 根據上下文判斷合適時間的能力 * Interview Scheduling(面試排程):自動安排面試時間的流程 * 面試官行事曆(Interviewer Calendar):負責面試人員的個人行事曆 * 可用時段判斷(Availability Detection):找出行事曆中可用時間的能力 * Chat Model Sub-node:為 AI agent 提供語言模型推理能力的子節點 * OpenAI Chat Model:連接 OpenAI 語言模型的節點 * GPT-4.1 Mini:適合工具調用與推理任務的輕量語言模型 * 模型附加(Model Attachment):將語言模型連接至 AI agent 的設定 * Workflow Execution Error:因缺少必要節點導致的流程錯誤 * Human-in-the-Loop Approval:需要人工核准才能繼續流程的設計 * Approval Flag(核准旗標):表示申請是否通過的人為決策欄位 * Boolean Routing(布林分支):依 true / false 決定流程走向的控制方式 * True Connector:在條件成立時被觸發的流程出口 * False Connector:在條件不成立時被觸發的流程出口 * Conditional Bypass:在特定條件下略過部分流程的設計 * Interview Creation Logic:僅在核准時才建立面試事件的邏輯 * Loop Continuation:完成一次處理後回到迴圈處理下一筆資料 * Loop Back Connection:將節點輸出重新接回迴圈起點的連線方式 * Sequential CV Processing:依序處理每一份履歷的執行模式 * Data Unpinning:移除測試用固定資料以進入正式執行模式 * Test Mode vs Production Mode:測試執行與正式執行流程的差異 * Workflow Finalization:完成所有節點串接後的最終流程狀態 * Automated Interview Pipeline:從履歷審核到面試排程的全自動流程 * Calendar Event Validation:確認行事曆事件正確建立的檢查步驟 * AI Tool-Oriented Agent:以工具調用為核心能力的 AI agent * Prompt-to-Action Mapping:將自然語言提示轉換為具體操作的能力 * 人在迴圈(Human-in-the-loop):流程在關鍵節點暫停,必須由人類做出決策才能繼續 * 履歷批次處理(Batch CV Processing):一次對多份履歷依序執行相同流程 * 迴圈執行(Loop Execution):針對清單中的每個項目重複執行工作流 * 人工審核節點(Manual Review Step):需要人類確認或否決的流程步驟 * 電子郵件審核(Email-based Approval):透過 Email 接收摘要並進行決策 * 核准操作(Approve Action):允許候選人進入下一階段流程 * 拒絕操作(Decline Action):終止候選人後續流程 * 流程阻塞(Workflow Blocking):在等待人類回應前暫停自動化流程 * 條件式分支(Conditional Branch):根據核准或拒絕走不同路徑 * 履歷摘要生成(Resume Summarization):由語言模型提取履歷重點 * 關鍵技能萃取(Skill Extraction):從履歷中辨識核心技術能力 * 年資判斷(Experience Assessment):根據履歷估算相關工作經驗 * AI 推薦意見(AI Recommendation):模型對是否進入面試的建議 * 第一輪面試(First-round Interview):初步篩選候選人的面試階段 * 自動排程(Automated Scheduling):由系統自動決定並建立行程 * 行事曆事件建立(Calendar Event Creation):在 Google Calendar 新增事件 * 時段最佳化(Time Slot Optimization):選擇最早且符合條件的可用時間 * 連續排程(Back-to-back Scheduling):多個面試依序無縫安排 * 工作時段限制(Business Hours Constraint):僅允許在指定工作時間內排程 * 事件避免衝突(Conflict Avoidance):避免與既有行程時間重疊 * 事件描述自動生成(Auto-generated Description):自動填入面試相關說明 * 參與者邀請(Attendee Invitation):將面試官與應徵者加入事件 * 電子郵件地址驗證(Valid Email Requirement):避免因無效信箱導致寄送失敗 * 動態資料綁定(Dynamic Data Binding):以流程資料填入事件欄位 * AI Agent(AI 代理):具備決策與工具使用能力的語言模型實體 * 工具調度(Tool Orchestration):AI 決定何時呼叫哪個外部工具 * Google Calendar 整合(Google Calendar Integration):與行事曆系統直接互動 * 狀態可視化(Execution Visualization):即時顯示流程目前執行位置 * 節點暫停顯示(Paused Node Indicator):視覺化呈現流程等待中狀態 * 任務完成狀態(Workflow Completion):所有迴圈與節點成功結束 * 面試資料一致性(Interview Data Consistency):確保行事曆與履歷資料對齊 * AI 輔助決策(AI-assisted Decision-making):由 AI 提供建議、人類做最終決定 * 半自動化流程(Semi-automated Workflow):結合自動化與人工介入 * 招聘流程自動化(Recruitment Automation):以工作流系統簡化招聘作業 * 任務可靠性(Process Reliability):確保每位候選人都被正確處理 * 流程可追蹤性(Process Traceability):每一步決策與結果皆可回溯 * 多候選人處理(Multi-candidate Handling):同一流程支援多名應徵者 * 資料驅動排程(Data-driven Scheduling):依據實際行程資料決定時間 * 人工最終裁量(Human Final Authority):AI 不取代人類最終決策權 * 實務導向 AI 應用(Practical AI Application):AI 用於真實商業流程 * 低程式碼自動化(Low-code Automation):以最少程式碼完成複雜流程 * 招聘效率提升(Hiring Efficiency Improvement):縮短篩選與排程時間 * 流程可重用性(Workflow Reusability):可套用於其他職缺或招聘情境 * AI 與工具協作(AI–Tool Collaboration):語言模型與外部系統協同工作 * 子工作流程(Subworkflow):被其他主工作流程呼叫、負責特定功能的獨立流程 * 主工作流程(Parent Workflow):負責整體流程協調、可呼叫多個子工作流程的流程 * 工作流程模組化(Workflow Modularization):將大型流程拆分成可重用模組的設計方式 * 關注點分離(Separation of Concerns):將不同功能責任拆開以降低耦合度的設計原則 * Execute Subworkflow Node:n8n 中用來呼叫並執行子工作流程的節點 * 子流程觸發器(Subworkflow Trigger):允許子工作流程被外部流程啟動的起始節點 * 輸入參數(Input Parameters):由父流程傳遞給子流程的資料欄位 * 參數映射(Parameter Mapping):將父流程資料對應到子流程輸入欄位的過程 * Full Name 欄位(Full Name Field):用來傳遞候選人姓名的字串型參數 * Email 欄位(Email Field):用來傳遞電子郵件地址的字串型參數 * 可重用流程(Reusable Workflow):可被多個主流程重複呼叫的流程設計 * 流程抽象化(Workflow Abstraction):將複雜邏輯封裝成高階流程的做法 * 節點群組化(Node Grouping):將多個相關節點視為一個邏輯單元 * 流程可維護性(Workflow Maintainability):流程在修改與擴充時的穩定與易維護程度 * 流程可讀性(Workflow Readability):流程結構是否清楚易懂的特性 * 蜘蛛網效應(Spaghetti Workflow):節點過多、連線混亂的流程狀態 * 節點抽離(Node Extraction):將部分節點移出主流程的重構行為 * 流程重構(Workflow Refactoring):在不改變功能的前提下改善流程結構 * 版本隔離(Version Isolation):子流程修改不影響主流程的設計特性 * 平行開發(Parallel Development):不同流程可同時獨立開發的工作模式 * 流程依賴管理(Workflow Dependency Management):管理主流程與子流程之間的關係 * 介面契約(Interface Contract):父流程與子流程之間約定的輸入輸出規格 * 動態資料注入(Dynamic Data Injection):在執行時將變數資料傳入子流程 * JavaScript Expression 驗證:n8n 中以顏色顯示表達式是否合法的機制 * 綠色表達式(Valid Expression):表示動態資料綁定成功的狀態 * 紅色表達式(Invalid Expression):表示資料參照錯誤或不存在的狀態 * 參照錯誤(Reference Error):流程中引用不存在欄位所產生的錯誤 * Prompt 重構(Prompt Refactoring):因流程結構改變而調整提示內容的行為 * Prompt 參數化(Prompt Parameterization):將提示中的固定文字改為動態變數 * 硬編碼(Hardcoding):在流程中直接寫死資料值的做法 * 動態 Prompt(Dynamic Prompt):由流程資料即時組合而成的提示內容 * Human-in-the-Loop 節點:需要人類回應才能繼續流程的節點 * 流程暫停(Workflow Pause):等待人工決策時流程停止執行的狀態 * 核准流程(Approval Flow):根據人工核准結果決定後續行為的流程 * 條件分支(Conditional Branching):依不同條件導向不同流程路徑的設計 * 流程回圈銜接(Loop Reconnection):子流程完成後回到主流程迴圈的設計 * 面試排程子系統(Interview Scheduling Subsystem):專責處理面試時間安排的流程模組 * 行事曆避免衝突(Calendar Conflict Avoidance):避免重複排程的邏輯設計 * Prompt Engineering(提示工程):設計高品質提示以提升 AI 行為準確度的技術 * 初學者流程設計(Beginner Workflow Design):以可理解性優先的流程設計取向 * 功能示範導向(Concept Demonstration):以說明概念為主而非追求完美實務的設計方式 * 工作流自動化(Workflow Automation):以節點串接方式自動執行多步驟任務 * 聊天機器人整合(Chatbot Integration):將對話式 AI 接入工作流 * 即時訊息觸發器(Message-based Trigger):透過即時通訊收到訊息即啟動流程 * WhatsApp 介面整合(WhatsApp Integration):以 WhatsApp 作為使用者互動入口 * 記憶模組(Memory Module):讓聊天機器人保留對話上下文 * 簡易記憶(Simple Memory):只保留最近幾輪對話的上下文 * 對話上下文(Conversation Context):理解使用者前後問題的語意關聯 * 多通道介面(Multi-channel Interface):同一 AI 可透過不同平台互動 * Discord 整合(Discord Integration):將工作流接入 Discord 機器人 * Telegram 整合(Telegram Integration):將工作流接入 Telegram 機器人 * Webhook(網路掛鉤):透過 HTTP 接收外部系統傳入資料 * HTTP POST 請求(HTTP POST Request):由外部系統送資料到工作流 * 表單資料收集(Form Data Collection):接收使用者填寫的結構化資料 * 第三方網站整合(Third-party Website Integration):將外部網站與工作流連接 * 測試端點(Test Endpoint):供開發與測試使用的 Webhook URL * 生產端點(Production Endpoint):正式環境使用的 Webhook URL * API 呼叫(API Call):向外部服務請求資料或功能 * HTTP Request 節點(HTTP Request Node):在工作流中主動發送 HTTP 請求 * REST API(RESTful API):以 HTTP 為基礎的服務介面標準 * 自訂後端服務(Custom Backend Service):自行開發並提供資料的 API * JSON 回應(JSON Response):API 回傳的結構化資料格式 * 資料階層結構(Hierarchical Data):巢狀結構的資料格式 * 資料扁平化(Data Flattening):將巢狀資料轉為平面結構 * Code 節點(Code Node):在工作流中執行自訂程式碼 * JavaScript 處理(JavaScript Processing):用 JS 轉換與整理資料 * 資料轉換(Data Transformation):改變資料格式以利後續處理 * AI Agent(AI 代理):具備推理與工具使用能力的語言模型 * 工具節點(Tool Node):提供 AI 可呼叫的外部功能 * HTTP Request 工具(HTTP Request Tool):供 AI agent 主動呼叫 API * 工具驅動推理(Tool-based Reasoning):AI 依需求選擇並使用工具 * 外部資料來源(External Data Source):非模型本身提供的資訊 * 資料增強生成(Data-augmented Generation):結合外部資料生成回應 * 領域知識查詢(Domain-specific Query):針對特定資料集提問 * 情境式推薦(Contextual Recommendation):依資料與問題給建議 * 電影推薦系統(Movie Recommendation System):依類型與評分推薦電影 * 情感分析(Sentiment Analysis):判斷評論文字的正負面傾向 * 資料可讀性(Data Readability):資料是否易於模型理解 * 低程式碼平台(Low-code Platform):以最少程式碼完成應用開發 * 視覺化流程設計(Visual Workflow Design):以圖形方式設計流程 * 系統擴展性(System Extensibility):可自由整合新介面與服務 * 事件驅動架構(Event-driven Architecture):由事件觸發流程執行 * 即時互動應用(Real-time Interactive Application):可即時回應使用者輸入