发布时间:2025 年 5 月 20 日
为了满足用户在任何平台或硬件上的需求,您可以使用 Firebase AI Logic 为内置 Prompt API设置 回退到云端。
打造混合 AI 体验
- 本地处理敏感数据: 如果您处理敏感数据,可以为用户提供端到端加密的 AI 功能。
- 离线使用 AI: 您的用户可以访问 AI 功能,即使他们处于离线状态或连接中断也是如此
虽然这些优势不适用于云应用,但您可以确保无法访问内置 AI 的用户获得顺畅的体验。
Firebase 使用入门
了解如何 创建 Firebase 项目并将 Firebase 添加到 Web 应用。
Firebase 项目是 Google Cloud 项目,具有 Firebase 特定的配置和服务。详细了解 Google Cloud 和 Firebase。
安装 SDK
此工作流使用 npm,并且需要模块打包器或 JavaScript 框架工具。Firebase AI Logic 经过优化,可与模块打包器配合使用,以移除未使用的代码并缩减 SDK 大小。
安装 Firebase JS SDK:
npm install firebase
设置 Firebase AI Logic 并确保其安全运行
在 Firebase 控制台中,依次前往 AI 服务 > AI Logic。
点击开始使用 以启动设置工作流。
当系统要求您选择“Gemini API 提供方”时,我们建议您选择 Gemini Developer API,这样您就可以快速免费开始使用。
您随时可以 设置 Vertex AI Gemini API (及其结算要求)。
继续执行控制台工作流,为 Firebase AI Logic 设置所需的 API 和关联服务。
从 2026 年 7 月初开始,工作流的此阶段会自动 对 AI Logic 强制执行 Firebase App Check, 这是一项 至关重要 的服务,有助于在直接从应用访问 Gemini API 时保护该 API。在开始使用时(请参阅本指南后面的步骤),您需要在强制执行 App Check 时为本地开发配置 App Check 调试提供程序 。
继续阅读本指南的下一部分,为本地开发配置 App Check 调试提供程序 ,然后向 Gemini API 发送第一个请求。
为本地开发配置 App Check 调试提供程序
以下介绍了如何在以交互方式从 localhost 运行应用时(例如在本地开发期间)使用调试提供程序:
在调试 build 中,请在初始化 App Check 之前将
self.FIREBASE_APPCHECK_DEBUG_TOKEN设置为true以启用调试模式。例如:self.FIREBASE_APPCHECK_DEBUG_TOKEN = true; initializeAppCheck(app, { /* App Check options */ });在本地访问 Web 应用,然后打开浏览器的开发者工具。在调试控制台中,您将看到一个调试令牌:
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 控制台中,依次前往 安全 > App Check > 应用 标签页。
找到您的应用,点击溢出菜单 (),然后选择 管理调试令牌。
按照屏幕上的说明注册调试令牌。
如需详细了解调试提供程序(包括如何获取新的调试令牌), 请参阅 官方 App Check 文档。
向 Gemini API 发送请求
使用文本或多模态输入提示模型。请参阅本指南以下子部分中的示例。
文本提示
您可以使用纯文本向模型提供说明。例如,您可以要求模型讲一个笑话。
您可以选择请求的路由方式:
默认情况下,当内置 AI 可用时,通过在
getGenerativeModel()函数中将mode设置为'prefer_on_device'来使用内置 AI。如果内置模型不可用,请求将无缝回退以使用云模型(如果您在线)。默认情况下,当您在线时,通过在
getGenerativeModel()函数中将mode设置为'prefer_in_cloud'来使用云模型。如果您处于离线状态,请求将无缝回退以使用内置 AI(如果可用)。
// Initialize the Google AI service.
const googleAI = getAI(firebaseApp);
// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(googleAI, { mode: 'prefer_on_device' });
const prompt = 'Tell me a joke';
const result = await model.generateContentStream(prompt);
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
console.log('Complete response', await result.response);
多模态提示
除了文本之外,您还可以使用图片或音频进行提示。您可以让模型描述图片的内容或转录音频文件。
图片需要作为 base64 编码的字符串以 Firebase FileDataPart 对象的形式传递,您可以使用辅助函数 fileToGenerativePart() 来完成此操作。
// Converts a File object to a `FileDataPart` object.
// https://firebase.google.com/docs/reference/js/vertexai.filedatapart
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
const fileInputEl = document.querySelector('input[type=file]');
fileInputEl.addEventListener('change', async () => {
const prompt = 'Describe the contents of this image.';
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call generateContent with the text and image
const result = await model.generateContentStream([prompt, imagePart]);
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
console.log(Complete response: ', await result.response);
});
演示
在不同的设备 和浏览器上访问 Firebase AI Logic 演示。您可以看到模型响应来自内置 AI 模型还是云端。
在 Chrome 中使用受支持的硬件时,演示会使用 Prompt API 和 Gemini Nano。系统仅针对主文档、JavaScript 文件和 CSS 文件发出 3 个请求。

如果在其他浏览器或没有内置 AI 支持的操作系统中,系统会向 Firebase 端点 https://firebasevertexai.googleapis.com 发出额外的请求。

参与并分享反馈
Firebase AI Logic 可能是将 AI 功能集成到 Web 应用中的绝佳选择。通过在 Prompt API 不可用时提供回退到云端的功能,SDK 可确保 AI 功能具有更广泛的可访问性和可靠性。
请注意,云应用会带来对隐私和功能的新期望,因此务必告知用户其数据在何处处理。