Incluye archivos grandes en solicitudes multimodales y administra archivos con Cloud Storage para Firebase

Cuando llames a Gemini API desde tu app con un SDK de Vertex AI in Firebase, puedes pedirle al modelo de Gemini que genere texto según una entrada multimodal. Las instrucciones multimodales pueden incluir varias modalidades (o tipos de entrada), como texto junto con imágenes, PDF, video y audio.

Para las partes no de texto de la entrada (como los archivos multimedia), puedes usar Cloud Storage for Firebase de forma opcional para incluir archivos en la solicitud. En un nivel general, esto es lo que debes saber sobre esta función:

  • Puedes usar Cloud Storage for Firebase con cualquier solicitud multimodal (como la generación de texto y el chat). Los ejemplos de esta guía muestran una entrada básica de texto e imagen.

  • Especificas el tipo MIME del archivo y su URL Cloud Storage for Firebase (que siempre comienza con gs://) en la entrada de la solicitud. Estos valores son metadatos que se asignan automáticamente a cualquier archivo que se sube a un bucket de Cloud Storage.

  • Debes usar un tipo de archivo y una URL compatibles.


En esta guía de solución, se describe cómo configurar Cloud Storage for Firebase, subir un archivo a un bucket de Cloud Storage for Firebase desde tu app y, luego, incluir el tipo MIME y la URL de Cloud Storage for Firebase del archivo en tu solicitud multimodal a Gemini API.

¿Quieres ver los ejemplos de código? ¿O ya configuraste Cloud Storage for Firebase y estás listo para comenzar a usarlo con tus solicitudes multimodales?

Ir a los ejemplos de código

¿Por qué usar Cloud Storage for Firebase con tu app?

Cloud Storage for Firebase usa la misma infraestructura rápida, segura y escalable que Google Cloud Storage para almacenar objetos blob y archivos, y sus SDK de cliente se compilan específicamente para apps web y para dispositivos móviles.

Para los SDKs de Vertex AI in Firebase, el tamaño máximo de la solicitud es de 20 MB. Recibirás un error HTTP 413 si una solicitud es demasiado grande. Si el tamaño de un archivo hace que el tamaño total de la solicitud supere los 20 MB, usa una URL Cloud Storage for Firebase para incluir el archivo en tu solicitud multimodal. Sin embargo, si un archivo es pequeño, a menudo puedes pasarlo directamente como datos intercalados (sin embargo, ten en cuenta que un archivo proporcionado como datos intercalados se codifica en Base64 en tránsito, lo que aumenta el tamaño de la solicitud).

Estos son algunos beneficios adicionales de usar Cloud Storage for Firebase:

  • Puedes hacer que los usuarios finales suban imágenes directamente desde tu app a un bucket de Cloud Storage for Firebase y, luego, puedes incluir esas imágenes en tus instrucciones multimodales con solo especificar el tipo de MIME del archivo y la URL de Cloud Storage for Firebase (que es un identificador para el archivo).

  • Puedes ahorrarles tiempo y ancho de banda a los usuarios finales si necesitan proporcionar imágenes, sobre todo si tienen una calidad de red deficiente o inestable.

    • Si se interrumpe una carga o descarga de archivos, los SDK de Cloud Storage for Firebase reinician automáticamente la operación desde el punto en que se detuvo.
    • El mismo archivo subido se puede usar varias veces sin que el usuario final necesite subir el mismo archivo cada vez que lo necesite en tu app (como en una nueva solicitud multimodal).
  • Puedes restringir el acceso de los usuarios finales a los archivos almacenados en Cloud Storage for Firebase con Firebase Security Rules, que permite que solo un usuario autorizado suba, descargue o borre archivos.

  • Puedes acceder a los archivos de tu bucket desde Firebase o desde Google Cloud, lo que te brinda la flexibilidad para realizar procesamiento en el servidor, como el filtrado de imágenes o la transcodificación de videos con las APIs de Google Cloud Storage.

¿Qué tipos de archivos y URLs son compatibles?

Estos son los requisitos para los archivos y las URLs cuando deseas usar URLs de Cloud Storage for Firebase con los SDK de Vertex AI in Firebase:

  • El archivo debe cumplir con los requisitos de los archivos de entrada para solicitudes multimodales cuando se usan los SDK de Vertex AI in Firebase. Esto incluye requisitos como el tipo de MIME y el tamaño del archivo.

  • El archivo debe almacenarse en un bucket de Cloud Storage for Firebase (lo que significa que los servicios de Firebase, como Firebase Security Rules, pueden acceder al bucket). Si puedes ver tu bucket en la consola de Firebase, es un bucket de Cloud Storage for Firebase.

  • El bucket de Cloud Storage for Firebase debe estar en el mismo proyecto de Firebase en el que registraste tu app.

  • La URL Cloud Storage for Firebase del archivo debe comenzar con gs://, que es la forma en que se construyen todas las URLs de Google Cloud Storage.

  • La URL del archivo no puede ser una URL de "navegador" (por ejemplo, la URL de una imagen que encuentres en Internet).

Además, el Firebase Security Rules de tu bucket debe permitir el acceso adecuado al archivo. Por ejemplo:

  • Si tienes reglas públicas, cualquier usuario o cliente puede acceder al archivo y proporcionar su URL en una llamada con un SDK de Vertex AI in Firebase. Estos tipos de reglas solo deben usarse para comenzar y durante los primeros prototipos (a menos que los archivos realmente deban ser archivos de acceso público).

  • Si tienes reglas sólidas (muy recomendable), Firebase verificará que el usuario que accedió o el cliente tenga acceso suficiente al archivo antes de permitir que se realice la llamada con la URL proporcionada.

Usa URLs de Cloud Storage for Firebase con Vertex AI in Firebase

Paso 1: Configura Cloud Storage for Firebase

Estas son las tareas de alto nivel que deberás realizar:

  1. Crea un bucket de Cloud Storage for Firebase en tu proyecto de Firebase.

  2. Aplica Firebase Security Rules a este bucket. Firebase Security Rules te ayuda a proteger tus archivos, ya que restringe el acceso a los usuarios finales autorizados.

  3. Agrega la biblioteca cliente de Cloud Storage for Firebase a tu app.

    Ten en cuenta que puedes omitir esta tarea, pero, luego, debes siempre incluir de forma explícita el tipo MIME y los valores de la URL de Cloud Storage for Firebase en tus solicitudes multimodales.

Paso 2: Sube un archivo a un bucket

Cuando subes un archivo a un bucket, Cloud Storage aplica automáticamente los siguientes dos datos al archivo. Deberás incluir estos valores en la solicitud multimodal (como se muestra en el siguiente paso de esta guía).

  • Tipo de MIME: Es el tipo de contenido multimedia del archivo (por ejemplo, image/png). Cloud Storage for Firebase intentará detectar automáticamente el tipo de MIME durante la carga y aplicar esos metadatos al objeto del bucket. Sin embargo, de forma opcional, puedes especificar el tipo MIME durante la carga.

  • URL de Cloud Storage for Firebase: Es un identificador único para el archivo. La URL debe comenzar con gs://.

Paso 3: Incluye el tipo de MIME y la URL del archivo en una solicitud multimodal

Una vez que tengas un archivo almacenado en un bucket de Cloud Storage for Firebase, puedes incluir su tipo de MIME y la URL de Cloud Storage for Firebase en una solicitud multimodal. Ten en cuenta que en estos ejemplos se muestra una solicitud generateContent sin transmisión, pero también puedes usar URLs Cloud Storage for Firebase con transmisión y chat.

Para incluir el archivo en la solicitud, puedes usar cualquiera de las siguientes opciones:

Opción 1: Incluye el tipo MIME y la URL con una referencia de almacenamiento

Usa esta opción si acabas de subir el archivo al bucket y deseas incluirlo de inmediato (a través de una referencia de Storage) en la solicitud multimodal. La llamada requiere el tipo de MIME y la URL de Cloud Storage for Firebase.

Opción 2: Incluye el tipo de MIME y la URL de forma explícita

Usa esta opción si conoces los valores del tipo de MIME y la URL de Cloud Storage for Firebase, y deseas incluirlos de forma explícita en la solicitud multimodal. La llamada requiere el tipo de MIME y la URL.