Spaces:
Running
Running
系統架構說明 (System Architecture)
Bloom Ware 「小花」專案採用現代化的前後端分離架構,結合多項領先的 AI 技術與穩定可擴展的後端框架。
1. 後端架構 (Backend - FastAPI)
後端採用 Python 的 FastAPI 框架,提供非同步、高效能的 API 服務與 WebSocket 長連接管理。
app.py: 應用的進入點。負責配置 Lifespan(啟動/關閉事件)、Middleware(如 CORS, CSP)、定義 WebSocket 的連線(/ws),並掛載靜態前端資源。core/(核心邏輯):- 資料庫 (
database/): 與 Firebase Firestore 進行連線,處理使用者資料、對話紀錄與記憶的 CRUD 操作。 - 驗證 (
auth.py): 處理 JWT Token 生成與解析,並整合 Google OAuth 登入機制。 - Pipeline (
pipeline.py): 負責串接使用者的輸入到大語言模型(LLM)的資料流。 - 記憶體系統 (
memory_system.py): 管理對話上下文,提供 AI 摘要。
- 資料庫 (
features/與services/(業務與 AI 服務):- 封裝了與 OpenAI 溝通的
ai_service.py。 voice_binding.py: 負責聲紋註冊狀態機管理。- MCP (Model Context Protocol) 工具集:整合天氣、交通 (TDX)、位置查詢等外部 API。
- 封裝了與 OpenAI 溝通的
websocket/:manager.py: 管理所有連線的使用者會話,處理訊息派發、連線逾時清理等。
2. 前端架構 (Frontend)
本系統將前端拆分為「登入驗證層」與「沉浸式互動層」。
- 登入介面 (
bloom-ware-login/out):- 基於 Next.js 與 React 構建,編譯為靜態資源後由 FastAPI 掛載於
/login路徑。 - 提供 Google 登入、一般信箱登入,以及跳轉至語音註冊的入口。
- 基於 Next.js 與 React 構建,編譯為靜態資源後由 FastAPI 掛載於
- 主互動介面 (
static/frontend/):- 專注於 沉浸式語音體驗 的純靜態應用(HTML/CSS/JS)。
- 以「小花」的視覺形象(如動態花朵動畫)作為介面核心。
- 透過 WebRTC/MediaRecorder 擷取音訊,透過 WebSocket 傳送給後端,並將後端回傳的音訊進行播放,且畫面會隨情緒狀態與音量產生動態回饋。
3. 基礎設施與部署 (Infrastructure)
- Docker 化: 提供完整的
Dockerfile,確保在各種環境下執行的一致性。 - Hugging Face Space: 系統原生設計為可直接部署於 Hugging Face Space 上,支援無伺服器架構的容器化執行。
- 排程與背景任務:
- 啟動時即開啟
asyncio背景任務,定期清理過期的 WebSocket 會話、壓縮並總結歷史對話,確保長期執行的效能與穩定度。
- 啟動時即開啟