使用 Firebase AI Logic 实现混合 AI 提示

发布时间:2025 年 5 月 20 日

为了满足用户在任何平台或硬件上的需求,您可以使用 Firebase AI Logic 为内置 Prompt API设置 回退到云端。

打造混合 AI 体验

内置 AI 具有 多项优势, 最值得注意的是:

  • 本地处理敏感数据: 如果您处理敏感数据,可以为用户提供端到端加密的 AI 功能。
  • 离线使用 AI: 您的用户可以访问 AI 功能,即使他们处于离线状态或连接中断也是如此

虽然这些优势不适用于云应用,但您可以确保无法访问内置 AI 的用户获得顺畅的体验。

Firebase 使用入门

了解如何 创建 Firebase 项目并将 Firebase 添加到 Web 应用

Firebase 项目是 Google Cloud 项目,具有 Firebase 特定的配置和服务。详细了解 Google Cloud 和 Firebase

安装 SDK

此工作流使用 npm,并且需要模块打包器或 JavaScript 框架工具。Firebase AI Logic 经过优化,可与模块打包器配合使用,以移除未使用的代码并缩减 SDK 大小。

  1. 安装 Firebase JS SDK:

    npm install firebase
    
  2. 在应用中初始化 Firebase。

设置 Firebase AI Logic 并确保其安全运行

  1. 在 Firebase 控制台中,依次前往 AI 服务 > AI Logic

  2. 点击开始使用 以启动设置工作流。

  3. 当系统要求您选择“Gemini API 提供方”时,我们建议您选择 Gemini Developer API,这样您就可以快速免费开始使用。

    您随时可以 设置 Vertex AI Gemini API (及其结算要求)。

  4. 继续执行控制台工作流,为 Firebase AI Logic 设置所需的 API 和关联服务。

    从 2026 年 7 月初开始,工作流的此阶段会自动 对 AI Logic 强制执行 Firebase App Check, 这是一项 至关重要 的服务,有助于在直接从应用访问 Gemini API 时保护该 API。在开始使用时(请参阅本指南后面的步骤),您需要在强制执行 App Check 时为本地开发配置 App Check 调试提供程序

  5. 继续阅读本指南的下一部分,为本地开发配置 App Check 调试提供程序 ,然后向 Gemini API 发送第一个请求。

为本地开发配置 App Check 调试提供程序

以下介绍了如何在以交互方式从 localhost 运行应用时(例如在本地开发期间)使用调试提供程序:

  1. 在调试 build 中,请在初始化 App Check 之前将 self.FIREBASE_APPCHECK_DEBUG_TOKEN 设置为 true 以启用调试模式。例如:

    self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    initializeAppCheck(app, { /* App Check options */ });
    
  2. 在本地访问 Web 应用,然后打开浏览器的开发者工具。在调试控制台中,您将看到一个调试令牌:

    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 控制台中,依次前往 安全 > App Check > 应用 标签页

    2. 找到您的应用,点击溢出菜单 (),然后选择 管理调试令牌

    3. 按照屏幕上的说明注册调试令牌。

如需详细了解调试提供程序(包括如何获取新的调试令牌), 请参阅 官方 App Check 文档

向 Gemini API 发送请求

  1. 初始化并创建实例。

  2. 使用文本或多模态输入提示模型。请参阅本指南以下子部分中的示例。

文本提示

您可以使用纯文本向模型提供说明。例如,您可以要求模型讲一个笑话。

您可以选择请求的路由方式:

  • 默认情况下,当内置 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 个请求。

在 Chrome 中运行的 Firebase AI Logic,使用内置的 AI API。

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

在 Safari 中运行的 Firebase AI Logic 向 Firebase 服务器发出请求。

参与并分享反馈

Firebase AI Logic 可能是将 AI 功能集成到 Web 应用中的绝佳选择。通过在 Prompt API 不可用时提供回退到云端的功能,SDK 可确保 AI 功能具有更广泛的可访问性和可靠性。

请注意,云应用会带来对隐私和功能的新期望,因此务必告知用户其数据在何处处理。