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

  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 Commencer pour lancer un workflow guidé qui vous aide à configurer les API requises et les ressources de votre projet.

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

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

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

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

  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. À 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
    
  2. 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';
    
  3. Dans votre fichier lib/main.dart, initialisez également 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 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:

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

  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: 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

// 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.0-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.0-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.0-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.0-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.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.

É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 des struct avec des variables statiques. Ce changement offre plus de flexibilité pour 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 gérées, y compris les nouvelles valeurs ajoutées au SDK à l'avenir.

    • Renommage de l'énumération BlockThreshold en HarmBlockThreshold. Ce type est désormais un struct.

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

    • 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 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

    • Modification de HarmCategory pour qu'il ne soit plus imbriqué dans le type SafetySetting. Si vous utilisez SafetySetting.HarmCategory, vous pouvez le remplacer par HarmCategory.
  • Commentaires sur la sécurité

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

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

    • La propriété totalBillableCharacters dans CountTokensResponse a été définie comme facultative pour refléter les situations où aucun caractère n'est envoyé.
  • 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 par internal. Ils restent tous configurables dans l'initialiseur.

Kotlin

  • Énumérations

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

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

  • Méthodes Blob

    • Toutes les méthodes qui incluaient Blob dans leur nom ont été rebaptisées et utilisent désormais InlineData.
  • Paramètres de sécurité

    • Le champ method est défini comme nullable.
  • Catégorie de durée

    • Suppression de toutes les utilisations de la classe Duration de Kotlin et remplacement 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 appelée citations dans CitationMetadata. Cette modification permet un meilleur alignement des types sur les plates-formes.
  • Compter les jetons

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

    • La propriété totalBillableCharacters dans CountTokensResponse a été définie comme 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

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

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

  • Méthodes Blob

    • Toutes les méthodes qui incluaient Blob dans leur nom ont été rebaptisées et utilisent désormais InlineData.
  • Paramètres de sécurité

    • Le champ method est défini comme nullable.
  • Catégorie de durée

    • Suppression de toutes les utilisations de la classe Duration de Kotlin et remplacement 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 appelée citations dans CitationMetadata. Cette modification permet un meilleur alignement des types sur les plates-formes.
  • Compter les jetons

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

    • La propriété totalBillableCharacters dans CountTokensResponse a été définie comme 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 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 et FinishReason.
  • Motif du blocage

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

Dart

  • Énumérations

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

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

    • Suppression de RequestOptions, car timeout n'était pas fonctionnel. Il sera réajouté prochainement, mais il sera déplacé vers le type GenerativeModel pour correspondre aux autres plates-formes.
  • Séquences d'arrêt

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

    • Remplacement 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 inadvertance: 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 de la fonctionnalité d'embedding non prise en charge (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