Vertex AI + Flutter 打造 AI Agent
課程概述
把 AI 功能放進手機,不只是把聊天畫面縮小。行動端會遇到弱網路、背景切換、裝置能力差異、權限與敏感資料等問題。這堂課會用 Flutter 和 Firebase/Google Cloud 拆解一個行動 AI 應用,重點是判斷哪些事情能在 App 裡做,哪些一定要交給受控後端。

行動端不應保存模型金鑰:Flutter 負責跨平台 UI、裝置狀態與串流互動,受管後端才持有模型、記憶和工具權限。壓縮、取消重試與弱網處理改善體驗,高影響工具動作則先讓使用者核准。
你將學到
- 設計行動端 AI Agent 的架構:Firebase 中介 + Vertex AI 後端
- 在 Flutter 應用中整合 Gemini API 呼叫
- 實作 Agent 的多步驟任務執行與工具呼叫
- 處理行動端特有的挑戰:網路延遲、離線模式、電量最佳化
- 使用 Firebase 管理對話狀態與使用者資料
核心概念
行動端 Agent 架構
行動 AI 應用通常要把責任拆開:Flutter 管理介面、裝置狀態與串流呈現;Firebase Authentication、App Check 與 Firestore 可處理身分、應用真實性和同步資料;需要私有資料、工具權限或商業規則時,再由 Cloud Functions、Cloud Run 等後端呼叫模型與企業服務。不是每個 App 都一定要湊齊三層,但模型憑證、高權限工具和跨租戶資料不能只靠前端畫面藏起來。
Flutter 與 Gemini 的整合方式
Flutter 可透過 Firebase AI Logic 的 firebase_ai SDK 從 App 呼叫 Gemini。請求會先經 Firebase AI Logic 的代理閘道,正式發布前必須啟用並強制執行 App Check,必要時再加防重放;這和把一般 Gemini API Key 硬寫進 App 不是同一件事。若功能只做低風險的摘要或內容建議,這條路可以保持架構簡單;一旦牽涉私有資料、使用者授權、付費或寫入外部系統,就應改走自己的後端。可參考Firebase App Check 官方說明。
Agent 的對話與狀態管理
跨輪對話可以同時保留本地快取與雲端紀錄,但不必每次從 Firestore 把「全部歷史」塞回模型。對話變長後,應保留必要的近期訊息、摘要和工具狀態,並設定 Token 預算。Firestore Security Rules 要限制每位使用者只能讀寫自己的資料,敏感對話還要有刪除與保存期限;本地快取則要考慮裝置加密、登出與共用裝置情境。
行動端的效能最佳化
行動端要處理取消、重連、背景切換與重複送出;串流能改善等待感,但網路中斷時要讓使用者知道結果是否完整。快取也只能用在不含即時或個人敏感內容的結果。若要離線處理,Android 可透過 ML Kit GenAI APIs 使用裝置上的 Gemini Nano,但只支援特定裝置與能力,模型版本也可能不同,不能假設所有 Android 或 iOS 裝置都有相同功能;實作前請查官方裝置端 GenAI 說明。
流程圖暫時無法顯示,請重新整理頁面後再試。
實作重點
- 建立 Flutter 專案並設定 Firebase 整合(Authentication、Firestore、Cloud Functions)
- 依場景選擇 Firebase AI Logic 或受控後端;若走 App 端,正式發布前強制執行 App Check
- 實作對話式 UI:訊息氣泡、串流文字動畫、載入指示器
- 為 Agent 定義至少一個工具函式(如查詢天氣、搜尋知識庫),實作 Function Calling 流程
- 測試弱網路、斷線重連、背景切換與重複送出,確保不會執行兩次高影響工具
Lab 導讀
Lab 連結:Build Generative AI Agents with Vertex AI and Flutter — Google Cloud Skills Boost
這個 Lab 同時碰到 Flutter、Firebase 後端與模型整合,動手前最好先熟悉基本的 Widget、非同步處理與狀態管理。操作時畫出每一段資料流,標明誰驗證身分、誰能讀對話、誰持有工具權限。SDK 名稱日後可能再變,但責任邊界和失敗處理才是能帶回專案的部分。
延伸學習
- GenAI Agent 轉型組織 — AI Agent 的概念與策略基礎
- Gemini 開發者指南 — Gemini API 的核心功能回顧
- GenAI 的 MLOps 實踐 — Agent 應用的部署與監控