HI!大家好,我是 Shammi!😊
一路走到 Day 29,我的 SDGs 智慧聊天機器人已經從零開始,學會了智慧回覆、多輪對話,甚至成功搬家到了雲端!這真是令人振奮的旅程!然而,當我在 LINE 和 Telegram 兩個平台獨立運行著機器人時,我的心中總有個更宏大的願景:**如果它們能共享同一個「大腦」,提供完全一致且無縫的智慧體驗,那該多好!
今天,Day 29 的挑戰,將會是為我的 SDGs 聊天機器人描繪出這幅「最終整合」的藍圖。這不是一個現階段需要完全實作的艱鉅任務,而是一個高瞻遠矚的架構願景,指引著我未來將機器人從「各自為政」引導至「統一戰線」的道路。
這是一個讓我的機器人從「功能完善」邁向「未來卓越」的思考步驟!GOGOGO!
要實現跨平台統一,首先要明確,我們真正要共用的是什麼?答案是機器人的「大腦」和「思考邏輯」!
共享的 AI 後端核心: 這指的是我的 RAG 系統(檢索增強生成)。它包含了機器人所有的智慧來源和處理能力:
sdgs_faiss.index
和 stored_chunks.pkl
檔案,它們包含了所有的 SDGs 知識。這些核心功能是機器人智慧的來源,它們是平台無關的。這意味著,無論是 LINE、Telegram 還是未來可能出現的 Web 介面,它們都將呼叫同一套底層的 Python 函式來獲取答案。這是實現「無縫體驗」的基礎。
對於需要 Webhook 的平台(如 LINE),以及我想要建立一個基於網頁的聊天介面,它們都屬於 Web 應用程式的範疇。在理想的架構中,這兩種服務可以非常自然地整合到同一個 Flask 應用程式中,共用同一個運行實例。
👉 整合方式:在 Flask 應用中新增路由
/callback
路由,專門用於接收來自 LINE 的 Webhook 請求。這個路由會調用處理 LINE 訊息的邏輯。/
或 /chat
),當使用者透過瀏覽器訪問這個 URL 時,返回一個簡單的 HTML 頁面。這個 HTML 頁面將包含一個聊天輸入框和顯示對話的區域,並透過 JavaScript 非同步地(AJAX)向 Flask 應用的一個 API 端點發送使用者訊息。/api/chat
),用於接收來自 Web 聊天介面的訊息,並將其傳遞給共享的 AI 後端核心,然後將 AI 的回覆返回給前端。雖然 Telegram Bot 也能設定 Webhook,但我們在 Day 20 和 Day 21 已經得出結論:Telegram 的「長輪詢 (Polling)」模式更穩定、更簡潔。這種模式也影響了它與其他 Web 服務的整合方式。
👉長輪詢的特性:python-telegram-bot
的 application.run_polling()
是一個阻塞式的呼叫,它會持續運行並監聽新訊息。這與 Flask 應用程式的 Web 伺服器運行方式不同,它們不能在同一個 Python 進程的主執行緒中同時運行。
👉整合方式:獨立背景進程,共享 AI 核心!
綜合以上策略,我的 SDGs 智慧機器人最終整合藍圖如下:
👉 AI 後端核心 (RAG 系統):
sdgs_faiss.index
、stored_chunks.pkl
檔案和一組 Python 函式(例如 get_embedding
, get_rag_answer
)組成。sdgs_ai_core.py
),然後被 LINE Bot、Telegram Bot 和 Web 介面的程式碼引入使用。👉 LINE Bot 服務層 (由 Flask 統一承載):
/callback
)。👉 Telegram Bot 服務層 (獨立背景進程):
run_polling()
邏輯。nohup
或 screen
)。這份「最終整合」的藍圖,描繪了一個強大且高效的跨平台 AI 聊天機器人架構。然而,在實際的鐵人賽挑戰中,要將所有這些組件立即且完美地整合並部署到位,確實存在一定的複雜性和時間挑戰。
👉 現階段的重心:在鐵人賽的過程中,我的重心會放在確保每個平台獨立運行的穩定性,例如 Telegram 的長輪詢模式、LINE 的獨立 Flask 應用部署。
👉 這份藍圖的價值:這是為後續的發展進行規劃和「學習藍圖」。我並非要立即接續進行,而是提供一個清晰的願景:當專案規模擴大、對效能和資源管理有更高要求時,這是我能夠擴展與優化 AI 機器人服務的重要指導方向。這也能夠展現作為一個開發者,開始從撰寫程式碼到思考系統架構的成長。
今天我清楚地描繪了我的 SDGs 智慧機器人最終的部署和整合藍圖。從 Colab 搬家到 Google Cloud Run,再到釐清不同平台服務的運行機制,並規劃如何共享同一個 AI 後端,每一步都是巨大的成長。
雖然 LINE 和 Telegram 的運行模式決定了機器人在伺服器上的「物理」分佈,但透過精心設計的 AI 後端模組和合理的部署策略,我能夠確保我的機器人在所有平台上都能提供統一、智慧且流暢的用戶體驗。這是我這個鐵人賽專案的終極目標,也是為推廣 SDGs 貢獻心力的最終實現!這份藍圖將引導我未來持續精進!