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 de clients mobiles ou Web qui vous ont 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. Elles sont désormais obsolètes au profit des 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
La sécurité est essentielle pour les applications mobiles et Web, 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 code de votre application mobile ou Web. La clé API Gemini reste sur le serveur et n'est pas exposée aux acteurs malveillants.
Écosystème conçu pour les applications Web et mobiles
Firebase est la plate-forme de Google pour développer des 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 applications et des développeurs full stack. Exemple :
Définissez de manière dynamique les configurations d'exécution ou remplacez les valeurs de votre application (comme le nom et la version d'un modèle) sans publier de nouvelle version de l'application à l'aide de Firebase Remote Config.
Utilisez Cloud Storage for Firebase pour inclure des fichiers volumineux dans vos requêtes multimodales (si vous utilisez Vertex AI Gemini API). Les SDK clients Cloud Storage vous aident à gérer l'importation et le téléchargement de fichiers (même dans de mauvaises conditions réseau) et offrent une sécurité renforcée pour les données de vos utilisateurs finaux. Pour en savoir plus, consultez notre guide 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
Voici les étapes à suivre pour migrer vers les SDK Firebase AI Logic :
Étape 1 : Configurez un projet Firebase (nouveau ou existant) et 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 Premiers pas pour lancer un workflow guidé qui vous aide à configurer les API requises et les ressources pour votre projet.
Sélectionnez 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 dans le 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 l'associer à Firebase.
Poursuivez la lecture de ce guide de migration pour mettre à jour la bibliothèque et l'initialisation dans votre application.
Étape 2 : Ajoutez le SDK Firebase AI Logic à votre application
Maintenant que votre projet Firebase est configuré et que votre application est associée à Firebase (voir l'é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
) permet d'accéder aux API pour interagir avec les modèles Gemini et Imagen.
Dans le fichier Gradle de votre 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 versionnage 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 la 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
) permet d'accéder aux API pour interagir avec les modèles Gemini et Imagen.
Dans le fichier Gradle de votre 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 versionnage 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 la 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.
Depuis le 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 Firebase Core, 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';
Toujours dans votre fichier
lib/main.dart
, initialisez 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 clients 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 que vous avez terminé de migrer votre application (consultez 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 Package Dependencies (Dépendances de package).
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 : Mettez à 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 et 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.5-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.5-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.5-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.5-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.5-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éerez 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 dans votre application.
Consultez les listes suivantes pour identifier les modifications que vous devrez peut-être apporter à votre code pour migrer vers les SDK client 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 mis à jour sur les appels de fonction pour savoir comment rédiger 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 sur les sorties structurées pour apprendre à écrire des schémas JSON.Délai avant expiration
- Le délai avant expiration par défaut pour les requêtes est désormais de 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 permet de 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 traitées, y compris les nouvelles valeurs qui seront ajoutées au SDK à l'avenir.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
. Ce type est désormais unstruct
.Suppression des cas
unknown
etunspecified
des énumérations suivantes (désormaisstruct
s) :HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
etFinishReason
.L'énumération
ModelContent.Part
a été remplacée 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
- Le
HarmCategory
n'est plus imbriqué dans le typeSafetySetting
. Si vous l'appelezSafetySetting.HarmCategory
, vous pouvez le remplacer parHarmCategory
.
- Le
Commentaires sur la sécurité
- Suppression du type
SafetyFeedback
, car il n'était utilisé dans aucune des réponses.
- Suppression du type
Métadonnées de citation
- Remplacement du nom de la propriété
citationSources
parcitations
dansCitationMetadata
.
- Remplacement du nom de la propriété
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Réponse du candidat
- Changement de nom :
CandidateResponse
devientCandidate
, pour être cohérent avec les autres plates-formes.
- Changement de nom :
Configuration de la génération
- Les propriétés publiques de
GenerationConfig
ont été remplacées parinternal
. Ils restent tous configurables dans l'initialiseur.
- Les propriétés publiques de
Kotlin
Énumérations
Les classes
enum
etsealed
ont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blob
ont été renommées pour utiliserInlineData
.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
method
est désormais nullable.
- Le champ
Classe de durée
- Toutes les utilisations de la classe
Duration
de Kotlin ont été supprimées et remplacées parlong
. Cette modification améliore l'interopérabilité avec Java.
- 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 listecitations
deCitationMetadata
. 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ésormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue 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
Les classes
enum
etsealed
ont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blob
ont été renommées pour utiliserInlineData
.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
method
est désormais nullable.
- Le champ
Classe de durée
- Toutes les utilisations de la classe
Duration
de Kotlin ont été supprimées et remplacées parlong
. Cette modification améliore l'interopérabilité avec Java.
- 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 listecitations
deCitationMetadata
. 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ésormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue 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 nombreuses modifications depuis la création des SDK clients Firebase AI Logic. La liste suivante présente quelques modifications potentielles que vous devrez peut-être prendre en compte lors de la migration vers les SDK client Firebase AI Logic.
Énumérations
- Valeurs supprimées des énumérations suivantes :
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
- Valeurs supprimées des énumérations suivantes :
Motif du blocage
- Modification de
blockReason
dansPromptFeedback
(désormais facultatif).
- Modification de
Ancrage avec la recherche
- Suppression de toutes les utilisations de cette fonctionnalité, car elle n'est pas encore disponible dans les SDK Firebase AI Logic.
Erreurs
- Supprimez toutes les utilisations de
GoogleGenerativeAIError
et passez éventuellement àAIError
.
- Supprimez toutes les utilisations de
Dart
Énumérations
- Suppression de valeurs des énumérations suivantes :
HarmCategory
,HarmProbability
,BlockReason
etFinishReason
.
- Suppression de valeurs des énumérations suivantes :
Partie "Données"
DataPart
a été renomméInlineDataPart
, et la fonctionstatic
data
a été renomméeinlineData
pour s'aligner sur les autres plates-formes.
Options de demande
- Suppression de
RequestOptions
, cartimeout
ne fonctionnait pas. Elle sera réintégrée prochainement, mais sera déplacée vers le typeGenerativeModel
pour correspondre aux autres plates-formes.
- Suppression de
Séquences d'arrêt
- Le paramètre
stopSequences
deGenerationConfig
est désormais facultatif et est défini par défaut surnull
au lieu d'un tableau vide.
- Le paramètre
Citations
- Remplacement du nom de la propriété
citationSources
parcitations
dansCitationMetadata
. Le typeCitationSource
a été renomméCitation
pour correspondre aux autres plates-formes.
- Remplacement du nom 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 erreur :
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 erreur :
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 des fonctionnalités d'embedding non compatibles (
embedContent
etbatchEmbedContents
) du modèle.
- Suppression des fonctionnalités d'embedding non compatibles (
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