Vai direttamente alle istruzioni per la migrazione
Perché eseguire la migrazione per utilizzare gli SDK Firebase AI Logic?
Potresti aver provato un insieme alternativo di SDK client web o mobile che ti dava accesso a Gemini Developer API.
Questi SDK client non sono stati integrati nel solido ecosistema Firebase che offre servizi critici per le app mobile e web. Ora sono stati ritirati in favore degli SDK client Firebase AI Logic, che possono darti accesso a Gemini Developer API.
Funzionalità di sicurezza per app web e mobile
Per le app mobile e web, la sicurezza è fondamentale e richiede considerazioni speciali perché il codice, incluse le chiamate a Gemini API, viene eseguito in un ambiente non protetto. Puoi utilizzare Firebase App Check per difendere le API da usi impropri da parte di client non autorizzati.
Quando utilizzi Firebase App Check con Firebase AI Logic, non aggiungere mai la chiave API Gemini per Gemini Developer API direttamente nel codice base della tua app mobile o web. La chiave API Gemini rimane invece sul server, al riparo da utenti malintenzionati.
Ecosistema creato per app web e mobile
Firebase è la piattaforma di Google per lo sviluppo di app web e mobile. Se utilizzi Firebase AI Logic, le tue app fanno parte di un ecosistema incentrato sulle esigenze di sviluppatori e app full-stack. Ad esempio:
Impostare dinamicamente le configurazioni di runtime o sostituire i valori nella tua app (ad esempio il nome e la versione di un modello) senza rilasciare una nuova versione dell'app utilizzando Firebase Remote Config.
Utilizza Cloud Storage for Firebase per includere file di grandi dimensioni nelle richieste multimodali (se utilizzi Vertex AI Gemini API). Gli SDK client Cloud Storage ti aiutano a gestire i caricamenti e i download dei file (anche in condizioni di rete scadenti) e offrono una maggiore sicurezza per i dati degli utenti finali. Scopri di più nella nostra guida alla soluzione sull'utilizzo di Cloud Storage for Firebase.
Gestisci i dati strutturati utilizzando gli SDK di database creati per app web e mobile (ad es. Cloud Firestore).
Esegui la migrazione agli SDK Firebase AI Logic
Panoramica dei passaggi per eseguire la migrazione agli SDK Firebase AI Logic:
Passaggio 1: configura un progetto Firebase nuovo o esistente e collega la tua app a Firebase.
Passaggio 2: aggiungi gli SDK Firebase AI Logic alla tua app.
Passaggio 3: aggiorna le importazioni e l'inizializzazione nell'app.
Passaggio 4: aggiorna il codice in base alle funzionalità che utilizzi.
Passaggio 1: configura un progetto Firebase e collega la tua app
Accedi alla console Firebase, quindi seleziona il tuo progetto Firebase.
Nella console Firebase, vai alla pagina Firebase AI Logic.
Fai clic su Inizia per avviare un flusso di lavoro guidato che ti aiuta a configurare le API richieste e le risorse per il tuo progetto.
Seleziona Gemini Developer API. Se vuoi, puoi sempre configurare e utilizzare l'altro provider di API in un secondo momento.
La console attiverà le API richieste e creerà una nuova chiave API Gemini dedicata nel tuo progetto.
Non aggiungere questa nuova chiave API Gemini al codice sorgente della tua app. Scopri di più.Se richiesto nel flusso di lavoro della console, segui le istruzioni sullo schermo per registrare l'app e collegarla a Firebase.
Continua questa guida alla migrazione per aggiornare la libreria e l'inizializzazione nella tua app.
Passaggio 2: aggiungi l'SDK Firebase AI Logic alla tua app
Dopo aver configurato il progetto Firebase e collegato l'app a Firebase (vedi il passaggio precedente), ora puoi aggiungere l'SDK Firebase AI Logic alla tua app.
Swift
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
La libreria Firebase AI Logic fornisce l'accesso alle API per interagire con i modelli Gemini e Imagen. La libreria è inclusa nell'SDK Firebase per le piattaforme Apple (firebase-ios-sdk
).
Se utilizzi già Firebase, assicurati che il pacchetto Firebase sia almeno della versione 11.13.0.
In Xcode, con il progetto dell'app aperto, vai a File > Aggiungi dipendenze del pacchetto.
Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
https://github.com/firebase/firebase-ios-sdk
Seleziona la versione più recente dell'SDK.
Seleziona la raccolta
FirebaseAI
.
Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
Kotlin
L'SDK Firebase AI Logic per Android (firebase-ai
) fornisce accesso alle API per interagire con i modelli Gemini e Imagen.
Nel file Gradle del modulo (a livello di app)
(ad esempio <project>/<app-module>/build.gradle.kts
),
aggiungi la dipendenza per la libreria Firebase AI Logic per Android.
Ti consigliamo di utilizzare Firebase Android BoM per controllare la versione della libreria.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.14.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") }
Con Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase per Android.
Java
L'SDK Firebase AI Logic per Android (firebase-ai
) fornisce accesso alle API per interagire con i modelli Gemini e Imagen.
Nel file Gradle del modulo (a livello di app)
(ad esempio <project>/<app-module>/build.gradle.kts
),
aggiungi la dipendenza per la libreria Firebase AI Logic per Android.
Ti consigliamo di utilizzare Firebase Android BoM per controllare la versione della libreria.
Per Java, devi aggiungere altre due librerie.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.14.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") // Required for one-shot operations (to use `ListenableFuture` from Guava Android) implementation("com.google.guava:guava:31.0.1-android") // Required for streaming operations (to use `Publisher` from Reactive Streams) implementation("org.reactivestreams:reactive-streams:1.0.4") }
Con Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase per Android.
Web
La libreria Firebase AI Logic fornisce l'accesso alle API per interagire con i modelli Gemini e Imagen. La libreria è inclusa nell'SDK Firebase JavaScript per il web.
Installa l'SDK Firebase JS per il web utilizzando npm:
npm install firebase
Inizializza Firebase nella tua app:
import { initializeApp } from "firebase/app"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);
Dart
Il plug-in Firebase AI Logic per Flutter (firebase_ai
) fornisce accesso alle API per interagire con i modelli Gemini e Imagen.
Dalla directory del progetto Flutter, esegui il seguente comando per installare il plug-in di base e il plug-in Firebase AI Logic:
flutter pub add firebase_core && flutter pub add firebase_ai
Nel file
lib/main.dart
, importa il plug-in Firebase Core, il plug-in Firebase AI Logic e il file di configurazione generato in precedenza:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'firebase_options.dart';
Nel file
lib/main.dart
, inizializza Firebase utilizzando l'oggettoDefaultFirebaseOptions
esportato dal file di configurazione:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
Ricostruisci l'applicazione Flutter:
flutter run
Unity
Il supporto di Unity non era disponibile negli SDK client di Google AI.
Scopri come iniziare a utilizzare l'SDK Firebase AI Logic per Unity.
Rimuovi il vecchio SDK dalla tua app
Al termine della migrazione dell'app (consulta le restanti sezioni di questa guida), assicurati di eliminare la vecchia libreria.
Swift
Rimuovi la vecchia raccolta:
In Xcode, con il progetto dell'app aperto, vai al riquadro Dipendenze dei pacchetti.
Seleziona il pacchetto
generative-ai-swift
dall'elenco delle dipendenze del pacchetto.Fai clic sul pulsante
-
in fondo all'elenco e poi su Rimuovi per confermare.
Kotlin
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Java
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Web
// BEFORE
import { initializeApp } from "firebase/app";
import { GoogleGenerativeAI } from "@google/generative-ai";
Dart
Elimina il vecchio pacchetto:
flutter pub remove google_generative_ai
Unity
Il supporto di Unity non era disponibile negli SDK client di Google AI.
Scopri come iniziare a utilizzare l'SDK Firebase AI Logic per Unity.
Passaggio 3: aggiorna le importazioni e l'inizializzazione nell'app
Aggiorna le importazioni e la modalità di inizializzazione del servizio di backend Gemini Developer API e crea un'istanza GenerativeModel
.
Swift
// BEFOREimport GoogleGenerativeAI let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)// AFTER import FirebaseAI // Initialize the Gemini Developer API backend service let ai = FirebaseAI.firebaseAI(backend: .googleAI()) // Create a `GenerativeModel` instance with a model that supports your use case let model = ai.generativeModel(modelName: "gemini-2.0-flash")
Kotlin
// BEFOREimport com.google.ai.client.generativeai.Chat import com.google.ai.client.generativeai.type.Content import com.google.ai.client.generativeai.java.GenerativeModuleFutures...val generativeModel = GenerativeModel(modelName = "MODEL_NAME", // Access your API key as a Build Configuration variable apiKey = BuildConfig.apiKey )// AFTER import com.google.firebase.Firebase import com.google.firebase.ai.ai import com.google.firebase.ai.type.GenerativeBackend ... // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case val model = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel("gemini-2.0-flash")
Java
// BEFOREimport com.google.ai.client.generativeai.Chat; import com.google.ai.client.generativeai.type.Content; import com.google.ai.client.generativeai.java.GenerativeModuleFutures;...GenerativeModel gm = new GenerativeModel("MODEL_NAME", // Access your API key as a Build Configuration variable BuildConfig.apiKey ); GenerativeModelFutures model = GenerativeModelFutures.from(gm);// AFTER import com.google.firebase.ai.FirebaseAI; import com.google.firebase.ai.GenerativeModel; import com.google.firebase.ai.java.GenerativeModelFutures; import com.google.firebase.ai.type.GenerativeBackend; ... // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI()) .generativeModel("gemini-2.0-flash"); // Use the GenerativeModelFutures Java compatibility layer which offers // support for ListenableFuture and Publisher APIs GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Web
// BEFOREimport { GoogleGenerativeAI } from "@google/generative-ai"; // Fetch your API_KEY and access your API const API_KEY = "..."; const genAI = new GoogleGenerativeAI(API_KEY);...const model = genAI.getGenerativeModel({ model: "MODEL_NAME"});// AFTER import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig); // Initialize the Gemini Developer API backend service const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() }); // Create a `GenerativeModel` instance with a model that supports your use case const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });
Dart
// BEFOREimport 'package:google_generative_ai/google_generative_ai.dart'; final apiKey = Platform.environment['API_KEY']; if (apiKey == null) { print('No \$API_KEY environment variable'); exit(1); } final model = GenerativeModel(model: 'MODEL_NAME', apiKey: apiKey);// AFTER import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; // Initialize FirebaseApp await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case final model = FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');
Unity
Il supporto di Unity non era disponibile negli SDK client di Google AI.
Scopri come iniziare a utilizzare l'SDK Firebase AI Logic per Unity.
Tieni presente che a seconda della funzionalità in uso, potresti non creare sempre un'istanza GenerativeModel
.
- Per accedere a un modello Imagen,
crea un'istanza
ImagenModel
.
Passaggio 4: aggiorna il codice in base alle funzionalità che utilizzi
Questo passaggio descrive le modifiche che potrebbero essere necessarie a seconda delle funzionalità che utilizzi.
Gli SDK client Firebase AI Logic non supportano l'esecuzione del codice. Se utilizzi questa funzionalità, assicurati di supportarla nella tua app.
Esamina i seguenti elenchi per verificare eventuali modifiche che potresti dover apportare al codice per eseguire la migrazione agli SDK client Firebase AI Logic.
Obbligatorio per tutte le lingue e le piattaforme
Chiamata di funzioni
Se hai implementato questa funzionalità, dovrai apportare aggiornamenti alla modalità di definizione dello schema. Ti consigliamo di consultare la guida alle chiamate delle funzioni aggiornata per scoprire come scrivere le dichiarazioni delle funzioni.Generare output strutturato (ad es. JSON) utilizzando
responseSchema
Se hai implementato questa funzionalità, dovrai aggiornare la modalità di definizione dello schema. Ti consigliamo di consultare la nuova guida all'output strutturato per scoprire come scrivere schemi JSON.Timeout
- È stato modificato il timeout predefinito per le richieste in 180 secondi.
Obbligatorio in base alla piattaforma o alla lingua
Swift
Enumerazioni
La maggior parte dei tipi
enum
è stata sostituita construct
con variabili statiche. Questa variazione consente una maggiore flessibilità per l'evoluzione dell'API in modo compatibile con le versioni precedenti. Quando utilizzi le istruzioniswitch
, ora devi includere un casodefault:
per coprire i valori sconosciuti o non gestiti, inclusi i nuovi valori aggiunti all'SDK in futuro.L'enumerazione
BlockThreshold
è stata rinominata inHarmBlockThreshold
. Ora questo tipo è unstruct
.Sono state rimosse le richieste
unknown
eunspecified
dalle seguenti enumerazioni (orastruct
):HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
eFinishReason
.È stata sostituita l'enumerazione
ModelContent.Part
con un protocollo denominatoPart
per consentire l'aggiunta di nuovi tipi in modo compatibile con le versioni precedenti. Questa variazione è descritta in maggiore dettaglio nella sezione Parti dei contenuti.
Parti dei contenuti
È stato rimosso il protocollo
ThrowingPartsRepresentable
e sono stati semplificati gli inizializzatori perModelContent
per evitare errori occasionali del compilatore. Le immagini che non vengono codificate correttamente continueranno a generare errori se vengono utilizzate ingenerateContent
.Le caselle
ModelContent.Part
sono state sostituite con i seguenti tipistruct
conformi al protocolloPart
:- Da
.text
aTextPart
- Da
.data
aInlineDataPart
- Da
.fileData
aFileDataPart
- Da
.functionCall
aFunctionCallPart
- Da
.functionResponse
aFunctionResponsePart
- Da
Categoria di danno
- È stato modificato
HarmCategory
in modo che non sia più nidificato nel tipoSafetySetting
. Se lo chiamiSafetySetting.HarmCategory
, questo può essere sostituito conHarmCategory
.
- È stato modificato
Feedback sulla sicurezza
- È stato rimosso il tipo
SafetyFeedback
, poiché non è stato utilizzato in nessuna delle risposte.
- È stato rimosso il tipo
Metadati delle citazioni
- La proprietà
citationSources
è stata rinominata incitations
inCitationMetadata
.
- La proprietà
Caratteri fatturabili totali
- La proprietà
totalBillableCharacters
inCountTokensResponse
è stata modificata in modo da essere facoltativa per riflettere le situazioni in cui non vengono inviati caratteri.
- La proprietà
Risposta del candidato
- Il nome
CandidateResponse
è stato rinominato inCandidate
per allinearsi alle altre piattaforme.
- Il nome
Configurazione della generazione
- Le proprietà pubbliche di
GenerationConfig
sono state modificate ininternal
. Rimangono tutti configurabili nell'inizializzatore.
- Le proprietà pubbliche di
Kotlin
Enumerazioni
I corsi
enum
esealed
sono stati sostituiti da corsi regolari. Questa variazione consente una maggiore flessibilità per l'evoluzione dell'API in modo compatibile con le versioni precedenti.L'enumerazione
BlockThreshold
è stata rinominata inHarmBlockThreshold
.Sono stati rimossi i valori dalle seguenti enumerazioni:
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
eFinishReason
.
Metodi blob
- Tutti i metodi che includevano
Blob
nel nome sono stati rinominati in modo da utilizzareInlineData
.
- Tutti i metodi che includevano
Impostazioni di sicurezza
- Il campo
method
è stato modificato in modo da poter essere null.
- Il campo
Classe Duration
- Sono stati rimossi tutti gli utilizzi della classe
Duration
di Kotlin e sostituiti conlong
. Questa modifica offre una migliore interoperabilità con Java.
- Sono stati rimossi tutti gli utilizzi della classe
Metadati delle citazioni
- Ho inserito tutti i campi precedentemente dichiarati in
CitationMetadata
in una nuova classe denominataCitation
. Le citazioni sono disponibili nell'elenco chiamatocitations
inCitationMetadata
. Questa modifica consente un migliore allineamento tra i tipi su più piattaforme.
- Ho inserito tutti i campi precedentemente dichiarati in
Conteggio token
- Il campo
totalBillableCharacters
è stato modificato in modo da poter essere null.
- Il campo
Caratteri fatturabili totali
- La proprietà
totalBillableCharacters
inCountTokensResponse
è stata modificata in modo da essere facoltativa per riflettere le situazioni in cui non vengono inviati caratteri.
- La proprietà
Istanziazione di un modello
- Il parametro
requestOptions
è stato spostato alla fine dell'elenco dei parametri in modo da allinearsi alle altre piattaforme.
- Il parametro
Java
Enumerazioni
I corsi
enum
esealed
sono stati sostituiti da corsi regolari. Questa variazione consente una maggiore flessibilità per l'evoluzione dell'API in modo compatibile con le versioni precedenti.L'enumerazione
BlockThreshold
è stata rinominata inHarmBlockThreshold
.Sono stati rimossi i valori dalle seguenti enumerazioni:
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
eFinishReason
.
Metodi blob
- Tutti i metodi che includevano
Blob
nel nome sono stati rinominati in modo da utilizzareInlineData
.
- Tutti i metodi che includevano
Impostazioni di sicurezza
- Il campo
method
è stato modificato in modo da poter essere null.
- Il campo
Classe Duration
- Sono stati rimossi tutti gli utilizzi della classe
Duration
di Kotlin e sostituiti conlong
. Questa modifica offre una migliore interoperabilità con Java.
- Sono stati rimossi tutti gli utilizzi della classe
Metadati delle citazioni
- Ho inserito tutti i campi precedentemente dichiarati in
CitationMetadata
in una nuova classe denominataCitation
. Le citazioni sono disponibili nell'elenco chiamatocitations
inCitationMetadata
. Questa modifica consente un migliore allineamento tra i tipi su più piattaforme.
- Ho inserito tutti i campi precedentemente dichiarati in
Conteggio token
- Il campo
totalBillableCharacters
è stato modificato in modo da poter essere null.
- Il campo
Caratteri fatturabili totali
- La proprietà
totalBillableCharacters
inCountTokensResponse
è stata modificata in modo da essere facoltativa per riflettere le situazioni in cui non vengono inviati caratteri.
- La proprietà
Istanziazione di un modello
- Il parametro
requestOptions
è stato spostato alla fine dell'elenco dei parametri in modo da allinearsi alle altre piattaforme.
- Il parametro
Web
Tieni presente che l'SDK client Google AI per JavaScript ha subito molti cambiamenti da quando sono stati creati gli SDK client Google AI.Firebase AI Logic Il seguente elenco contiene alcune potenziali modifiche che potresti dover prendere in considerazione durante la migrazione agli SDK clientFirebase AI Logic.
Enumerazioni
- Sono stati rimossi i valori dalle seguenti enumerazioni:
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
eFinishReason
.
- Sono stati rimossi i valori dalle seguenti enumerazioni:
Motivo del blocco
blockReason
inPromptFeedback
è stato modificato in modo da essere facoltativo.
Grounding della ricerca
- Sono stati rimossi tutti gli utilizzi di questa funzionalità, poiché non è ancora supportata negli SDK di Firebase AI Logic.
Errori
- Sono stati rimossi tutti gli utilizzi di
GoogleGenerativeAIError
e, facoltativamente, è stato eseguito il passaggio aAIError
.
- Sono stati rimossi tutti gli utilizzi di
Dart
Enumerazioni
- Sono stati rimossi i valori dalle seguenti enumerazioni:
HarmCategory
,HarmProbability
,BlockReason
eFinishReason
.
- Sono stati rimossi i valori dalle seguenti enumerazioni:
Parte di dati
DataPart
è stato rinominato inInlineDataPart
e la funzionedata
static
ininlineData
per allinearsi alle altre piattaforme.
Opzioni di richiesta
- È stato rimosso
RequestOptions
perchétimeout
non era funzionale. Verrà nuovamente aggiunto nel prossimo futuro, ma verrà spostato nel tipoGenerativeModel
in modo da essere compatibile con le altre piattaforme.
- È stato rimosso
Sequenze di interruzioni
- Il parametro
stopSequences
inGenerationConfig
è stato modificato in modo da essere facoltativo e avere come valore predefinitonull
anziché un array vuoto.
- Il parametro
Citazioni
- La proprietà
citationSources
è stata rinominata incitations
inCitationMetadata
. Il tipoCitationSource
è stato rinominatoCitation
per allinearsi alle altre piattaforme.
- La proprietà
Tipi, metodi e proprietà pubblici non necessari
- Sono stati rimossi i seguenti tipi, metodi e proprietà che sono stati esposti involontariamente:
defaultTimeout
,CountTokensResponseFields
,parseCountTokensResponse
,parseEmbedContentResponse
,parseGenerateContentResponse
,parseContent
,BatchEmbedContentsResponse
,ContentEmbedding
,EmbedContentRequest
, eEmbedContentResponse
.
- Sono stati rimossi i seguenti tipi, metodi e proprietà che sono stati esposti involontariamente:
Conteggio token
- Sono stati rimossi dalla funzione
countTokens
i campi aggiuntivi non più necessari. È necessario solocontents
.
- Sono stati rimossi dalla funzione
Istanziazione di un modello
- Il parametro
systemInstruction
è stato spostato alla fine dell'elenco dei parametri per allinearsi alle altre piattaforme.
- Il parametro
Funzionalità di incorporamento
- È stata rimossa dal modello la funzionalità di embedding non supportata (
embedContent
ebatchEmbedContents
).
- È stata rimossa dal modello la funzionalità di embedding non supportata (
Unity
Il supporto di Unity non era disponibile negli SDK client di Google AI.
Scopri come iniziare a utilizzare l'SDK Firebase AI Logic per Unity.
Inviare un feedback sulla tua esperienza con Firebase AI Logic