跳至主要內容
ESC
Study Jam:GenAI 開發者實戰 — 第 19/29 篇

Vertex AI + Flutter 打造 AI Agent

Vertex AI + Flutter 打造 AI Agent

課程概述

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

Flutter 跨平台 AI Agent 架構:同一程式碼輸出 iOS 與 Android 多模態介面,裝置管理 UI 和短期狀態並經安全後端串流;後端整合指令、長期記憶、Gemini 推理與受權限控管的搜尋、行程和業務工具

行動端不應保存模型金鑰: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 說明

App 端呼叫不等於一定不安全,關鍵是走哪套 SDK、App Check 是否強制,以及功能有沒有跨進私有資料和高權限工具。風險一高,就應把授權與執行留在後端。

實作重點

  • 建立 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 名稱日後可能再變,但責任邊界和失敗處理才是能帶回專案的部分。

延伸學習

Study Jam:GenAI 開發者實戰 — 19/29 完成 查看系列全覽 →

留言討論

徽章解鎖!