Migrer vers les SDK de logique Firebase AI à partir des SDK clients Google AI


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

  1. Connectez-vous à la console Firebase, puis sélectionnez votre projet Firebase.

  2. Dans la console Firebase, accédez à la page Firebase AI Logic.

  3. Cliquez sur Premiers pas pour lancer un workflow guidé qui vous aide à configurer les API requises et les ressources pour votre projet.

  4. 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 plus

  5. Si vous y êtes invité dans le workflow de la console, suivez les instructions à l'écran pour enregistrer votre application et l'associer à Firebase.

  6. 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.

  1. Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Package Dependencies (Fichier > Ajouter des dépendances de package).

  2. 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
    
  3. Sélectionnez la dernière version du SDK.

  4. 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.

  1. Installez le SDK JS Firebase pour le Web à l'aide de npm :

    npm install firebase
    
  2. 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.

  1. 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
    
  2. 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';
    
  3. Toujours dans votre fichier lib/main.dart, initialisez Firebase à l'aide de l'objet DefaultFirebaseOptions exporté par le fichier de configuration :

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. 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 :

  1. Dans Xcode, à partir de votre projet d'application ouvert, accédez au volet Package Dependencies (Dépendances de package).

  2. Sélectionnez le package generative-ai-swift dans la liste des dépendances de package.

  3. 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

// BEFORE
import 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

// BEFORE
import 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

// BEFORE
import 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

// BEFORE
import { 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

// BEFORE
import '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.

É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 des struct avec des variables statiques. Ce changement permet de faire évoluer l'API de manière rétrocompatible. Lorsque vous utilisez des instructions switch, vous devez désormais inclure un cas default: 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ée HarmBlockThreshold. Ce type est désormais un struct.

    • Suppression des cas unknown et unspecified des énumérations suivantes (désormais structs) : HarmCategory, HarmBlockThreshold, HarmProbability, BlockReason et FinishReason.

    • 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 pour ModelContent 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 dans generateContent.

    • Remplacement des cas ModelContent.Part par les types struct suivants conformes au protocole Part :

      • De .text à TextPart
      • De .data à InlineDataPart
      • De .fileData à FileDataPart
      • De .functionCall à FunctionCallPart
      • De .functionResponse à FunctionResponsePart
  • Catégorie de préjudice

    • Le HarmCategory n'est plus imbriqué dans le type SafetySetting. Si vous l'appelez SafetySetting.HarmCategory, vous pouvez le remplacer par HarmCategory.
  • Commentaires sur la sécurité

    • Suppression du type SafetyFeedback, car il n'était utilisé dans aucune des réponses.
  • Métadonnées de citation

    • Remplacement du nom de la propriété citationSources par citations dans CitationMetadata.
  • Nombre total de caractères facturables

    • La propriété totalBillableCharacters dans CountTokensResponse a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
  • Réponse du candidat

    • Changement de nom : CandidateResponse devient Candidate, pour être cohérent avec les autres plates-formes.
  • Configuration de la génération

    • Les propriétés publiques de GenerationConfig ont été remplacées par internal. Ils restent tous configurables dans l'initialiseur.

Kotlin

  • Énumérations

    • Les classes enum et sealed 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ée HarmBlockThreshold.

    • Suppression de valeurs des énumérations suivantes : HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason et FinishReason.

  • Méthodes de blob

    • Toutes les méthodes dont le nom comportait Blob ont été renommées pour utiliser InlineData.
  • Paramètres de sécurité

    • Le champ method est désormais nullable.
  • Classe de durée

    • Toutes les utilisations de la classe Duration de Kotlin ont été supprimées et remplacées par long. Cette modification améliore l'interopérabilité avec Java.
  • Métadonnées de citation

    • Encapsulation de tous les champs précédemment déclarés dans CitationMetadata dans une nouvelle classe appelée Citation. Les citations se trouvent dans la liste citations de CitationMetadata. Cette modification permet un meilleur alignement des types sur les plates-formes.
  • Compter les jetons

    • Le champ totalBillableCharacters est désormais nullable.
  • Nombre total de caractères facturables

    • La propriété totalBillableCharacters dans CountTokensResponse a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
  • 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.

Java

  • Énumérations

    • Les classes enum et sealed 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ée HarmBlockThreshold.

    • Suppression de valeurs des énumérations suivantes : HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason et FinishReason.

  • Méthodes de blob

    • Toutes les méthodes dont le nom comportait Blob ont été renommées pour utiliser InlineData.
  • Paramètres de sécurité

    • Le champ method est désormais nullable.
  • Classe de durée

    • Toutes les utilisations de la classe Duration de Kotlin ont été supprimées et remplacées par long. Cette modification améliore l'interopérabilité avec Java.
  • Métadonnées de citation

    • Encapsulation de tous les champs précédemment déclarés dans CitationMetadata dans une nouvelle classe appelée Citation. Les citations se trouvent dans la liste citations de CitationMetadata. Cette modification permet un meilleur alignement des types sur les plates-formes.
  • Compter les jetons

    • Le champ totalBillableCharacters est désormais nullable.
  • Nombre total de caractères facturables

    • La propriété totalBillableCharacters dans CountTokensResponse a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
  • 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.

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 et FinishReason.
  • Motif du blocage

    • Modification de blockReason dans PromptFeedback (désormais facultatif).
  • 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.

Dart

  • Énumérations

    • Suppression de valeurs des énumérations suivantes : HarmCategory, HarmProbability, BlockReason et FinishReason.
  • Partie "Données"

    • DataPart a été renommé InlineDataPart, et la fonction static data a été renommée inlineData pour s'aligner sur les autres plates-formes.
  • Options de demande

    • Suppression de RequestOptions, car timeout ne fonctionnait pas. Elle sera réintégrée prochainement, mais sera déplacée vers le type GenerativeModel pour correspondre aux autres plates-formes.
  • Séquences d'arrêt

    • Le paramètre stopSequences de GenerationConfig est désormais facultatif et est défini par défaut sur null au lieu d'un tableau vide.
  • Citations

    • Remplacement du nom de la propriété citationSources par citations dans CitationMetadata. Le type CitationSource a été renommé Citation pour correspondre aux autres plates-formes.
  • 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 et EmbedContentResponse.
  • Compter les jetons

    • Suppression des champs supplémentaires de la fonction countTokens qui ne sont plus nécessaires. Seul contents est nécessaire.
  • 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.
  • Fonctionnalité d'intégration

    • Suppression des fonctionnalités d'embedding non compatibles (embedContent et batchEmbedContents) du modèle.

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