運用混合式推論,使用 Firebase AI Logic 建構 AI 輔助網頁應用程式和功能。混合式推論功能可在裝置端模型可用時,使用該模型執行推論,否則會順暢地改用雲端代管模型 (反之亦然)。
本頁說明如何開始使用用戶端 SDK。完成這項標準設定後,請查看其他設定選項和功能 (例如結構化輸出)。
請注意,在電腦版 Chrome 上執行的網頁應用程式支援裝置端推論。
建議用途和支援的功能
建議用途:
使用裝置端模型進行推論可提供以下優勢:
- 強化隱私權
- 查看當地特色
- 免付費推論
- 離線功能
使用混合功能優惠:
- 無論裝置端模型是否可用或是否連上網際網路連線,都能觸及 100% 的目標對象
裝置端推論支援的功能:
裝置端推論僅支援單輪文字生成 (不支援對話),可選擇串流或非串流輸出。支援下列文字生成功能:
根據文字和圖片輸入內容生成文字,具體來說,輸入圖片類型為 JPEG 和 PNG
您也可以生成結構化輸出內容,包括 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,以便在裝置端進行推論
確認你使用的是新版 Chrome。在 chrome://settings/help 中更新。
裝置端推論功能適用於 Chrome 139 以上版本。將下列標記設為「已啟用」,即可啟用裝置端多模態模型:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
重新啟動 Chrome。
(選用) 在發出第一項要求前,先下載裝置端模型。
Prompt API 已內建於 Chrome,但預設不會提供裝置端模型。如果您在首次要求裝置端推論前尚未下載模型,系統會自動在背景啟動模型下載作業。
步驟 2:設定 Firebase 專案,並將應用程式連結至 Firebase
登入 Firebase 控制台,然後選取 Firebase 專案。
在 Firebase 控制台中,依序前往「AI Services」(AI 服務) >「AI Logic」(AI 邏輯)。
按一下「開始使用」,啟動導覽工作流程,協助您為專案設定必要 API 和資源。
如果系統提示,請按照畫面上的指示註冊應用程式,並將 Firebase 設定新增至應用程式。
系統要求選擇「Gemini API 供應商」時,建議選取 Gemini Developer API,即可快速開始使用,不必付費。
日後隨時可以設定 Agent Platform Gemini API (formerly Vertex AI) (以及帳單相關規定)。
繼續執行工作流程,為 Firebase AI Logic 設定必要的 API 和相關聯服務。
自 2026 年 7 月初起,工作流程的這階段會自動強制執行Firebase App CheckAI Logic,這是重要服務,可協助保護Gemini API,避免應用程式直接存取。開始使用時 (請參閱本指南稍後的步驟),您必須在強制執行 App Check 時,為本機開發環境設定 App Check 偵錯服務。
請繼續閱讀本指南的下一個步驟,將必要的 SDK 新增至應用程式。
步驟 3:新增 SDK
Firebase 程式庫提供 API,可與生成式模型互動。這個程式庫是 Firebase JavaScript SDK for Web 的一部分。
使用 npm 安裝適用於網頁的 Firebase JS SDK:
npm install firebase在應用程式中初始化 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 互動式執行應用程式時 (例如在本機開發期間),使用偵錯服務:
在偵錯版本中,請先將
self.FIREBASE_APPCHECK_DEBUG_TOKEN設為true,再初始化 App Check,即可啟用偵錯模式。例如:self.FIREBASE_APPCHECK_DEBUG_TOKEN = true; initializeAppCheck(firebaseApp, { /* App Check options */ });在本地造訪網頁應用程式,然後開啟瀏覽器的開發人員工具。在偵錯控制台中,您會看到偵錯權杖:
AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678". You will need to safelist it in the Firebase console for it to work.向 App Check 註冊偵錯權杖:
在 Firebase 控制台,依序前往「Security」(安全性) >「App Check」 >「Apps」(應用程式) 分頁標籤。
找出您的應用程式,按一下溢位選單 (),然後選取「管理偵錯權杖」。
按照畫面上的指示註冊偵錯權杖。
如要進一步瞭解偵錯服務 (包括如何取得新的偵錯權杖),請參閱官方 App Check 文件。
步驟 5:初始化服務並建立模型執行個體
|
按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。 |
在將提示要求傳送至模型之前,請先設定下列項目:
為所選 API 供應商初始化服務。
建立
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 的使用體驗意見回饋