在多模式请求中包含大型文件,以及使用 Cloud Storage for Firebase 管理文件

使用 Vertex AI for Firebase SDK 从应用中调用 Gemini API 时,您可以提示 Gemini 模型根据多模态输入生成文本。多模态提示可以包括多种模态(或输入类型的)内容,例如带图片、PDF、视频和音频的文字。

对于输入的非文本部分(如媒体文件),您可以选择使用 Cloud Storage for Firebase 在请求中包含文件。概括来讲,您需要了解有关此功能的以下几点:

  • 您可以将 Cloud Storage for Firebase 用于任何多模态请求(如文本生成和聊天)。本指南中的示例展示了一个基本的文本和图片输入。

  • 您可以在请求输入中指定文件的 MIME 类型及其 Cloud Storage for Firebase 网址(始终以 gs:// 开头)。这些值是自动分配给上传到 Cloud Storage 存储分区的任何文件的元数据。

  • 您需要使用受支持的文件类型和网址


本解决方案指南介绍了如何在 Google Cloud 中设置 Cloud Storage for Firebase,从您的应用将文件上传到 Cloud Storage for Firebase 存储分区,然后将文件的 MIME 类型和 Cloud Storage for Firebase 网址包含在向 Gemini API 发出的多模式请求中。

您想查看代码示例吗?或者,您是否已经设置了 Cloud Storage for Firebase,并且准备好开始将其用于多模式请求?

跳转到代码示例

为什么将 Cloud Storage for Firebase 用于您的应用?

Cloud Storage for Firebase 使用与 Google Cloud Storage 相同的快速、安全且可扩缩的基础架构来存储 blob 和文件,其客户端 SDK 专为移动应用和 Web 应用而构建。

对于 Vertex AI for Firebase SDK,请求大小上限为 20 MB。如果请求过大,您会收到 HTTP 413 错误。如果文件的大小会导致总请求大小超过 20 MB,请使用 Cloud Storage for Firebase 网址将该文件包含在多模式请求中。 但是,如果文件很小,您通常可以将其作为内嵌数据直接传递(但请注意,作为内嵌数据提供的文件在传输过程中会编码为 base64,这会增加请求的大小)。

以下是使用 Cloud Storage for Firebase 的一些其他优势

  • 您可以让最终用户直接将图片从您的应用上传到 Cloud Storage for Firebase 存储分区,然后,您只需指定文件的 MIME 类型和 Cloud Storage for Firebase 网址(即文件的标识符),即可将这些图片添加到多模态提示中。

  • 当最终用户需要提供图片时,尤其是在网络质量不佳或不稳定的情况下,您可以节省他们的时间和带宽。

    • 如果文件上传或下载中断,Cloud Storage for Firebase SDK 会自动从中断的地方重新开始操作。
    • 上传的文件可以多次使用,而无需最终用户每次在应用中需要时都上传相同的文件(例如在新的多模态请求中)。
  • 您可以使用 Firebase 安全规则限制最终用户对存储在 Cloud Storage for Firebase 中的文件的访问权限,仅允许已获授权的用户上传、下载或删除文件。

  • 您可以从 Firebase 或 Google Cloud 访问存储分区中的文件,从而灵活地使用 Google Cloud Storage API 进行服务器端处理,例如图片过滤或视频转码。

支持哪些类型的文件和网址?

如果要将 Cloud Storage for Firebase 网址与 Vertex AI for Firebase SDK 搭配使用,请满足以下要求:

  • 使用 Vertex AI for Firebase SDK 时,文件必须满足多模态请求的输入文件要求。这包括 MIME 类型和文件大小等要求。

  • 该文件必须存储在 Cloud Storage for Firebase 存储分区中(这意味着 Firebase 服务可以访问该存储分区,例如 Firebase 安全规则)。如果您可以在 Firebase 控制台中查看自己的存储分区,那么它就是 Cloud Storage for Firebase 存储分区。

  • Cloud Storage for Firebase 存储分区必须位于您注册了应用的 Firebase 项目中。

  • 该文件的 Cloud Storage for Firebase 网址必须以 gs:// 开头,这是所有 Google Cloud Storage 网址的构建方式。

  • 文件的网址不能是“浏览器”网址(例如,您在互联网上找到的图片网址)。

此外,存储分区的 Firebase 安全规则必须允许对该文件进行相应访问。例如:

  • 如果您有公共规则,则任何用户或客户端都可以访问该文件,并使用 Vertex AI for Firebase SDK 在调用中提供其网址。这些类型的规则仅应在开始阶段和早期原型设计阶段使用(除非文件实际上是完全可公开访问的文件)。

  • 如果您有严格的规则 (强烈建议),则 Firebase 会先检查已登录的用户或客户端是否对文件有足够的访问权限,然后再允许通过提供的网址执行调用。

将 Cloud Storage for Firebase 网址与 Vertex AI for Firebase 搭配使用

第 1 步:设置 Cloud Storage for Firebase

以下是您需要完成的简要任务:

  1. 在 Firebase 项目中创建一个 Cloud Storage for Firebase 存储分区。

  2. Firebase 安全规则应用于此存储分区。Firebase 安全规则仅允许已获授权的最终用户访问您的文件,从而帮助您保护文件。

  3. 将 Cloud Storage for Firebase 的客户端库添加到您的应用。

    请注意,您可以跳过此任务,但之后必须始终 在多模态请求中明确包含 MIME 类型和 Cloud Storage for Firebase 网址值

第 2 步:将文件上传到存储分区

当您将文件上传到存储分区时,Cloud Storage 会自动将以下两条信息应用于该文件。您需要在多模态请求中添加这些值(如本指南的下一步所示)。

  • MIME 类型:这是文件的媒体类型(例如 image/png)。在上传过程中,Cloud Storage for Firebase 会自动尝试检测 MIME 类型,并将该元数据应用于存储分区中的对象。不过,您可以根据需要在上传期间指定 MIME 类型。

  • Cloud Storage for Firebase 网址:这是文件的唯一标识符。该网址必须以 gs:// 开头。

第 3 步:在多模态请求中添加文件的 MIME 类型和网址

将文件存储在 Cloud Storage for Firebase 存储分区中后,您可以在多模式请求中包含其 MIME 类型和 Cloud Storage for Firebase 网址。请注意,这些示例显示的是非流式 generateContent 请求,但您还可以将 Cloud Storage for Firebase 网址用于流式传输和聊天。

要在请求中包含该文件,您可以使用以下任一选项:

方法 1:使用存储引用添加 MIME 类型和网址

如果您刚刚将文件上传到存储分区,并且想要立即将文件(通过 Storage 引用)包含在多模态请求中,请使用此选项。该调用同时需要 MIME 类型和 Cloud Storage for Firebase 网址。

方法 2:明确包含 MIME 类型和网址

如果您知道 MIME 类型和 Cloud Storage for Firebase 网址的值,并且希望将它们明确包含在多模式请求中,请使用此选项。该调用同时需要 MIME 类型和网址。