里程碑
之前用Dify串接make.com做的美食小助手,只要輸入美食(ex:台南火車站拉麵)小助手就能推薦附近的店名、地址、網址、概述等等。
SaLt TT @salt0429發布於 已編輯
因為n8n可能來不及做完,想說先把這個發上來。
製作中的n8n概述:
想做一個能讓LINE群組中得討論更方便的小助手,功能如下:
- 群組破冰小遊戲:讓一開始組隊討論的大家能活絡氣氛。
2.檔案照片的存放小站:LINE一直有一個我很討厭的痛點----檔案跟照片很常過期,有這個暫存器就能解決每次大費周章找到檔案後不會因為過期而怒火中燒了!
3.會議記錄小秘書:記錄下每次會議的內容,就不用再額外開notion輸入了!也想看看能不能導入語音討論時轉逐字稿的功能。
那以下是LINE美食小助手的上課內容簡報與課堂逐字稿:
LINE美食小助手簡報(在新分頁開啟)
那我悶直接從使用契機開始,我的話我可能晚上備課,然後就備課到很晚,或者是我們自己學生可能要準備一些專題等等,然後就會遇到一個問題,半夜肚子餓,但你不知道現在有什麼好吃的。
像這張圖,他半夜很想吃牛肉麵,不知道大家知不知道這個梗哈哈。所以我想解決這個半夜不知道吃啥的問題,我就想到可以寫一個現在很有名的 AI agent,讓他整理出現在有什麼可以吃的。然後再以賴的形式來傳遞我想要的資訊給我,也比較方便。
那來介紹一下什麼是 AI agent,相信大家都有聽過 AI,然後 AI agent是現在比較紅的一個自動化機器人。以前在聊天機器人 chat bot,只能一問一答,那現在的 Ai agent也就是這個智慧代理,除了有大腦、雙手與嘴巴,比較特別是它可以使用,像是 Google search tool這個工具,然後來實現這個自動化的流程。
那我們等一下來實作部分會是,先從把 dify 讓它成為我們 AI agent的大腦,那雙手部分都是用 Google search,來實現這個自動查找的功能;拿那嘴巴的話就是他的 output輸出。我們會限定它來說這餐廳的名稱,然後它地址跟他的網頁連接,來讓我們比較好來判讀。
大家可以看到第七是我們的 prompt engineening,就是我們的翻白話文來講是提示詞工程。那在我們等一下的實作中,我們也會使用dify,就是我們剛剛說的大腦,得把 LLN 節點裡面的 system 的提示詞裡面來完成它。
一個完美的提示詞工程通常包含四個要素。首先有這個第一個是賦予角色,可以看到上面的圖,告訴我們要告訴 Ai,他是誰,然後他會用對應的專業口吻來說話。比方說我們等一下會用「你是一位親切熱情的台灣在地美食達人」。
接下來我們提供我們的背景資料,然後告訴 Ai他的資料來源是什麼。如果以等等的實作為例的話,就是等一下我們會用google search 工具抓的餐廳搜尋結果。
接下來我們必須設定好嚴格的限制,如果我們沒有設定好,AI 就會開始亂跑。像是我們得要求Ai 推薦的三家餐廳,其地址開頭必須包含縣市名稱,來確定我們的 Google search不會查找到錯誤的資訊。
最後我們必須規範出我們的輸出格式,就是 output。我們要訂定他必須清楚地列出店名,然後詳細地址,然後用一句話簡短敘述等等的。
那為什麼會需要我們的這個提示詞工程,不能直接問就好?因為如果我們沒有把我們的dify的大腦建好的話,我們直接把我們想要的東西傳給 Gemini ,不加任何提示詞,他的直覺反應可能會回我們一大串密密麻麻的文字介紹,也沒有地址也沒有網址不方便也不易讀。
因為 AI 太聰明了,但他也太發散了,他沒有辦法聚焦到我們想要的東西。他可能查到錯誤資訊,像是我們給他台鐵火車站附近的拉麵,他可能查到隨便一間拉麵,然後就直接傳給你。我們需要給他一點邊界,不然他就會開始通靈,就是俗稱的 AI 幻覺。
那什麼是 AI 幻覺,ai幻覺就是大型語言模型,是我們俗稱的 LLN,生產看似真實,但實際上錯誤、無根據或不合邏輯的資訊,可以看到我們的標題有一個藍藍的連結,把它點下去,會跑出我之前用的一個 AI 的頁面。
可以看到我問Ai 台南哪裡是有室內好玩的地方,那他回答我的一個奇美,然後石鼓接下來是大魯閣這個 186 的滑輪場。
但這是有一個問題,大魯閣這個 186,它其實已經歇業了,這就是一個 AI 幻覺的一個小例子。
然後他後面我跟他講提醒他之後,他才發現他自己給的資訊是有時空差異的。
那回到我們的簡報,可以看到那這個 AI 幻覺它產生的原因是什麼?可能有訓練數據不足或是有偏差,或者是對模型在地理領域的理解有限、複雜的邏輯推論等等的。那它又該如何緩解運用?
我們可以使用外部資料知識庫rag來強化它的大腦核心,或是我們要強化事實的核對流程,這就是我們等等實作會做的。然後再增加一些限制,讓我們的 Ai agent不要那麼的發散,也讓他可以有所依據。
那什麼是大型語言模型,也就是我們的LLN,可以看到這一頁我們在整個流程進行的時候,我們會從使用者發過來的問題,比方說台南火車站等等拉麵什麼的,然後丟給我們的大腦LLM,然後他就會把手伸向我們的google search來做查找動作。最後才用output 輸出,輸出我們的店名、地址還有連接等等等。
那如果我們沒有 LLM,就等同我們沒有這個大腦,他就會比較像是一個自動化的腳本,就是裡面會是固定刻死的一套流程。那它會出現一些問題,比方說我們稍微打錯字,機器人就會直接當機,他沒有辦法理解我們的意思,這樣就會變成需要一字不差地提出我們的問題,如果有打錯,他就可能會顯示「對不起,聽不懂我們在說什麼」。
接下來是第二點的,他可能直接在 output的地方跑出一些網頁原始碼的,或者是JSON陣列等等的亂碼,然後就會沒有我們清楚的易讀性,我們看不懂,就沒有真正回答到我們的問題。
第三點是他沒有辦法做複雜的邏輯檢查與過濾。如果 LLM在 Google裡面查到什麼提前就突出什麼,比方說他如果查到是台北拉麵店,那就直接會直接推出這個台北拉麵店的來當做我們的回覆,這樣來當做他的回答資訊,甚至不知道他現在是否歇業等等。
那接下來下一頁是我們的實戰特殊流程的概述,我們會講三個特殊用詞:API、JSON跟WEBHOOK,是三個名字,是我們等等在實作會遇到的比較特殊的名詞。
它們同時也是網路世界通訊的一個像黃金鐵三角的東西,會串接好我們的 AI 大腦 DIfy,還有我們的使用者的手機就是 line。如果沒有這三個,我們的 DIfy 跟賴就會沒有辦法溝通。
可以看到我們第一個是我們的 API,那這些都是手繪的,因為我覺得這樣會比較清晰、好理解。
那來解釋我們的 API,這個應用程式介面,他是軟體與軟體之間互相通訊的專業管道與傳話筒。像網頁網址是做給人類的眼睛看,然後用我們的滑鼠來點的,而 API 的網址就是做給機器人之間來互相溝通與呼叫。
可以看到我這樣示意圖,這是兩個機器人用 API來互相對話、呼叫。如果用便當店來做比較的話,它就很像是便當店的點餐櫃台與外送專線。機器人不需要知道 Dify內部的廚房要怎麼煮飯,Gemini 要怎麼思考,它只需要通過這個專用櫃台,也就是 API,把它使用者的訂單丟過去,Dify這個廚房就會開始做菜。
接下來講我們的 json,就是資料格式,它是一個可以把它當做一個公規點菜單。它是網頁城市通用的標準資料打包格式,因為不同的軟體像是line跟dify,他們內部的城市結構不同,要避免雞同鴨講,我們溝通的時候就是必須用一種由大括號和雙引號還有冒號組成的乾淨文字格式來傳遞資料。
如果同樣以便當店來比喻,Json 就像是那一個光規格的菜單,上面有清清楚楚地寫著主菜,排骨飯、數量等等的。這樣不管在家便當店是台灣人開的或是外國人開的,像一看我們的菜單就會知道客人點的是什麼。
接下來我們的 webhook ,這個即時觸發機制,它是一種主動通知的機制。可以把它理解成是像是外送員的主動叮咚。
傳統的做法是像是輪詢法,就是像瘋子一樣,每隔 1 秒鐘就去賴後台問說有沒有人傳訊息,有沒有人傳訊息。但webhook則是當事件發生的那一瞬間,伺服器就會主動,並且立刻把這封訊息傳送到我們指定的像之後等等會在實作時會使用的 Make.com 網址上。
如果用便當店來比喻的話,這種傳統做法就是在家裡每隔 5 分鐘自己開門看外送到了沒?他又累又沒有效率,但 webhook就是我們在我們make的家外面裝一個鈴鐺,當外送員到我們家的時候就會叮咚一下,然後我們就會知道外送來了,就不用一直去查看。
當使用者在手機案發送的時候,賴就會主動把 make的門鈴,然後把 Json 的菜單來遞過去。
大家還可以看到我們下一頁是我們的介面比較,為什麼要用 Make,而不是用 Zapier或是 N8N?
首先我們看到第一個是 Zapier的頁面,是一頁頁的疊起來的,它是比較像是垂直清單式、就像文字表格一樣。那 N 8N 的話,它比較是像是方塊水平的圖形,有點像電路圖。最後是我們的 make,它是圓圈,然後一圈一圈連線起來的,就像地鐵圖的視覺,就相對其他兩個來得更簡單方便、好理解。
這是它更多的比較,第一個 zapier就是一層一層堆疊起來的,然後 make 就是水流圓圈流線性的。然後 N八就像剛剛講的像電路板一樣,是一個方格狀。
那在除錯部分,zapier 它因為它是一層一層的嘛,所以它要點進每一層的裡面去找,就會很複雜,很難除錯;那如果是make 的話,他在每一個節點如果有錯誤,就可以直接顯示出,我們只要找到那個錯誤的圓圈圈,把它點下去就可以開始 de bug 了。
那 n8n的話,因為它是要看 Json 的城市嘛,所以就會非常的困難,就沒有那麼好直觀地去查錯。
然後是我們的 Data,我們的資料可視性。像剛剛講的 Zapier,zapier 它是垂直的疊起來,所以它也沒有那麼的易讀。
那 make 的話可以看到我們的資料還是以流水性的從 A 流到 B,我們可以看到它整個過程是它的流動變化。那 n8n它也是由code來組成的,就是城市嘛。
因此相較於 zapier 跟 N8N,我覺得 make 是相對更好理解、易懂的。
接下來是實作的課程~~有興趣的話可以跟著簡報一起做(內容都是免費的)
0 個愛心0 則留言
登入並驗證手機後就能留言。登入