第 8 章

建立聊天流 Chatflow

聊天機器人會對話但沒有流程,工作流有流程但不會對話。聊天流(Chatflow)是兩者的合體:能記住上下文的多輪對話 × 節點編排的處理能力。前面學的所有招式,在這裡合而為一。

本章目標

要學什麼
理解 Chatflow 的概念,做出融合對話與流程的應用
學會的技能
Chatflow 的結構、對話記憶的運作、會話變數與變數賦值、多模態輸入
能做出什麼
記得住顧客資訊的客服、需要暫存狀態的預約系統、多模態高機能聊天機器人

8.1為什麼最後才講 Chatflow?

因為它是集大成者。一條 Chatflow 裡可以同時出現:

與工作流最大的差異:工作流跑完就結束;Chatflow 的「開始」節點自帶 sys.query(使用者這句話)與對話歷史,每一輪對話都會重新走一遍流程,但記憶延續

8.2最小的 Chatflow:開始 → LLM → 直接回覆

建立方式:工作室 →「建立空白應用」→ 選擇「聊天流」(具有記憶的複雜多回合對話的工作流程)。畫布預設就給你三個接好的節點:

聊天流畫布:開始、LLM、直接回覆三節點
圖 8-1Chatflow 的最小結構。注意結尾不是工作流的「輸出」而是「直接回覆」節點——把內容以對話訊息的形式回給使用者。

在 LLM 節點寫入 SYSTEM 提示詞(我們延續星光咖啡的世界觀):

你是「星光咖啡」的親切店員,用繁體中文與顧客閒聊並回答問題,語氣溫暖。
記住顧客在對話中提到的個人資訊(名字、喜好),並在之後的回答中自然運用。
重點
Chatflow 的 LLM 節點有一個工作流沒有的開關:「記憶」(預設開啟)。開啟後,之前幾輪的對話會自動附加到模型的上下文中,「記憶窗口」控制帶入幾輪——這就是 Chatflow「記得你」的原理。

8.3實測:它真的記得

按「預覽」開啟對話面板,進行一段兩輪測試:第一輪自我介紹(「我叫小美,最喜歡焦糖瑪奇朵」),第二輪考它(「你還記得我叫什麼、喜歡喝什麼嗎?」):

聊天流記憶測試,機器人記得使用者的名字與喜好
圖 8-2第二輪的回答:「當然記得呀,小美!」——名字與焦糖瑪奇朵都答對了。這在單輪的工作流中是不可能的。

8.4會話變數:更持久、更可控的記憶

LLM 的「記憶」只是把對話原文塞回上下文,輪數一多就會超出窗口。會話變數(Conversation Variables)是更工程化的方案——在整個會話期間存活的具名變數:

  1. 宣告變數畫布右上工具列的變數按鈕 →「會話變數」→ 新增,例如 customer_name(String)、favorite_drink(String)。
  2. 擷取並寫入在流程中加入「參數提取器」節點從對話擷取名字與喜好,接一個「變數分配器(變數賦值)」節點把值寫入會話變數。
  3. 隨處取用之後任何一輪對話、任何節點都能引用 conversation.customer_name——即使聊了一百輪也不會忘。
LLM 記憶會話變數
原理對話原文塞回上下文具名變數持久保存
壽命受記憶窗口限制整個會話
精確度模型自行理解,可能漏寫入什麼就是什麼
適合閒聊語境、短對話訂單狀態、表單進度、使用者檔案

8.5多模態:讓對話收圖片與文件

Chatflow 的「功能」面板(右上角「功能」按鈕)可開啟圖片上傳文件上傳。開啟後:

小技巧
進階範本可以參考首頁範本庫的「Question Classifier + Knowledge + Chatbot」:問題分類器先判斷來意,一路接知識檢索(查 FAQ)、另一路接一般 LLM(閒聊),最後都匯入直接回覆——這是客服 Chatflow 的標準架構,把第 3、6 章與本章全部串了起來。

8.6本章回顧

應用做完了,接下來讓它走出 Dify——下一章用 API 把這些應用接進你自己的系統。