Crea esperienze ibride nelle app Apple con modelli ospitati sul dispositivo e sul cloud

Puoi creare app e funzionalità Apple basate sull'AI con l'inferenza ibrida utilizzando Firebase AI Logic. L'inferenza ibrida consente di eseguire l'inferenza utilizzando modelli sul dispositivo (in particolare il framework Foundation Models di Apple) quando disponibili e di eseguire il failover senza problemi sui modelli Google ospitati sul cloud in caso contrario (e viceversa).

Questa pagina descrive come iniziare a utilizzare l'SDK client, oltre a mostrare opzioni e funzionalità di configurazione aggiuntive, come la temperatura.

Tieni presente che l'inferenza on-device tramite Firebase AI Logic è supportata per le app Apple che utilizzano l'Firebase AI Logic SDK v12.13.0+ e vengono eseguite su dispositivi con Apple Intelligence abilitato. È regolato dai Requisiti di utilizzo accettabile per il framework Foundation Models di Apple.

Casi d'uso consigliati

  • L'utilizzo di un modello on-device per l'inferenza offre:

    • Maggiore privacy
    • Inferenza senza costi
    • Funzionalità offline
  • L'utilizzo delle offerte con funzionalità ibrida:

    • Offrire a tutti i clienti un'esperienza simile con l'app, indipendentemente dal dispositivo dell'utente finale
    • Migliorare la disponibilità delle funzionalità di AI generativa, indipendentemente dalla connettività a internet, dalle limitazioni della quota o dalle funzionalità del dispositivo

Funzionalità, API e dispositivi supportati

Prima di implementare l'inferenza ibrida e on-device utilizzando Firebase AI Logic, esamina questa sezione per capire cosa è supportato per le app Apple.

Funzionalità e capacità supportate per l'inferenza sul dispositivo

L'inferenza sul dispositivo supporta solo la generazione di testo, in particolare le seguenti funzionalità di generazione di testo:

Assicurati di esaminare l'elenco dettagliato dell'inferenza ibrida o sul dispositivo non ancora supportata in fondo a questa pagina.

API e dispositivi supportati

Inizia

Assicurati di aver esaminato la sezione precedente che descrive le funzionalità, le API e i dispositivi supportati.

Questi passaggi iniziali descrivono la configurazione generale richiesta per qualsiasi richiesta di prompt supportata che vuoi inviare.

Passaggio 1: configura un progetto Firebase e connetti la tua app a Firebase

  1. Accedi alla console Firebase, quindi seleziona il tuo progetto Firebase.

  2. Nella console Firebase, vai a Servizi AI > AI Logic.

  3. Fai clic su Inizia per avviare un workflow guidato che ti aiuti a configurare le API richieste e le risorse per il tuo progetto.

  4. Configura il progetto in modo che utilizzi un provider "Gemini API".

    Ti consigliamo di iniziare a utilizzare Gemini Developer API.In qualsiasi momento, puoi configurare Vertex AI Gemini API (e il relativo requisito di fatturazione).

    Per Gemini Developer API, la console attiverà le API richieste e creerà una chiave API Gemini nel tuo progetto.
    Non aggiungere questa chiave API Gemini nel codebase della tua app. Scopri di più.

  5. Se richiesto nel flusso di lavoro della console, segui le istruzioni sullo schermo per registrare la tua app e connetterla a Firebase.

  6. Continua con il passaggio successivo di questa guida per aggiungere l'SDK alla tua app.

Passaggio 2: aggiungi gli SDK necessari

Utilizza Swift Package Manager (SPM) per installare e gestire le dipendenze di Xcode. Il supporto ibrido è disponibile solo quando utilizzi SPM.

La libreria Firebase AI Logic fornisce l'accesso alle API per interagire con i modelli generativi. La libreria è inclusa nell'SDK Firebase per le piattaforme Apple (firebase-ios-sdk).

Se utilizzi già Firebase, assicurati che il pacchetto Firebase sia v12.13.0 o versioni successive.

  1. In Xcode, con il progetto dell'app aperto, vai a File > Add Package Dependencies (File > Aggiungi dipendenze pacchetto).

  2. Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:

    https://github.com/firebase/firebase-ios-sdk
    
  3. Seleziona l'ultima versione dell'SDK.

  4. Seleziona la libreria FirebaseAILogic.

Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.

Passaggio 3: inizializza il servizio e crea un'istanza della sessione del modello

Fai clic sul tuo fornitore Gemini API per visualizzare i contenuti e il codice specifici del fornitore in questa pagina.

Configura quanto segue prima di inviare una richiesta di prompt al modello.

  1. Inizializza il servizio per il fornitore Gemini API che hai scelto.

  2. Crea un'istanza GenerativeModelSession con un HybridModel.

  3. Imposta i modelli primary e secondary in base alle tue preferenze. Puoi impostare l'ordine di inferenza tentata:

    • Tenta prima l'inferenza sul dispositivo, ma consenti il fallback al cloud: imposta primary su un modello "di sistema" e secondary su un modello cloud.

    • Tenta prima l'inferenza nel cloud, ma consenti il fallback sul dispositivo: imposta primary su un modello cloud e secondary su un modello "di sistema".

    Tieni presente che l'SDK supporta l'impostazione di un solo model, il che significa che l'SDK tenterà solo l'inferenza sul dispositivo o nel cloud. Tuttavia, per un'esperienza ibrida, devi creare un HybridModel e impostare i modelli primary e secondary.

    Scopri di più sul comportamento delle "modalità di inferenza" (l'ordine di inferenza tentato) nelle opzioni di configurazione.

L'esempio seguente mostra come tentare prima l'inferenza on-device, ma consentire il fallback al modello ospitato sul cloud:

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Initialize a cloud model that supports your use case
let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
// Initialize an on-device model that supports your use case
let systemModel = FirebaseAI.SystemLanguageModel.default

// Create a Hybrid Model
// Provide your preferred model as `primary` and your fallback model as `secondary`
// In this example, attempt to use on-device model; otherwise, fall back to cloud.
let hybridModel = HybridModel(
  primary: systemModel,
  secondary: cloudModel
)

// Create a GenerativeModelSession with the HybridModel created earlier.
let session = firebaseAI.generativeModelSession(
  model: hybridModel,
)

Passaggio 4: invia una richiesta di prompt a un modello

Questa sezione mostra come:

Generare testo da input di solo testo

Prima di provare questo esempio, assicurati di aver completato la sezione Inizia di questa guida.

Per generare testo da un prompt che contiene testo, utilizza respond(to:) nel seguente modo:

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To generate text output, call `respond(to:)` with the text input
let response = try await session.respond(to: prompt)
print(response.content)

Trasmettere in streaming il testo dall'input di solo testo

Prima di provare questo esempio, assicurati di aver completato la sezione Inizia di questa guida.

Puoi ottenere interazioni più rapide senza attendere l'intero risultato della generazione del modello e utilizzare lo streaming per gestire i risultati parziali. Per trasmettere in streaming il testo generato da un prompt che contiene testo, utilizza streamResponse(to:) nel seguente modo:

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To stream generated text output, call `streamResponse(to:)` with the text input
let stream = session.streamResponse(to: prompt)
for try await snapshot in stream {
  print(snapshot.content)
}

Cos'altro puoi fare?

Puoi utilizzare varie opzioni e funzionalità di configurazione aggiuntive per le tue esperienze ibride:

Funzionalità non ancora supportate per l'inferenza ibrida o sul dispositivo

Trattandosi di una release sperimentale, non tutte le funzionalità di Firebase AI Logic o dei modelli ospitati sul cloud sono supportate.

  • Le seguenti funzionalità non sono supportate per le implementazioni ibride o sul dispositivo: i modelli Imagen, l'API Gemini Live e i modelli di prompt. Inoltre, non è consigliabile fare affidamento sul conteggio dei token perché il conteggio varia tra i modelli ospitati sul cloud e quelli sul dispositivo, quindi non esiste un fallback intuitivo.

  • Le seguenti funzionalità non sono ancora supportate per l'inferenza sul dispositivo. Se vuoi utilizzare una di queste funzionalità, ti consigliamo di utilizzare solo un modello ospitato sul cloud per un'esperienza più coerente.

    • Generare testo da input multimodali, come immagini, audio, video e documenti (PDF)

    • Generare contenuti multimediali, come immagini, audio o video

    • Invio di richieste che superano i 4096 token (o circa 3000 parole in inglese).

    • Fornire al modello sul dispositivo strumenti integrati per aiutarlo a generare la risposta (come l'esecuzione di codice, il contesto dell'URL e il grounding con la Ricerca Google)

  • Il monitoraggio dell'AI nella console Firebase non mostra dati per l'inferenza sul dispositivo (inclusi i log sul dispositivo). Tuttavia, qualsiasi inferenza che utilizza un modello ospitato sul cloud può essere monitorata come qualsiasi altra inferenza tramite Firebase AI Logic.

Limitazioni aggiuntive

Oltre a quanto sopra, l'inferenza sul dispositivo presenta le seguenti limitazioni:


Fornisci un feedback sulla tua esperienza con Firebase AI Logic