Skip to content

Latest commit

 

History

History
100 lines (50 loc) · 3.7 KB

File metadata and controls

100 lines (50 loc) · 3.7 KB

LLM + LINE Bot 開發難題。

首先,直接回答您的問題:強烈建議不要用「每 5 秒 Notify 一次思考中」這個做法。 原因有二:

使用者體驗極差:手機一直震動會讓使用者感到煩躁,導致封鎖。

技術與流程混亂:使用者要在 LINE OA(官方帳號)和 LINE Notify 之間跳轉,體驗很割裂。

而且有一個致命的技術限制您必須知道:Reply Token 是「一次性」的,且時效只有約 60 秒(1分鐘)。

這意味著:如果您收到使用者問題後,立刻 Reply「思考中」,這張 Reply Token 就失效了。等 2 分鐘後 LLM 算好了,您無法再用同一個 Token 回覆答案,這時您只能用 Push Message(要扣錢)。

為了達到**「不扣額度(免費)」且「體驗良好」**的目標,這裡提供給您三個針對長耗時任務(Long-polling Task)的標準解決方案:

方案一:主動查詢法 (Polling Button) —— 最推薦、零成本

這是目前最流行、開發成本最低的省錢做法。既然不能主動推播,就讓使用者「主動」來要答案(產生新的 Reply Token)。

流程:

使用者問問題。

Bot 立刻 Reply 一個 Flex Message:

文字:「收到!這是一個複雜的問題,我需要大約 2 分鐘思考。」

按鈕:文字寫「查看答案」,Action 設定為 Postback 或 Message(例如傳送 action=check_status&task_id=123)。

使用者等待一會兒,點擊「查看答案」。

(關鍵) 此時使用者觸發了新的事件,Bot 拿到新的 Reply Token。

Bot 後端檢查 LLM 跑完沒:

沒跑完:Reply「還在努力運算中,請再等一下... 💦」。

跑完了:Reply 正式答案。

優點: 完全免費,邏輯簡單。

缺點: 使用者需要自己按按鈕確認(但在 2 分鐘的等待下,這通常是可以接受的)。

方案二:LIFF 網頁法 —— 體驗最好,但開發較難

如果您希望體驗像 ChatGPT 網頁版一樣,看著字慢慢跑出來,或者不希望使用者一直按按鈕,可以用 LIFF (LINE Front-end Framework)。

流程:

使用者問問題。

Bot Reply 一個連結:「點此開啟 AI 思考視窗」。

使用者點擊,在 LINE 裡面打開一個半版或全版的網頁 (LIFF)。

網頁端透過 WebSocket 或 API 輪詢您的後端。

當 LLM 算好時,直接顯示在網頁上。

優點:

完全不消耗訊息額度(網頁流量不計費)。

可以做 Streaming(字一個一個打出來的效果),體驗最像原生 AI。

缺點: 需要會寫前端網頁 (HTML/JS),開發成本較高。

方案三:Loading 動畫法 (僅限 60秒內)

如果您能將 LLM 優化到 60 秒內 回覆,可以使用 LINE 官方提供的「Loading 動畫」。

API: POST /v2/bot/chat/loading/start

流程:

收到使用者訊息。

呼叫 Loading API(使用者聊天室下方會出現「...」的載入動畫)。

後端讓程式 sleep 或等待 LLM(必須在 60 秒內完成)。

LLM 完成後,呼叫 Reply Message 回傳答案。

注意: 如果超過 60 秒,Reply Token 會過期,這個 Request 會失敗。所以這只適合短中程思考的 AI。

總結建議

針對您的 30秒 ~ 2分鐘 的情境:

不要用 Notify 狂炸使用者,也不要用 Push Message。

最佳解法(方案一):

用戶提問 -> Reply「收到,思考中(附帶一個『查看結果』的按鈕)」。

用戶點按鈕 -> 檢查 DB -> 有結果就 Reply 答案,沒結果就 Reply 進度條。

這樣做一毛錢都不用花,而且能確保使用者是在準備好的時候接收訊息。

Loading api + 超時「working…我稍後推播跟你說」+完成後「notify:完成,想知道我的想法嗎?(請送出:好)」