Includi file di grandi dimensioni nelle richieste multimodali e gestisci i file utilizzando Cloud Storage for Firebase

Quando chiami Gemini API dalla tua app utilizzando un SDK Vertex AI in Firebase, puoi chiedere al modello Gemini di generare del testo in base a un input multimodale. I prompt multimodali possono includere più modalità (o tipi di input), come testo, immagini, PDF, video e audio.

Per le parti non testuali dell'input (come i file multimediali), puoi utilizzare facoltativamente Cloud Storage for Firebase per includere i file nella richiesta. In linea generale, ecco ciò che devi sapere su questa funzionalità:

  • Puoi utilizzare Cloud Storage for Firebase con qualsiasi richiesta multimodale (ad esempio la generazione di testo e la chat). Gli esempi riportati in questa guida mostrano un input di testo e immagini di base.

  • Puoi specificare il tipo MIME del file e il relativo URL Cloud Storage for Firebase (che inizia sempre con gs://) nell'input della richiesta. Questi valori sono metadati assegnati automaticamente a qualsiasi file caricato in un bucket Cloud Storage.

  • Devi utilizzare un tipo di file e un URL supportati.


Questa guida alle soluzioni descrive come configurare Cloud Storage for Firebase, caricare un file in un bucket Cloud Storage for Firebase dalla tua app, quindi includere il tipo MIME del file e l'URL Cloud Storage for Firebase nella richiesta multimodale a Gemini API.

Vuoi vedere gli esempi di codice? Oppure hai già configurato Cloud Storage for Firebase e vuoi iniziare a utilizzarlo con le tue richieste multimodali?

Vai agli esempi di codice

Perché usare Cloud Storage for Firebase con la tua app?

Cloud Storage for Firebase utilizza la stessa infrastruttura veloce, sicura e scalabile di Google Cloud Storage per archiviare BLOB e file e i suoi SDK client sono creati specificamente per le app web e per dispositivi mobili.

Per gli SDK Vertex AI in Firebase, la dimensione massima della richiesta è 20 MB. Viene visualizzato un errore HTTP 413 se una richiesta è troppo grande. Se le dimensioni di un file superano i 20 MB, utilizza un URL Cloud Storage for Firebase per includere il file nella richiesta multimodale. Tuttavia, se un file è di piccole dimensioni, spesso puoi passarlo direttamente come dati in linea (tieni presente però che un file fornito come dati in linea viene codificato in base64 durante il transito, il che aumenta le dimensioni della richiesta).

Ecco alcuni vantaggi aggiuntivi dell'utilizzo di Cloud Storage for Firebase:

  • Puoi chiedere agli utenti finali di caricare le immagini direttamente dalla tua app in un bucket Cloud Storage for Firebase, per poi includerle nei prompt multimodali semplicemente specificando il tipo MIME del file e l'URL Cloud Storage for Firebase (che è un identificatore del file).

  • Puoi far risparmiare tempo e larghezza di banda agli utenti finali se devono fornire immagini, soprattutto se la qualità della rete è scarsa o instabile.

    • Se il caricamento o il download di un file viene interrotto, gli SDK Cloud Storage for Firebase riavviano automaticamente l'operazione esattamente dal punto in cui era stata interrotta.
    • Lo stesso file caricato può essere utilizzato più volte senza che l'utente finale debba caricarlo ogni volta che è necessario nella tua app (ad esempio in una nuova richiesta multimodale).
  • Puoi limitare l'accesso degli utenti finali ai file archiviati in Cloud Storage for Firebase utilizzando Firebase Security Rules, che consente solo a un utente autorizzato di caricare, scaricare o eliminare file.

  • Puoi accedere ai file nel tuo bucket da Firebase o Google Cloud, che ti offre la flessibilità di eseguire l'elaborazione lato server, come il filtro delle immagini o la transcodifica di video utilizzando le API Google Cloud Storage.

Quali tipi di file e URL sono supportati?

Di seguito sono riportati i requisiti per i file e gli URL quando vuoi utilizzare gli URL Cloud Storage for Firebase con gli SDK Vertex AI in Firebase:

  • Il file deve soddisfare i requisiti dei file di input per le richieste multimodali quando si utilizzano gli SDK Vertex AI in Firebase. Ciò include requisiti come il tipo MIME e le dimensioni del file.

  • Il file deve essere archiviato in un bucket Cloud Storage for Firebase (quindi è accessibile ai servizi Firebase, come Firebase Security Rules). Se puoi visualizzare il bucket nella console Firebase, si tratta di un bucket Cloud Storage for Firebase.

  • Il bucket Cloud Storage for Firebase deve trovarsi nello stesso progetto Firebase in cui hai registrato l'app.

  • L'URL Cloud Storage for Firebase del file deve iniziare con gs://, che è il modo in cui vengono creati tutti gli URL Google Cloud Storage.

  • L'URL del file non può essere un URL del "browser" (ad esempio, l'URL di un'immagine che trovi su internet).

Inoltre, l'elemento Firebase Security Rules per il bucket deve consentire l'accesso appropriato al file. Ad esempio:

  • Se hai regole pubbliche, qualsiasi utente o cliente può accedere al file e fornire il proprio URL in una chiamata utilizzando un SDK Vertex AI in Firebase. Questi tipi di regole dovrebbero essere utilizzati solo all'inizio e durante la fase iniziale di prototipazione (a meno che i file non siano effettivamente accessibili al pubblico).

  • Se hai regole efficaci (fortemente consigliate), Firebase verificherà che l'utente o il cliente che ha eseguito l'accesso abbia accesso sufficiente al file prima di consentire la chiamata con l'URL fornito.

Utilizzare gli URL Cloud Storage for Firebase con Vertex AI in Firebase

Passaggio 1: configura Cloud Storage for Firebase

Di seguito sono riportate le attività generali che dovrai svolgere:

  1. Crea un bucket Cloud Storage for Firebase nel tuo progetto Firebase.

  2. Applica Firebase Security Rules a questo bucket. Firebase Security Rules ti aiuta a proteggere i tuoi file limitando l'accesso agli utenti finali autorizzati.

  3. Aggiungi la libreria client per Cloud Storage for Firebase alla tua app.

    Tieni presente che puoi saltare questa attività, ma poi devi sempre includere esplicitamente il tipo MIME e i valori URL Cloud Storage for Firebase nelle richieste multimodali.

Passaggio 2: carica un file in un bucket

Quando carichi un file in un bucket, Cloud Storage applica automaticamente al file le due seguenti informazioni. Dovrai includere questi valori nella richiesta multimodale (come mostrato nel passaggio successivo di questa guida).

  • Tipo MIME: si tratta del tipo di file multimediale (ad esempio image/png). Cloud Storage for Firebase tenterà automaticamente di rilevare il tipo MIME durante il caricamento e applicherà i metadati all'oggetto nel bucket. Tuttavia, puoi specificare il tipo MIME durante il caricamento.

  • URL Cloud Storage for Firebase: si tratta di un identificatore univoco del file. L'URL deve iniziare con gs://.

Passaggio 3: includi il tipo MIME e l'URL del file in una richiesta multimodale

Dopo aver archiviato un file in un bucket Cloud Storage for Firebase, puoi includerne il tipo MIME e l'URL Cloud Storage for Firebase in una richiesta multimodale. Tieni presente che questi esempi mostrano una richiesta generateContent non in streaming, ma puoi anche utilizzare gli URL Cloud Storage for Firebase con streaming e chat.

Per includere il file nella richiesta, puoi utilizzare una delle seguenti opzioni:

Opzione 1: includi il tipo MIME e l'URL utilizzando un riferimento a archiviazione

Utilizza questa opzione se hai appena caricato il file nel bucket e vuoi includere immediatamente il file (tramite un riferimento di Storage) nella richiesta multimodale. La chiamata richiede sia il tipo MIME sia l'URL Cloud Storage for Firebase.

Opzione 2: includi il tipo MIME e l'URL in modo esplicito

Utilizza questa opzione se conosci i valori per il tipo MIME e l'URLCloud Storage for Firebase e vuoi includerli esplicitamente nella richiesta multimodale. La chiamata richiede sia il tipo MIME sia l'URL.