Accéder directement aux instructions de migration
Pourquoi migrer vers les SDK Firebase AI Logic ?
Vous avez peut-être essayé un autre ensemble de SDK client mobile ou Web qui vous a donné accès à Gemini Developer API.
Ces SDK client n'étaient pas intégrés à l'écosystème Firebase robuste, qui propose des services essentiels pour les applications mobiles et Web. Ils sont désormais obsolètes et remplacés par les SDK client Firebase AI Logic, qui peuvent vous donner accès à Gemini Developer API.
Fonctionnalités de sécurité pour les applications mobiles et Web
Pour les applications mobiles et Web, la sécurité est essentielle et nécessite des considérations particulières, car votre code (y compris les appels à Gemini API) s'exécute dans un environnement non protégé. Vous pouvez utiliser Firebase App Check pour protéger les API contre les utilisations abusives par des clients non autorisés.
Lorsque vous utilisez Firebase App Check avec Firebase AI Logic, vous n'ajoutez jamais votre clé API Gemini pour Gemini Developer API directement dans le codebase de votre application mobile ou Web. Au lieu de cela, la clé API Gemini reste sur le serveur, à l'abri des acteurs malveillants.
Écosystème conçu pour les applications mobiles et Web
Firebase est la plate-forme de Google pour le développement d'applications mobiles et Web. L'utilisation de Firebase AI Logic signifie que vos applications se trouvent dans un écosystème axé sur les besoins des développeurs et des applications full stack. Exemple :
Définissez de manière dynamique des configurations d'exécution ou remplacez des valeurs dans votre application (comme un nom et une version de modèle) sans publier de nouvelle version d'application à l'aide de Firebase Remote Config.
Utilisez Cloud Storage for Firebase pour inclure de gros fichiers dans vos requêtes multimodales (si vous utilisez Vertex AI Gemini API). Les SDK client Cloud Storage vous aident à gérer les importations et les téléchargements de fichiers (même en cas de mauvaise qualité du réseau) et offrent une sécurité accrue pour les données de vos utilisateurs finaux. Pour en savoir plus, consultez notre guide de solution sur l'utilisation de Cloud Storage for Firebase.
Gérez les données structurées à l'aide de SDK de base de données conçus pour les applications mobiles et Web (comme Cloud Firestore).
Migrer vers les SDK Firebase AI Logic
Présentation de la procédure de migration vers les SDK Firebase AI Logic:
Étape 1: Configurez un projet Firebase existant ou créez-en un, puis associez votre application à Firebase.
Étape 2: Ajoutez les SDK Firebase AI Logic à votre application.
Étape 3: Mettez à jour vos importations et votre initialisation dans votre application.
Étape 4: Mettez à jour votre code en fonction des fonctionnalités que vous utilisez.
Étape 1: Configurez un projet Firebase et associez votre application
Connectez-vous à la console Firebase, puis sélectionnez votre projet Firebase.
Dans la console Firebase, accédez à la page Firebase AI Logic.
Cliquez sur Commencer pour lancer un workflow guidé qui vous aide à configurer les API requises et les ressources de votre projet.
Sélectionnez l'Gemini Developer API. Vous pourrez toujours configurer et utiliser l'autre fournisseur d'API plus tard, si vous le souhaitez.
La console activera les API requises et créera une clé API Gemini dédiée dans votre projet.
N'ajoutez pas cette nouvelle clé API Gemini au code de votre application. En savoir plusSi vous y êtes invité dans le workflow de la console, suivez les instructions à l'écran pour enregistrer votre application et la connecter à Firebase.
Poursuivez dans ce guide de migration pour mettre à jour la bibliothèque et l'initialisation dans votre application.
Étape 2: Ajouter le SDK Firebase AI Logic à votre application
Une fois votre projet Firebase configuré et votre application associée à Firebase (voir étape précédente), vous pouvez ajouter le SDK Firebase AI Logic à votre application.
Swift
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
La bibliothèque Firebase AI Logic permet d'accéder aux API pour interagir avec les modèles Gemini et Imagen. La bibliothèque est incluse dans le SDK Firebase pour les plates-formes Apple (firebase-ios-sdk
).
Si vous utilisez déjà Firebase, assurez-vous que votre package Firebase est la version 11.13.0 ou ultérieure.
Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Package Dependencies (Fichier > Ajouter des dépendances de package).
Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
https://github.com/firebase/firebase-ios-sdk
Sélectionnez la dernière version du SDK.
Sélectionnez la bibliothèque
FirebaseAI
.
Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.
Kotlin
Le SDK Firebase AI Logic pour Android (firebase-ai
) fournit un accès aux API permettant d'interagir avec les modèles Gemini et Imagen.
Dans votre fichier Gradle de module (au niveau de l'application) (comme <project>/<app-module>/build.gradle.kts
), ajoutez la dépendance pour la bibliothèque Firebase AI Logic pour Android.
Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler le contrôle des versions de la bibliothèque.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.15.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") }
En utilisant Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
Java
Le SDK Firebase AI Logic pour Android (firebase-ai
) fournit un accès aux API permettant d'interagir avec les modèles Gemini et Imagen.
Dans votre fichier Gradle de module (au niveau de l'application) (comme <project>/<app-module>/build.gradle.kts
), ajoutez la dépendance pour la bibliothèque Firebase AI Logic pour Android.
Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler le contrôle des versions de la bibliothèque.
Pour Java, vous devez ajouter deux bibliothèques supplémentaires.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.15.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") }
En utilisant Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
Web
La bibliothèque Firebase AI Logic permet d'accéder aux API pour interagir avec les modèles Gemini et Imagen. La bibliothèque est incluse dans le SDK JavaScript Firebase pour le Web.
Installez le SDK JS Firebase pour le Web à l'aide de npm:
npm install firebase
Initialisez Firebase dans votre application:
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
Le plug-in Firebase AI Logic pour Flutter (firebase_ai
) permet d'accéder aux API pour interagir avec les modèles Gemini et Imagen.
À partir du répertoire de votre projet Flutter, exécutez la commande suivante pour installer le plug-in principal et le plug-in Firebase AI Logic:
flutter pub add firebase_core && flutter pub add firebase_ai
Dans votre fichier
lib/main.dart
, importez le plug-in principal Firebase, le plug-in Firebase AI Logic et le fichier de configuration que vous avez généré précédemment:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'firebase_options.dart';
Dans votre fichier
lib/main.dart
, initialisez également Firebase à l'aide de l'objetDefaultFirebaseOptions
exporté par le fichier de configuration:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
Recompilez votre application Flutter:
flutter run
Unity
La compatibilité avec Unity n'était pas disponible dans les SDK client Google AI.
Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.
Supprimer l'ancien SDK de votre application
Une fois la migration de votre application terminée (voir les sections restantes de ce guide), veillez à supprimer l'ancienne bibliothèque.
Swift
Supprimez l'ancienne bibliothèque:
Dans Xcode, à partir de votre projet d'application ouvert, accédez au volet Packages Dependencies (Dépendances de packages).
Sélectionnez le package
generative-ai-swift
dans la liste des dépendances de package.Cliquez sur le bouton
-
en bas de la liste, puis sur Supprimer pour confirmer.
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
Supprimez l'ancien package:
flutter pub remove google_generative_ai
Unity
La compatibilité avec Unity n'était pas disponible dans les SDK client Google AI.
Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.
Étape 3: Mettre à jour vos importations et votre initialisation dans votre application
Mettez à jour vos importations et la façon dont vous initialisez le service de backend Gemini Developer API, puis créez une instance 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
La compatibilité avec Unity n'était pas disponible dans les SDK client Google AI.
Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.
Notez que selon la fonctionnalité que vous utilisez, vous ne créez pas toujours une instance GenerativeModel
.
- Pour accéder à un modèle Imagen, créez une instance
ImagenModel
.
Étape 4: Mettez à jour le code en fonction des fonctionnalités que vous utilisez
Cette étape décrit les modifications qui peuvent être nécessaires en fonction des fonctionnalités que vous utilisez.
Les SDK client Firebase AI Logic ne sont pas compatibles avec l'exécution de code. Si vous utilisez cette fonctionnalité, assurez-vous de l'intégrer à votre application.
Consultez les listes suivantes pour identifier les modifications que vous devrez peut-être apporter à votre code pour migrer vers les SDK clients Firebase AI Logic.
Obligatoire pour toutes les langues et plates-formes
Appel de fonction
Si vous avez implémenté cette fonctionnalité, vous devrez modifier la façon dont vous définissez votre schéma. Nous vous recommandons de consulter le guide d'appel de fonction mis à jour pour savoir comment écrire vos déclarations de fonction.Générer une sortie structurée (comme JSON) à l'aide de
responseSchema
Si vous avez implémenté cette fonctionnalité, vous devrez modifier la façon dont vous définissez votre schéma. Nous vous recommandons de consulter le nouveau guide de sortie structurée pour apprendre à écrire des schémas JSON.Délai avant expiration
- Le délai avant expiration par défaut des requêtes a été défini sur 180 secondes.
Obligatoire selon la plate-forme ou la langue
Swift
Énumérations
La plupart des types
enum
ont été remplacés par desstruct
avec des variables statiques. Ce changement offre plus de flexibilité pour faire évoluer l'API de manière rétrocompatible. Lorsque vous utilisez des instructionsswitch
, vous devez désormais inclure un casdefault:
pour couvrir les valeurs inconnues ou non gérées, y compris les nouvelles valeurs ajoutées au SDK à l'avenir.Renommage de l'énumération
BlockThreshold
enHarmBlockThreshold
. Ce type est désormais unstruct
.Suppression des cas
unknown
etunspecified
des énumérations suivantes (désormaisstruct
):HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
etFinishReason
.Remplacement de l'énumération
ModelContent.Part
par un protocole nomméPart
pour permettre l'ajout de nouveaux types de manière rétrocompatible. Ce changement est décrit plus en détail dans la section Parties de contenu.
Parties de contenu
Suppression du protocole
ThrowingPartsRepresentable
et simplification des initialisateurs pourModelContent
afin d'éviter les erreurs de compilation occasionnelles. Les images qui ne sont pas correctement encodées génèrent toujours des erreurs lorsqu'elles sont utilisées dansgenerateContent
.Remplacement des cas
ModelContent.Part
par les typesstruct
suivants conformes au protocolePart
:- De
.text
àTextPart
- De
.data
àInlineDataPart
- De
.fileData
àFileDataPart
- De
.functionCall
àFunctionCallPart
- De
.functionResponse
àFunctionResponsePart
- De
Catégorie de préjudice
- Modification de
HarmCategory
pour qu'il ne soit plus imbriqué dans le typeSafetySetting
. Si vous utilisezSafetySetting.HarmCategory
, vous pouvez le remplacer parHarmCategory
.
- Modification de
Commentaires sur la sécurité
- Suppression du type
SafetyFeedback
, car il n'a été utilisé dans aucune des réponses.
- Suppression du type
Métadonnées de citation
- Remplacement de la propriété
citationSources
parcitations
dansCitationMetadata
.
- Remplacement de la propriété
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été définie comme facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Réponse du candidat
CandidateResponse
a été renomméCandidate
pour correspondre aux autres plates-formes.
Configuration de la génération
- Remplacement des propriétés publiques de
GenerationConfig
parinternal
. Ils restent tous configurables dans l'initialiseur.
- Remplacement des propriétés publiques de
Kotlin
Énumérations
Remplacement des classes
enum
etsealed
par des classes standards. Ce changement offre plus de flexibilité pour faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été rebaptiséeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes:
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes Blob
- Toutes les méthodes qui incluaient
Blob
dans leur nom ont été rebaptisées et utilisent désormaisInlineData
.
- Toutes les méthodes qui incluaient
Paramètres de sécurité
- Le champ
method
est défini comme nullable.
- Le champ
Catégorie de durée
- Suppression de toutes les utilisations de la classe
Duration
de Kotlin et remplacement parlong
. Cette modification améliore l'interopérabilité avec Java.
- Suppression de toutes les utilisations de la classe
Métadonnées de citation
- Encapsulation de tous les champs précédemment déclarés dans
CitationMetadata
dans une nouvelle classe appeléeCitation
. Les citations se trouvent dans la liste appeléecitations
dansCitationMetadata
. Cette modification permet un meilleur alignement des types sur les plates-formes.
- Encapsulation de tous les champs précédemment déclarés dans
Compter les jetons
- Le champ
totalBillableCharacters
est défini comme nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été définie comme facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Instancier un modèle
- Le paramètre
requestOptions
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Java
Énumérations
Remplacement des classes
enum
etsealed
par des classes standards. Ce changement offre plus de flexibilité pour faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été rebaptiséeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes:
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes Blob
- Toutes les méthodes qui incluaient
Blob
dans leur nom ont été rebaptisées et utilisent désormaisInlineData
.
- Toutes les méthodes qui incluaient
Paramètres de sécurité
- Le champ
method
est défini comme nullable.
- Le champ
Catégorie de durée
- Suppression de toutes les utilisations de la classe
Duration
de Kotlin et remplacement parlong
. Cette modification améliore l'interopérabilité avec Java.
- Suppression de toutes les utilisations de la classe
Métadonnées de citation
- Encapsulation de tous les champs précédemment déclarés dans
CitationMetadata
dans une nouvelle classe appeléeCitation
. Les citations se trouvent dans la liste appeléecitations
dansCitationMetadata
. Cette modification permet un meilleur alignement des types sur les plates-formes.
- Encapsulation de tous les champs précédemment déclarés dans
Compter les jetons
- Le champ
totalBillableCharacters
est défini comme nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été définie comme facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Instancier un modèle
- Le paramètre
requestOptions
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Web
Notez que le SDK client Google AI pour JavaScript a subi de nombreux changements depuis la création des SDK clients Firebase AI Logic. La liste suivante présente certains changements potentiels que vous devrez peut-être prendre en compte lors de la migration vers les SDK client Firebase AI Logic.
Énumérations
- Suppression de valeurs des énumérations suivantes:
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
- Suppression de valeurs des énumérations suivantes:
Motif du blocage
- Modification de
blockReason
dansPromptFeedback
(désormais facultatif).
- Modification de
Ancrage de la recherche
- Suppression de toutes les utilisations de cette fonctionnalité, car elle n'est pas encore compatible avec les SDK Firebase AI Logic.
Erreurs
- Toutes les utilisations de
GoogleGenerativeAIError
ont été supprimées et peuvent être déplacées versAIError
.
- Toutes les utilisations de
Dart
Énumérations
- Suppression des valeurs des énumérations suivantes:
HarmCategory
,HarmProbability
,BlockReason
etFinishReason
.
- Suppression des valeurs des énumérations suivantes:
Partie des données
DataPart
a été renomméInlineDataPart
, et la fonctiondata
static
inlineData
pour s'aligner sur d'autres plates-formes.
Options de demande
- Suppression de
RequestOptions
, cartimeout
n'était pas fonctionnel. Il sera réajouté prochainement, mais il sera déplacé vers le typeGenerativeModel
pour correspondre aux autres plates-formes.
- Suppression de
Séquences d'arrêt
- Le paramètre
stopSequences
dansGenerationConfig
est désormais facultatif et par défautnull
au lieu d'un tableau vide.
- Le paramètre
Citations
- Remplacement de la propriété
citationSources
parcitations
dansCitationMetadata
. Le typeCitationSource
a été renomméCitation
pour correspondre aux autres plates-formes.
- Remplacement de la propriété
Types, méthodes et propriétés publics inutiles
- Suppression des types, méthodes et propriétés suivants, qui ont été exposés par inadvertance:
defaultTimeout
,CountTokensResponseFields
,parseCountTokensResponse
,parseEmbedContentResponse
,parseGenerateContentResponse
,parseContent
,BatchEmbedContentsResponse
,ContentEmbedding
,EmbedContentRequest
etEmbedContentResponse
.
- Suppression des types, méthodes et propriétés suivants, qui ont été exposés par inadvertance:
Compter les jetons
- Suppression des champs supplémentaires de la fonction
countTokens
qui ne sont plus nécessaires. Seulcontents
est nécessaire.
- Suppression des champs supplémentaires de la fonction
Instancier un modèle
- Le paramètre
systemInstruction
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Fonctionnalité d'intégration
- Suppression de la fonctionnalité d'embedding non prise en charge (
embedContent
etbatchEmbedContents
) du modèle.
- Suppression de la fonctionnalité d'embedding non prise en charge (
Unity
La compatibilité avec Unity n'était pas disponible dans les SDK client Google AI.
Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.
Envoyer des commentaires sur votre expérience avec Firebase AI Logic