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

Cuando llamas a la API de Gemini desde tu app con un SDK de Vertex AI para Firebase, puedes indicarle al modelo de Gemini que genere texto basado en una entrada multimodal. Las instrucciones multimodales pueden incluir varias modalidades (o tipos de entrada), como texto junto con imágenes, PDF, video y audio.

En el caso de las partes de la entrada que no sean de texto (como los archivos multimedia), puedes usar Cloud Storage para Firebase de manera opcional para incluir archivos en la solicitud. En términos generales, esto es lo que debes saber sobre esta función:

  • Puedes usar Cloud Storage para Firebase con cualquier solicitud multimodal (como generación de texto y chat). En los ejemplos de esta guía, se muestra una entrada básica de imagen y texto.

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

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


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

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

Ir a los ejemplos de código

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

Cloud Storage para Firebase usa la misma infraestructura rápida, segura y escalable que Google Cloud Storage en el almacenamiento de BLOB y archivos. Además, sus SDKs cliente están diseñados específicamente para apps web y para dispositivos móviles.

En el caso de los SDK de Vertex AI para Firebase, el tamaño máximo de solicitud es de 20 MB. Si una solicitud es demasiado grande, se mostrará el error HTTP 413. Si el tamaño de un archivo hace que el tamaño total de la solicitud supere los 20 MB, usa una URL de Cloud Storage para Firebase para incluir el archivo en tu solicitud multimodal. Sin embargo, si un archivo es pequeño, a menudo se puede pasar 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 para Firebase:

  • Puedes hacer que los usuarios finales suban imágenes directamente desde tu app a un bucket de Cloud Storage para 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 para Firebase (que es un identificador del archivo).

  • Puedes ahorrar tiempo y ancho de banda a tus usuarios finales si necesitan proporcionar imágenes, en especial si tienen una calidad de red deficiente o inestable.

    • Si se interrumpe la carga o descarga de un archivo, los SDKs de Cloud Storage para Firebase reiniciarán automáticamente la operación justo donde se interrumpió.
    • Se puede usar el mismo archivo varias veces sin que el usuario final tenga que subir el mismo archivo cada vez que sea necesario en tu app (como en una solicitud multimodal nueva).
  • Puedes restringir el acceso de los usuarios finales a los archivos almacenados en Cloud Storage para Firebase con las reglas de seguridad de Firebase, que permiten que solo un usuario autorizado suba, descargue o borre archivos.

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

¿Qué tipos de archivos y URL son compatibles?

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

  • El archivo debe cumplir con los requisitos de los archivos de entrada para las solicitudes multimodales cuando se usan los SDK de Vertex AI para 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 para Firebase (lo que significa que los servicios de Firebase, como las reglas de seguridad de Firebase, pueden acceder al bucket). Si puedes ver tu bucket en Firebase console, significa que es un bucket de Cloud Storage para Firebase.

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

  • La URL de Cloud Storage para 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 encuentras en Internet).

Además, las reglas de seguridad de Firebase del bucket deben 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 para Firebase. Estos tipos de reglas solo deben usarse para comenzar y durante las primeras etapas del prototipado (a menos que los archivos en realidad estén destinados a ser completamente accesibles de manera pública).

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

Usa las URLs de Cloud Storage para Firebase con Vertex AI para Firebase

Paso 1: Configura Cloud Storage para Firebase

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

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

  2. Aplica las reglas de seguridad de Firebase a este bucket. Las reglas de seguridad de Firebase te ayudan a proteger tus archivos, ya que restringen el acceso a los usuarios finales autorizados.

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

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

Paso 2: Sube un archivo a un bucket

Cuando subes un archivo a un bucket, Cloud Storage aplica de forma automática los dos datos siguientes 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: Este es el tipo de medio del archivo (por ejemplo, image/png). Cloud Storage para Firebase intentará detectar el tipo de MIME de forma automática durante la carga y aplicar esos metadatos al objeto en el bucket. Sin embargo, puedes especificar el tipo de MIME durante la carga.

  • URL de Cloud Storage para Firebase: Este es un identificador único del 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 para Firebase, puedes incluir su tipo de MIME y la URL de Cloud Storage para Firebase en una solicitud multimodal. Ten en cuenta que estos ejemplos muestran una solicitud generateContent sin transmisión, pero también puedes usar las URLs de Cloud Storage para 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 de MIME y la URL mediante una referencia de Storage

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 para 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 para Firebase y deseas incluirlos de forma explícita en la solicitud multimodal. La llamada requiere tanto el tipo de MIME como la URL.