Große Dateien in multimodale Anfragen einbeziehen und Dateien mit Cloud Storage for Firebase verwalten

Wenn Sie Gemini API über Ihre App mit einem Vertex AI in Firebase SDK aufrufen, können Sie das Gemini-Modell auffordern, Text basierend auf einer multimodalen Eingabe zu generieren. Multimodale Prompts können mehrere Modalitäten (oder Arten von Eingaben) umfassen, z. B. Text sowie Bilder, PDFs, Video und Audio.

Für die Nicht-Textteile der Eingabe (z. B. Mediendateien) können Sie optional Cloud Storage for Firebase verwenden, um Dateien in die Anfrage aufzunehmen. Im Folgenden finden Sie alles, was Sie über diese Funktion wissen müssen:

  • Sie können Cloud Storage for Firebase mit jeder multimodalen Anfrage verwenden, z. B. für die Textgenerierung und den Chat. Die Beispiele in diesem Leitfaden zeigen eine einfache Text- und Bildeingabe.

  • Geben Sie in der Anfrageeingabe den MIME-Typ der Datei und die Cloud Storage for Firebase-URL (die immer mit gs:// beginnt) an. Diese Werte sind Metadaten, die automatisch jeder Datei zugewiesen werden, die in einen Cloud Storage-Bucket hochgeladen wird.

  • Sie müssen einen unterstützten Dateityp und eine unterstützte URL verwenden.


In dieser Lösungsanleitung wird beschrieben, wie Sie Cloud Storage for Firebase einrichten, eine Datei aus Ihrer App in einen Cloud Storage for Firebase-Bucket hochladen und dann den MIME-Typ der Datei und die Cloud Storage for Firebase-URL in Ihre multimodale Anfrage an die Gemini API aufnehmen.

Möchten Sie die Codebeispiele sehen? Oder haben Sie Cloud Storage for Firebase bereits eingerichtet und möchten es für Ihre multimodalen Anfragen verwenden?

Zu den Codebeispielen

Warum Cloud Storage for Firebase mit deiner App verwenden?

Cloud Storage for Firebase verwendet dieselbe schnelle, sichere und skalierbare Infrastruktur wie Google Cloud Storage zum Speichern von Blobs und Dateien. Die Client-SDKs sind speziell für mobile und Webanwendungen entwickelt.

Für Vertex AI in Firebase-SDKs beträgt die maximale Anfragegröße 20 MB. Wenn eine Anfrage zu groß ist, wird der HTTP-Fehler 413 angezeigt. Wenn die Größe der Datei 20 MB überschreitet, verwenden Sie eine Cloud Storage for Firebase-URL, um die Datei in die multimodale Anfrage aufzunehmen. Wenn eine Datei jedoch klein ist, können Sie sie oft direkt als Inline-Daten übergeben. Beachten Sie jedoch, dass eine Datei, die als Inline-Daten bereitgestellt wird, während der Übertragung in Base64 codiert wird, was die Größe der Anfrage erhöht.

Weitere Vorteile von Cloud Storage for Firebase:

  • Sie können Endnutzer Bilder direkt aus Ihrer Anwendung in einen Cloud Storage for Firebase-Bucket hochladen lassen und dann diese Bilder in Ihre multimodalen Prompts aufnehmen, indem Sie einfach den MIME-Typ und die Cloud Storage for Firebase-URL der Datei (eine Kennung für die Datei) angeben.

  • Sie können Ihren Endnutzern Zeit und Bandbreite sparen, wenn sie Bilder zur Verfügung stellen müssen, insbesondere bei schlechter oder instabiler Netzwerkqualität.

    • Wenn der Upload oder Download einer Datei unterbrochen wird, starten die Cloud Storage for Firebase-SDKs den Vorgang automatisch an der Stelle neu, an der er unterbrochen wurde.
    • Die gleiche hochgeladene Datei kann mehrmals verwendet werden, ohne dass der Endnutzer sie jedes Mal hochladen muss, wenn sie in Ihrer App benötigt wird (z. B. bei einer neuen multimodalen Anfrage).
  • Sie können den Zugriff von Endnutzern auf Dateien einschränken, die in Cloud Storage for Firebase gespeichert sind. Verwenden Sie dazu Firebase Security Rules. So können nur autorisierte Nutzer Dateien hochladen, herunterladen oder löschen.

  • Sie können über Firebase oder Google Cloud auf die Dateien in Ihrem Bucket zugreifen. So haben Sie die Flexibilität, serverseitige Verarbeitungen wie Bildfilterung oder Videotranscodierung mithilfe der Google Cloud Storage APIs durchzuführen.

Welche Dateitypen und URLs werden unterstützt?

Hier sind die Anforderungen an Dateien und URLs, wenn du Cloud Storage for Firebase-URLs mit den Vertex AI in Firebase-SDKs verwenden möchtest:

  • Die Datei muss die Anforderungen an Eingabedateien für multimodale Anfragen erfüllen, wenn die Vertex AI in Firebase SDKs verwendet werden. Dazu gehören Anforderungen wie der MIME-Typ und die Dateigröße.

  • Die Datei muss in einem Cloud Storage for Firebase-Bucket gespeichert sein. Das bedeutet, dass auf den Bucket von Firebase-Diensten wie Firebase Security Rules zugegriffen werden kann. Wenn Sie Ihren Bucket in der Firebase-Konsole sehen können, ist es ein Cloud Storage for Firebase-Bucket.

  • Der Cloud Storage for Firebase-Bucket muss sich im selben Firebase-Projekt befinden, in dem Sie Ihre App registriert haben.

  • Die Cloud Storage for Firebase-URL der Datei muss mit gs:// beginnen. So werden alle Google Cloud Storage-URLs erstellt.

  • Die URL der Datei darf keine Browser-URL sein, z. B. die URL eines Bildes, das Sie im Internet gefunden haben.

Außerdem muss die Firebase Security Rules für Ihren Bucket den entsprechenden Zugriff auf die Datei zulassen. Beispiel:

  • Wenn öffentliche Regeln gelten, kann jeder Nutzer oder Client auf die Datei zugreifen und ihre URL in einem Aufruf über ein Vertex AI in Firebase-SDK angeben. Diese Arten von Regeln sollten nur zu Beginn und während des frühen Prototyping verwendet werden, es sei denn, die Dateien sollen tatsächlich vollständig öffentlich zugänglich sein.

  • Bei robusten Regeln (dringend empfohlen) prüft Firebase, ob der angemeldete Nutzer oder Client ausreichende Zugriffsrechte auf die Datei hat, bevor der Aufruf über die angegebene URL weitergeleitet wird.

Cloud Storage for Firebase-URLs mit Vertex AI in Firebase verwenden

Schritt 1: Cloud Storage for Firebase einrichten

Dies sind die übergeordneten Aufgaben, die Sie ausführen müssen:

  1. Erstellen Sie in Ihrem Firebase-Projekt einen Cloud Storage for Firebase-Bucket.

  2. Wenden Sie Firebase Security Rules auf diesen Bucket an. Firebase Security Rules können Sie Ihre Dateien schützen, indem Sie den Zugriff auf autorisierte Endnutzer beschränken.

  3. Fügen Sie Ihrer App die Clientbibliothek für Cloud Storage for Firebase hinzu.

    Sie können diese Aufgabe überspringen, müssen dann aber immer den MIME-Typ und die URL-Werte Cloud Storage for Firebase explizit in Ihre multimodalen Anfragen einfügen.

Schritt 2: Datei in einen Bucket hochladen

Wenn Sie eine Datei in einen Bucket hochladen, wendet Cloud Storage automatisch die folgenden beiden Informationen auf die Datei an. Sie müssen diese Werte in die multimodale Anfrage aufnehmen (wie im nächsten Schritt dieses Leitfadens gezeigt).

  • MIME-Typ: Dies ist der Medientyp der Datei (z. B. image/png). Cloud Storage for Firebase versucht beim Hochladen automatisch, den MIME-Typ zu ermitteln und diese Metadaten auf das Objekt im Bucket anzuwenden. Sie können den MIME-Typ jedoch optional während des Uploads angeben.

  • Cloud Storage for Firebase URL: Dies ist eine eindeutige Kennung für die Datei. Die URL muss mit gs:// beginnen.

Schritt 3: MIME-Typ und URL der Datei in eine multimodale Anfrage einfügen

Wenn Sie eine Datei in einem Cloud Storage for Firebase-Bucket gespeichert haben, können Sie ihren MIME-Typ und die Cloud Storage for Firebase-URL in eine multimodale Anfrage aufnehmen. Diese Beispiele zeigen eine generateContent-Anfrage ohne Streaming. Sie können aber auch Cloud Storage for Firebase-URLs für Streaming und Chats verwenden.

Sie haben folgende Möglichkeiten, die Datei in die Anfrage aufzunehmen:

Option 1: MIME-Typ und URL mithilfe einer Storage-Referenz einschließen

Verwenden Sie diese Option, wenn Sie die Datei gerade erst in den Bucket hochgeladen haben und die Datei (über eine Speicherreferenz) sofort in die multimodale Anfrage einbeziehen möchten. Für den Aufruf sind sowohl der MIME-Typ als auch die URL Cloud Storage for Firebase erforderlich.

Option 2: MIME-Typ und URL explizit einschließen

Verwenden Sie diese Option, wenn Sie die Werte für den MIME-Typ und die Cloud Storage for Firebase-URL kennen und sie explizit in die multimodale Anfrage aufnehmen möchten. Für den Aufruf sind sowohl der MIME-Typ als auch die URL erforderlich.