使用裝置端和雲端代管模型,在網頁應用程式中建構混合式體驗

運用混合式推論,使用 Firebase AI Logic 建構 AI 輔助網頁應用程式和功能。混合式推論功能可在裝置端模型可用時,使用該模型執行推論,否則會順暢地改用雲端代管模型 (反之亦然)。

本頁說明如何開始使用用戶端 SDK。完成這項標準設定後,請查看其他設定選項和功能 (例如結構化輸出)。

請注意,在電腦版 Chrome 上執行的網頁應用程式支援裝置端推論。

直接查看程式碼範例

建議用途和支援的功能

建議用途:

  • 使用裝置端模型進行推論可提供以下優勢:

    • 強化隱私權
    • 查看當地特色
    • 免付費推論
    • 離線功能
  • 使用混合功能優惠:

    • 無論裝置端模型是否可用或是否連上網際網路連線,都能觸及 100% 的目標對象

裝置端推論支援的功能:

裝置端推論僅支援單輪文字生成 (不支援對話),可選擇串流或非串流輸出。支援下列文字生成功能:

您也可以生成結構化輸出內容,包括 JSON 和列舉。

事前準備

請注意下列事項:

  • 使用裝置端模型進行推論時,會使用 Chrome 的 Prompt API;使用雲端代管模型進行推論時,則會使用您選擇的Gemini API供應商 (Gemini Developer API 或Agent Platform Gemini API (formerly Vertex AI))。

  • 本頁說明如何開始使用 localhost 進行開發 (如要進一步瞭解如何在 localhost 上使用 API,請參閱 Chrome 說明文件)。

    完成這項標準設定後,請查看其他設定選項和功能 (例如結構化輸出)。

在 localhost 上開始使用

這些入門步驟說明傳送任何支援的提示要求時,必須完成的一般設定。

步驟 1:設定 Chrome 和 Prompt API,以便在裝置端進行推論

  1. 確認你使用的是新版 Chrome。在 chrome://settings/help 中更新。
    裝置端推論功能適用於 Chrome 139 以上版本。

  2. 將下列標記設為「已啟用」,即可啟用裝置端多模態模型:

    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
  3. 重新啟動 Chrome。

  4. (選用) 在發出第一項要求前,先下載裝置端模型。

    Prompt API 已內建於 Chrome,但預設不會提供裝置端模型。如果您在首次要求裝置端推論前尚未下載模型,系統會自動在背景啟動模型下載作業。

步驟 2:設定 Firebase 專案,並將應用程式連結至 Firebase

  1. 登入 Firebase 控制台,然後選取 Firebase 專案。

  2. 在 Firebase 控制台中,依序前往「AI Services」(AI 服務) >「AI Logic」(AI 邏輯)。

  3. 按一下「開始使用」,啟動導覽工作流程,協助您為專案設定必要 API 和資源。

  4. 如果系統提示,請按照畫面上的指示註冊應用程式,並將 Firebase 設定新增至應用程式。

  5. 系統要求選擇「Gemini API 供應商」時,建議選取 Gemini Developer API,即可快速開始使用,不必付費。

    日後隨時可以設定 Agent Platform Gemini API (formerly Vertex AI) (以及帳單相關規定)。

  6. 繼續執行工作流程,為 Firebase AI Logic 設定必要的 API 和相關聯服務。

    自 2026 年 7 月初起,工作流程的這階段會自動強制執行Firebase App CheckAI Logic,這是重要服務,可協助保護Gemini API,避免應用程式直接存取。開始使用時 (請參閱本指南稍後的步驟),您必須在強制執行 App Check 時,為本機開發環境設定 App Check 偵錯服務。

  7. 請繼續閱讀本指南的下一個步驟,將必要的 SDK 新增至應用程式。

步驟 3:新增 SDK

Firebase 程式庫提供 API,可與生成式模型互動。這個程式庫是 Firebase JavaScript SDK for Web 的一部分。

  1. 使用 npm 安裝適用於網頁的 Firebase JS SDK:

    npm install firebase
    
  2. 在應用程式中初始化 Firebase:

    import { initializeApp } from "firebase/app";
    import { initializeAppCheck } from "firebase/app-check";
    
    // TODO(developer) Replace the following with your app's Firebase configuration
    // See: https://firebase.google.com/docs/web/learn-more#config-object
    const firebaseConfig = {
      // ...
    };
    
    // Initialize FirebaseApp
    const firebaseApp = initializeApp(firebaseConfig);
    

步驟 4:為本機開發設定 App Check 偵錯服務

2026 年 7 月初起,在 Play 管理中心的引導式設定工作流程中,系統會自動強制執行 AI LogicFirebase App Check,以保護Gemini API。如要進行本機開發,您需要設定 App Check debug provider,略過認證程序,同時維持 App Check 的強制執行狀態。

以下說明如何從 localhost 互動式執行應用程式時 (例如在本機開發期間),使用偵錯服務:

  1. 在偵錯版本中,請先將 self.FIREBASE_APPCHECK_DEBUG_TOKEN 設為 true,再初始化 App Check,即可啟用偵錯模式。例如:

    self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    initializeAppCheck(firebaseApp, { /* App Check options */ });
    
  2. 在本地造訪網頁應用程式,然後開啟瀏覽器的開發人員工具。在偵錯控制台中,您會看到偵錯權杖:

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    
  3. 向 App Check 註冊偵錯權杖:

    1. 在 Firebase 控制台,依序前往「Security」(安全性) >「App Check」 >「Apps」(應用程式) 分頁標籤。

    2. 找出您的應用程式,按一下溢位選單 (),然後選取「管理偵錯權杖」。

    3. 按照畫面上的指示註冊偵錯權杖。

如要進一步瞭解偵錯服務 (包括如何取得新的偵錯權杖),請參閱官方 App Check 文件。

步驟 5:初始化服務並建立模型執行個體

按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。

在將提示要求傳送至模型之前,請先設定下列項目:

  1. 為所選 API 供應商初始化服務。

  2. 建立 GenerativeModel 執行個體。請務必將 mode 設為下列其中一個值:

    • PREFER_ON_DEVICE:如果裝置端提供模型,請使用該模型;否則改用雲端代管模型。

    • ONLY_ON_DEVICE:使用裝置端模型 (如有),否則擲回例外狀況。

    • PREFER_IN_CLOUD:使用雲端主機代管模型 (如有),否則改用裝置端模型。

    • ONLY_IN_CLOUD:使用雲端代管模型 (如有),否則擲回例外狀況。

import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, InferenceMode } from "firebase/ai";

// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` instance
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });

步驟 6:初始化裝置端模型

您必須在使用者與網頁互動 (例如點按按鈕) 後或當下,以及之前,呼叫 initializeDeviceModel(),才能將提示要求傳送至模型。如要進一步瞭解使用者啟用規定,請參閱 Chrome 說明文件。

import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, InferenceMode } from "firebase/ai";

// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` instance
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });

// `initializeDeviceModel` must be called:
// (1) after or on an end-user page interaction such as a button click
// and
// (2) before any queries to the model (such as `generateContent()`)
// You may want to `await` this promise if using `ONLY_ON_DEVICE` (see note below).
model.initializeDeviceModel((val) =>
  // Example: "Download progress: 72.62%""
  console.log(`Download progress: ${Math.round(val*10000) / 100}%`)
);

步驟 7:將提示要求傳送至模型

本節說明如何傳送各種輸入內容,生成不同類型的輸出內容,包括:

如要生成結構化輸出內容 (例如 JSON 或列舉),請使用下列其中一個「生成的文字」範例,並將模型設定為根據提供的結構定義回覆。

使用純文字輸入生成文字

試用這個範例前,請務必先完成本指南的「開始使用」一節。

您可以使用 generateContent() 從含有文字的提示生成文字:

// Imports + initialization of FirebaseApp and backend service + creation of model instance

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const prompt = "Write a story about a magic backpack."

  // To generate text output, call `generateContent` with the text input
  const result = await model.generateContent(prompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

run();

請注意,Firebase AI Logic 也支援使用 generateContentStream (而非 generateContent) 串流傳輸文字回應。

根據文字和圖片 (多模態) 輸入內容生成文字

試用這個範例前,請務必先完成本指南的「開始使用」一節。

您可以使用 generateContent() ,從含有文字和圖片檔案的提示生成文字,並提供每個輸入檔案的 mimeType 和檔案本身。

裝置端推論支援的輸入圖片類型為 PNG 和 JPEG。

// Imports + initialization of FirebaseApp and backend service + creation of model instance

// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
  const base64EncodedDataPromise = new Promise((resolve) => {
    const reader = new FileReader();
    reader.onloadend = () => resolve(reader.result.split(',')[1]);
    reader.readAsDataURL(file);
  });
  return {
    inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
  };
}

async function run() {
  // Provide a text prompt to include with the image
  const prompt = "Write a poem about this picture:";

  const fileInputEl = document.querySelector("input[type=file]");
  const imagePart = await fileToGenerativePart(fileInputEl.files[0]);

  // To generate text output, call `generateContent` with the text and image
  const result = await model.generateContent([prompt, imagePart]);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

run();

請注意,Firebase AI Logic 也支援使用 generateContentStream (而非 generateContent) 串流傳輸文字回應。

你還可以做些什麼?

您可以為混合式體驗使用各種額外設定選項和功能:

裝置端推論功能尚未開放

Web SDK 的部分功能不適用於裝置端推論。以下功能尚未支援裝置端推論 (但通常支援雲端式推論)。

  • 從 JPEG 和 PNG 以外的圖片檔案輸入類型生成文字

    • 可以改用雲端代管模型,但 ONLY_ON_DEVICE 模式會擲回錯誤。
  • 從音訊、影片和文件 (例如 PDF) 輸入內容生成文字

    • 可以改用雲端代管模型,但 ONLY_ON_DEVICE 模式會擲回錯誤。
  • 使用 Gemini 模型生成圖像

    • 可以改用雲端代管模型,但 ONLY_ON_DEVICE 模式會擲回錯誤。
  • 在多模態要求中,使用網址提供檔案。您必須以內嵌資料的形式,將檔案提供給裝置端模型。

  • 多輪對話

    • 可以改用雲端代管模型,但 ONLY_ON_DEVICE 模式會擲回錯誤。
  • 透過 Gemini Live API 雙向串流

  • 提供工具給模型,協助生成回覆 (例如呼叫函式、執行程式碼、網址背景資訊、使用 Google Search 建立基準,以及使用 Google Maps 建立基準)

  • 計算詞元數

    • 一律會擲回錯誤。雲端代管和裝置端模型之間的計數會有所不同,因此沒有直覺式的備援機制。
  • 在 Firebase 控制台中監控裝置端推論的 AI。

    • 請注意,使用雲端代管模型進行的任何推論,都可以像使用 Firebase AI Logic Web 用戶端 SDK 進行的其他推論一樣受到監控。


提供有關 Firebase AI Logic 的使用體驗意見回饋