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

行動端不應保存模型金鑰:Flutter 負責跨平台 UI、裝置狀態與串流互動,受管後端才持有模型、記憶和工具權限。壓縮、取消重試與弱網處理改善體驗,高影響工具動作則先讓使用者核准。
你將學到
- 設計行動端 AI Agent 的架構:Firebase 中介 + Gemini Enterprise Agent Platform(簡稱 Agent Platform,原 Vertex AI)後端
- 在 Flutter 應用中整合 Gemini API 呼叫
- 實作 Agent 的多步驟任務執行與工具呼叫
- 處理行動端特有的挑戰:網路延遲、離線模式、電量最佳化
- 使用 Firebase 管理對話狀態與使用者資料
核心概念
行動端 Agent 架構
行動 AI 應用通常要把責任拆開:Flutter 管理介面、裝置狀態與串流呈現;Firebase Authentication、App Check 與 Firestore 可處理身分、應用真實性和同步資料;需要私有資料、工具權限或商業規則時,再由 Cloud Functions for Firebase、Cloud Run 等後端呼叫模型與企業服務。不是每個 App 都一定要湊齊三層,但模型憑證、高權限工具和跨租戶資料不能只靠前端畫面藏起來。
Flutter 與 Gemini 的整合方式
Flutter 可透過 Firebase AI Logic 的 firebase_ai SDK 從 App 呼叫 Gemini。請求會先經 Firebase AI Logic 的代理閘道,並且要盡早強制執行 App Check(官方特別提醒:在把程式碼放上公開儲存庫、分享或公開 App 之前);2026 年 11 月 2 日起,強制執行 App Check 是使用 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 說明。
流程圖暫時無法顯示。可先查看下方的流程與節點文字,或重新整理頁面後再試。
查看流程與節點文字
箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。
%%{init: {"flowchart": {"curve": "linear", "nodeSpacing": 24, "rankSpacing": 32}}}%%
flowchart TB
subgraph SCOPE["① 先看資料與動作風險"]
direction LR
START["列出輸入資料、輸出用途<br/>以及可能呼叫的工具"] --> OFFLINE{"任務必須離線完成,<br/>而且支援裝置端能力嗎?"}
OFFLINE -->|"是"| ONDEVICE["使用 ML Kit 裝置端 GenAI<br/>並處理裝置與模型版本差異"]
OFFLINE -->|"否"| PRIVATE{"會讀私有資料、依使用者授權,<br/>或造成付款、寫入等動作嗎?"}
PRIVATE -->|"不會"| CLIENT["可評估 Firebase AI Logic<br/>App 端 SDK"]
PRIVATE -->|"會"| BACKEND["由受控後端驗證授權<br/>再呼叫模型與工具"]
end
subgraph CONTROL["② 不同路徑補上各自的保護"]
direction LR
ONDEVICE --> DEVICE["檢查相容裝置、額度、<br/>離線降級與品質差異"]
CLIENT --> APPCHECK["盡早強制 App Check<br/>設定配額、限流與資料政策"]
BACKEND --> AUTH["驗證身分、租戶、參數與冪等性<br/>高影響動作要求使用者核准"]
DEVICE --> UX["統一處理取消、重試、背景切換<br/>以及不完整回應提示"]
APPCHECK --> UX
AUTH --> UX
end 實作重點
- 建立 Flutter 專案並設定 Firebase 整合(Authentication、Firestore、Cloud Functions)
- 依場景選擇 Firebase AI Logic 或受控後端;若走 App 端,盡早強制執行 App Check(2026 年 11 月 2 日起為必要條件)
- 實作對話式 UI:訊息氣泡、串流文字動畫、載入指示器
- 為 Agent 定義至少一個工具函式(如查詢天氣、搜尋知識庫),實作 Function Calling 流程
- 測試弱網路、斷線重連、背景切換與重複送出,確保不會執行兩次高影響工具
Lab 導讀
Lab 連結:Build AI Agents with Agent Platform and Flutter(原名 Build Generative AI Agents with Vertex AI and Flutter)— Google Skills
課程頁目前列出一個 Lab(Integrate a LangChain Agent with a Flutter App Using Agent Platform):用 Agent Search(原 Vertex AI Search)建立商品資料的搜尋來源、在 Agent Runtime(原 Agent Engine)部署 LangChain Agent、把 Python 後端部署到 Cloud Run,再用 Flutter 做聊天前端(Lab 以 Web 為目標平台)。公開的 Lab 步驟裡沒有 Firebase,本文談的 Firebase AI Logic 與 App Check 屬於延伸內容;動手前最好先熟悉基本的 Widget、非同步處理與狀態管理。操作時畫出每一段資料流,標明誰驗證身分、誰能讀對話、誰持有工具權限。SDK 名稱日後可能再變,但責任邊界和失敗處理才是能帶回專案的部分。
延伸學習
- GenAI Agent 轉型組織 — AI Agent 的概念與策略基礎
- Gemini 開發者指南 — Gemini API 的核心功能回顧
- GenAI 的 MLOps 實踐 — Agent 應用的部署與監控
讀完後,留一個學習紀錄
試著用自己的話說出一個重點,以及你會如何運用。實作文章請先核對結果與清理資源,再標記為讀完。
文章進度以你確認讀完的標記為準,可隨時取消。舊版造訪紀錄保留,但不計入讀完;這份自評不代表已掌握內容。