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

Agent Platform(原 Vertex AI)+ Flutter 打造 AI Agent

內文字級

Agent Platform(原 Vertex AI)+ Flutter 打造 AI Agent
更新:2026-10-12

課程概述

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

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

行動端不應保存模型金鑰: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
App 端呼叫不等於一定不安全,關鍵是走哪套 SDK、App Check 有沒有接好,以及功能有沒有跨進私有資料和高權限工具。風險一高,就應把授權與執行留在後端。

實作重點

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

延伸學習

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

讀完後,留一個學習紀錄

試著用自己的話說出一個重點,以及你會如何運用。實作文章請先核對結果與清理資源,再標記為讀完。

文章進度以你確認讀完的標記為準,可隨時取消。舊版造訪紀錄保留,但不計入讀完;這份自評不代表已掌握內容。

留言討論

文章目錄與系列

徽章解鎖!