使用 Dify API 快速建立一個包含前後文記憶的對談機器人

Dify 這個產品我就暫時先不介紹了,它找到了一個挺好的切入點跨入AI Agent市場。讓不喜歡(或不擅長)寫太多 Code 的開發人員,也可以快速的建立一個具有前後文、記憶的對談機器人。

其實若單就設計 Chat Bot 來談,它本質上和 GPTs 有那麼一點點像,你只需要給一個 system prompt ,再加上一點點的資料上傳做為 RAG 的數據來源,就可以生出一隻有模有樣的對談機器人。

但 GPTs 做出來的 Chat Bot 被綁在 ChatGPT 的 UI 裡面,你不容易把它跟 LINE Bot (LINE 官方帳號) 或其它 UI (例如 MS Teams) 串在一起,而 Dify 呢? 則給你了一個 chat-messages API,讓你能很快的實現這個功能,把你在 Dify 平台上做好的 Chat Bot 轉變成可以正式運行的 LINE Bot 或 其它 Bot。

這也是今天我們要介紹的部分。

建立 Assistant

我們先用 Dify 以底下這個 system prompt 建立了一個請假助理:
圖片

發佈後,你可以在Dify 內建的 Web UI 上測試:
圖片

你會發現,這個 chat bot 已經有著基本的記憶,然後可以依照 system prompt 完成對談和任務。

不要問我在這邊建立出一個假單有什麼用,正常情況下是要直接讓 chat bot 寫入資料庫(例如 HR 系統,直接完成請假),只是我們還沒談到這一段,這部分以後再展開來談。

chat-messages API

好,透過上面那樣建立一個對談機器人超容易,且內建就有了記憶和前後文的功能。讓開發人員快樂的不得了。跟使用無腦 GPTs 生成術差不多。然而,如果只能在 Web 上用,不能串接 MS Teams、LINE…等介面,做了也是白搭。

但,Dify 貼心的提供了 API,我們來試試看。先Gen個 API Key:
圖片

生成了 API key 之後,你只需要透過底下這樣的 rest api,即可進行呼叫:
圖片

你會發現,開發人員只要使用單一的這一個 https://api.dify.ai/v1/chat-messages API 即可進行對談。每次只需要透過 query 輸入用戶說的話,response 中的 answer 則是 LLM (Assistant) 回應的結果。

等同是 Dify 在LLM的外面,包裹了一層小框架,讓你不用直接與 LLM API 打交道,省去了一些工,也便於抽換LLM。

說實在的,這部分得到的結果和 langchain 與 semantic kernel 有那麼點像,但 langchain 與 semantic kernel 都只是開發框架,而 Dify 則有個開發平台作為操作UI,這一點讓進入障礙降低不少。

呼叫 API 來進行對談時,其中有一個關鍵,你可能會發現,如果只是這樣透過API進行對話,似乎沒有像是 Web UI 這樣支援前後文和記憶!? 沒錯,你必須在首輪(第一次)對談之後,從 response JSON 中取得 conversation_id ,並且在後續的API呼叫中,夾帶在送出的JSON訊息裡面,就可以持續維持同一個對談的前後文記憶:
圖片

等同是,Dify 也幫你處理了對談記憶的部分。
如果宏觀整個 Chat Bot 的開發,Dify在整體的架構中的角色整理在底下:

圖片

從上圖中你可以發現,本質上,Dify 的 API 幫你包裹了與 LLM 打交道的部分(包含RAG甚至一些後續的 workflow),讓你比較容易串接或替換不同的 AI Model,並且幫你處理了記憶和前後文的部分,讓開發變得容易很多。同時又有操作UI 和 API,讓它可以更容易實作和測試,也難怪竄起如此之快。

後話:
這對我來說是一個很大的提醒,本以為整個 AI/LLM 市場中,大部分位置都被主流大廠佔據,要找一個能獲利的立足點似乎不太容易,但 Dify 這個才一年多(2023年初開始)的產品,能在這種狀況下異軍突起,也是異數。


參考 課程:
ChatGPT(Azure OpenAI) 對談機器人開發實戰

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

VS Code的字體大小

使用 Dify 建立企業請假機器人

使用Qdrant向量資料庫實作語意相似度比對

使用C#開發LineBot(3) - 使用LineBotSDK發送Line訊息