使用 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 功能具有更广泛的可访问性和可靠性。

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