Prompting con l'AI ibrida con la logica AI di Firebase

Data di pubblicazione: 20 maggio 2025

Per soddisfare le esigenze degli utenti, indipendentemente dalla piattaforma o dall'hardware che utilizzano, puoi configurare un set fallback al cloud con Firebase AI Logic per l'API Prompt integrata .

Creare un'esperienza di AI ibrida

L'AI integrata offre una serie di vantaggi, in particolare:

  • Elaborazione locale dei dati sensibili:se lavori con dati sensibili, puoi offrire funzionalità di AI agli utenti con la crittografia end-to-end.
  • Utilizzo dell'AI offline:gli utenti possono accedere alle funzionalità di AI anche quando sono offline o la connettività è scaduta.

Sebbene questi vantaggi non si applichino alle applicazioni cloud, puoi garantire un'esperienza senza interruzioni per chi non può accedere all'AI integrata.

Iniziare a utilizzare Firebase

  1. Crea un progetto Firebase e registra la tua applicazione web.
  2. Leggi la documentazione dell'SDK Firebase JavaScript per continuare la configurazione dell'applicazione web.

I progetti Firebase creano un progetto Google Cloud con configurazioni e servizi specifici di Firebase. Scopri di più su Google Cloud e Firebase.

Installare l'SDK

Questo flusso di lavoro utilizza npm e richiede strumenti di framework JavaScript o bundler di moduli. Firebase AI Logic è ottimizzato per funzionare con i bundler di moduli per eliminare il codice inutilizzato e ridurre le dimensioni dell'SDK.

npm install firebase

Una volta installato, inizializza Firebase nella tua applicazione.

Utilizzare Firebase AI Logic

Una volta installato e inizializzato Firebase, scegli l'API Gemini Developer o l'API Gemini, quindi inizializza e crea un'istanza.

Una volta inizializzato, puoi richiedere al modello di inserire testo o input multimodali.

Prompt di testo

Puoi utilizzare testo normale per le istruzioni del modello. Ad esempio, potresti chiedere al modello di raccontarti una barzelletta.

Hai a disposizione alcune opzioni per il routing della richiesta:

  • Utilizza l'AI integrata per impostazione predefinita quando è disponibile impostando mode su 'prefer_on_device' nella funzione getGenerativeModel(). Se il modello integrato non è disponibile, la richiesta eseguirà il fallback senza problemi per utilizzare il modello cloud (se sei online).

  • Utilizza il modello cloud per impostazione predefinita quando sei online impostando mode su 'prefer_in_cloud' nella funzione getGenerativeModel(). Se sei offline, la richiesta eseguirà il fallback senza problemi per utilizzare l'AI integrata, se disponibile.

// Initialize the Google AI service.
const googleAI = getAI(firebaseApp);

// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(googleAI, { mode: 'prefer_on_device' });

const prompt = 'Tell me a joke';

const result = await model.generateContentStream(prompt);

for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}
console.log('Complete response', await result.response);

Prompt multimodali

Oltre al testo, puoi anche richiedere immagini o audio. Potresti chiedere al modello di descrivere i contenuti di un'immagine o di trascrivere un file audio.

Le immagini devono essere passate come stringa con codifica base64 come oggetto FileDataPart di Firebase, che puoi fare con la funzione helper fileToGenerativePart().

// Converts a File object to a `FileDataPart` object.
// https://firebase.google.com/docs/reference/js/vertexai.filedatapart
async function fileToGenerativePart(file) {
    const base64EncodedDataPromise = new Promise((resolve) => {
      const reader = new FileReader();
      reader.onload = () => resolve(reader.result.split(',')[1]);
      reader.readAsDataURL(file);
    });

    return {
      inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
    };
  }

  const fileInputEl = document.querySelector('input[type=file]');

  fileInputEl.addEventListener('change', async () => {
    const prompt = 'Describe the contents of this image.';

    const imagePart = await fileToGenerativePart(fileInputEl.files[0]);

    // To generate text output, call generateContent with the text and image
    const result = await model.generateContentStream([prompt, imagePart]);

    for await (const chunk of result.stream) {
      const chunkText = chunk.text();
      console.log(chunkText);
    }
    console.log(Complete response: ', await result.response);
  });

Demo

Visita la demo di Firebase AI Logic su diversi dispositivi e browser. Puoi vedere se la risposta del modello proviene dal modello di AI integrato o dal cloud.

Sull'hardware supportato in Chrome, la demo utilizza l'API Prompt e Gemini Nano. Vengono effettuate solo 3 richieste per il documento principale, il file JavaScript e il file CSS.

Firebase AI Logic in esecuzione in Chrome, utilizzando le API AI integrate.

In un altro browser o in un sistema operativo senza supporto per l'AI integrata, viene effettuata una richiesta aggiuntiva all'endpoint Firebase, https://firebasevertexai.googleapis.com.

Firebase AI Logic in esecuzione in Safari, che invia una richiesta ai server Firebase.

Partecipare e condividere feedback

Firebase AI Logic può essere un'ottima opzione per integrare le funzionalità di AI nelle tue app web. Fornendo un fallback al cloud quando l'API Prompt non è disponibile, l'SDK garantisce una maggiore accessibilità e affidabilità delle funzionalità di AI.

Ricorda che le applicazioni cloud creano nuove aspettative in termini di privacy e funzionalità, quindi è importante informare gli utenti su dove vengono elaborati i loro dati.