iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
Software Development

建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實系列 第 29

Day 29【最終整合】 邁向無縫 AI 體驗的終極架構願景

  • 分享至 

  • xImage
  •  

HI!大家好,我是 Shammi!😊

一路走到 Day 29,我的 SDGs 智慧聊天機器人已經從零開始,學會了智慧回覆、多輪對話,甚至成功搬家到了雲端!這真是令人振奮的旅程!然而,當我在 LINE 和 Telegram 兩個平台獨立運行著機器人時,我的心中總有個更宏大的願景:**如果它們能共享同一個「大腦」,提供完全一致且無縫的智慧體驗,那該多好!

今天,Day 29 的挑戰,將會是為我的 SDGs 聊天機器人描繪出這幅「最終整合」的藍圖。這不是一個現階段需要完全實作的艱鉅任務,而是一個高瞻遠矚的架構願景,指引著我未來將機器人從「各自為政」引導至「統一戰線」的道路。

這是一個讓我的機器人從「功能完善」邁向「未來卓越」的思考步驟!GOGOGO!

🌐 一、 真實的「共用後端」是什麼?

要實現跨平台統一,首先要明確,我們真正要共用的是什麼?答案是機器人的「大腦」和「思考邏輯」!

共享的 AI 後端核心: 這指的是我的 RAG 系統(檢索增強生成)。它包含了機器人所有的智慧來源和處理能力:

  • 知識庫sdgs_faiss.indexstored_chunks.pkl 檔案,它們包含了所有的 SDGs 知識。
  • Embedding 模組:將文字轉化為向量。
  • LLM 交互模組:負責與 Google Gemini 互動並生成智慧回覆、處理查詢重寫。
  • RAG 整合邏輯:整合了查詢重寫、檢索和生成回覆的完整流程。

這些核心功能是機器人智慧的來源,它們是平台無關的。這意味著,無論是 LINE、Telegram 還是未來可能出現的 Web 介面,它們都將呼叫同一套底層的 Python 函式來獲取答案。這是實現「無縫體驗」的基礎。

🌐 二、 邁向統一架構的策略

🤖 LINE Bot 與 Web 介面的完美整合策略

對於需要 Webhook 的平台(如 LINE),以及我想要建立一個基於網頁的聊天介面,它們都屬於 Web 應用程式的範疇。在理想的架構中,這兩種服務可以非常自然地整合到同一個 Flask 應用程式中,共用同一個運行實例。

👉 整合方式:在 Flask 應用中新增路由

  • LINE Bot Webhook:我們現有的 Flask 應用可以繼續保持 /callback 路由,專門用於接收來自 LINE 的 Webhook 請求。這個路由會調用處理 LINE 訊息的邏輯。
  • Web 聊天介面:我們可以為 Flask 應用新增一個路由(例如 //chat),當使用者透過瀏覽器訪問這個 URL 時,返回一個簡單的 HTML 頁面。這個 HTML 頁面將包含一個聊天輸入框和顯示對話的區域,並透過 JavaScript 非同步地(AJAX)向 Flask 應用的一個 API 端點發送使用者訊息。
  • Web API 端點:Flask 應用可以再提供一個 API 端點(例如 /api/chat),用於接收來自 Web 聊天介面的訊息,並將其傳遞給共享的 AI 後端核心,然後將 AI 的回覆返回給前端。

🤖 Telegram Bot 的特殊考量

雖然 Telegram Bot 也能設定 Webhook,但我們在 Day 20 和 Day 21 已經得出結論:Telegram 的「長輪詢 (Polling)」模式更穩定、更簡潔。這種模式也影響了它與其他 Web 服務的整合方式。

👉長輪詢的特性python-telegram-botapplication.run_polling() 是一個阻塞式的呼叫,它會持續運行並監聽新訊息。這與 Flask 應用程式的 Web 伺服器運行方式不同,它們不能在同一個 Python 進程的主執行緒中同時運行。

👉整合方式:獨立背景進程,共享 AI 核心!

  • 獨立運行腳本:Telegram 長輪詢機器人將作為一個獨立的 Python 腳本,在伺服器的背景中持續運行。
  • 共享 AI 後端:這個獨立的腳本會直接引入並調用我們共享的 AI 後端核心函式。

🌐 三、 最終整合的藍圖與實踐

綜合以上策略,我的 SDGs 智慧機器人最終整合藍圖如下:

👉 AI 後端核心 (RAG 系統)

  • sdgs_faiss.indexstored_chunks.pkl 檔案和一組 Python 函式(例如 get_embedding, get_rag_answer)組成。
  • 這些程式碼可以被封裝成一個獨立的 Python 模組(例如 sdgs_ai_core.py),然後被 LINE Bot、Telegram Bot 和 Web 介面的程式碼引入使用。

👉 LINE Bot 服務層 (由 Flask 統一承載)

  • 一個 Flask 應用程式。
  • 包含 LINE Bot 的 Webhook 處理路由(/callback)。
  • 這個 Flask 應用程式會被部署到 Google Cloud Run,由其自動管理運行。

👉 Telegram Bot 服務層 (獨立背景進程)

  • 一個獨立的 Python 腳本。
  • 只包含 Telegram Bot 的 run_polling() 邏輯。
  • 這個腳本會獨立地在伺服器的背景中運行(使用 nohupscreen)。

🌐 四、 現階段的挑戰與未來願景的平衡

這份「最終整合」的藍圖,描繪了一個強大且高效的跨平台 AI 聊天機器人架構。然而,在實際的鐵人賽挑戰中,要將所有這些組件立即且完美地整合並部署到位,確實存在一定的複雜性和時間挑戰。

👉 現階段的重心:在鐵人賽的過程中,我的重心會放在確保每個平台獨立運行的穩定性,例如 Telegram 的長輪詢模式、LINE 的獨立 Flask 應用部署。

👉 這份藍圖的價值:這是為後續的發展進行規劃和「學習藍圖」。我並非要立即接續進行,而是提供一個清晰的願景:當專案規模擴大、對效能和資源管理有更高要求時,這是我能夠擴展與優化 AI 機器人服務的重要指導方向。這也能夠展現作為一個開發者,開始從撰寫程式碼到思考系統架構的成長。

總結

今天我清楚地描繪了我的 SDGs 智慧機器人最終的部署和整合藍圖。從 Colab 搬家到 Google Cloud Run,再到釐清不同平台服務的運行機制,並規劃如何共享同一個 AI 後端,每一步都是巨大的成長。

雖然 LINE 和 Telegram 的運行模式決定了機器人在伺服器上的「物理」分佈,但透過精心設計的 AI 後端模組和合理的部署策略,我能夠確保我的機器人在所有平台上都能提供統一、智慧且流暢的用戶體驗。這是我這個鐵人賽專案的終極目標,也是為推廣 SDGs 貢獻心力的最終實現!這份藍圖將引導我未來持續精進!


上一篇
Day 28【日誌與監控】 機器人上線後的維護與管理:
系列文
建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言