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 offre 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 les importations et les téléchargements 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 sur l'utilisation de Cloud Storage for Firebase, consultez notre guide de solutions.
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 consoleFirebase, 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-sdkSé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:34.3.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:34.3.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 firebaseInitialisez 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 firebase_aiDans 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'objetDefaultFirebaseOptionsexporté 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 Dépendances des packages.
Sélectionnez le package
generative-ai-swiftdans 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 à 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 é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 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
enumont été remplacés par desstructavec 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
BlockThresholda été renomméeHarmBlockThreshold. Ce type est désormais unstruct.Suppression des cas
unknownetunspecifieddes énumérations suivantes (désormaisstructs) :HarmCategory,HarmBlockThreshold,HarmProbability,BlockReasonetFinishReason.L'énumération
ModelContent.Parta été remplacée par un protocole nomméPartpour 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
ThrowingPartsRepresentableet simplification des initialiseurs pourModelContentafin 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.Partpar les typesstructsuivants 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
HarmCategoryn'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é
citationSourcesparcitationsdansCitationMetadata.
- Remplacement du nom de la propriété
Nombre total de caractères facturables
- La propriété
totalBillableCharactersdansCountTokensResponsea é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 :
CandidateResponsedevientCandidate, pour être cohérent avec les autres plates-formes.
- Changement de nom :
Configuration de la génération
- Les propriétés publiques de
GenerationConfigont été remplacées parinternal. Ils restent tous configurables dans l'initialiseur.
- Les propriétés publiques de
Kotlin
Énumérations
Les classes
enumetsealedont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThresholda été renomméeHarmBlockThreshold.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonetFinishReason.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blobont été renommées pour utiliserInlineData.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
methodest désormais nullable.
- Le champ
Classe de durée
- Suppression de toutes les utilisations de la classe
Durationde 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
CitationMetadatadans une nouvelle classe appeléeCitation. Les citations se trouvent dans la listecitationsdeCitationMetadata. 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
totalBillableCharactersest désormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharactersdansCountTokensResponsea é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
requestOptionsa é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
enumetsealedont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThresholda été renomméeHarmBlockThreshold.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonetFinishReason.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blobont été renommées pour utiliserInlineData.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
methodest désormais nullable.
- Le champ
Classe de durée
- Suppression de toutes les utilisations de la classe
Durationde 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
CitationMetadatadans une nouvelle classe appeléeCitation. Les citations se trouvent dans la listecitationsdeCitationMetadata. 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
totalBillableCharactersest désormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharactersdansCountTokensResponsea é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
requestOptionsa é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 client 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,BlockReasonetFinishReason.
- Valeurs supprimées des énumérations suivantes :
Motif du blocage
- Modification de
blockReasondansPromptFeedback(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
GoogleGenerativeAIErroret passez éventuellement àAIError.
- Supprimez toutes les utilisations de
Dart
Énumérations
- Suppression de valeurs des énumérations suivantes :
HarmCategory,HarmProbability,BlockReasonetFinishReason.
- Suppression de valeurs des énumérations suivantes :
Partie "Données"
DataParta été renomméInlineDataPart, et la fonctionstaticdataa été renomméeinlineDatapour s'aligner sur les autres plates-formes.
Options de demande
- Suppression de
RequestOptions, cartimeoutne fonctionnait pas. Elle sera réintégrée prochainement, mais sera déplacée vers le typeGenerativeModelpour correspondre aux autres plates-formes.
- Suppression de
Séquences d'arrêt
- Le paramètre
stopSequencesdeGenerationConfigest désormais facultatif et sa valeur par défaut estnullau lieu d'un tableau vide.
- Le paramètre
Citations
- Remplacement du nom de la propriété
citationSourcesparcitationsdansCitationMetadata. Le typeCitationSourcea été renomméCitationpour 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,EmbedContentRequestetEmbedContentResponse.
- 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
countTokensqui ne sont plus nécessaires. Seulcontentsest nécessaire.
- Suppression des champs supplémentaires de la fonction
Instancier un modèle
- Le paramètre
systemInstructiona é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 (
embedContentetbatchEmbedContents) 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