Migrer vers les SDK Firebase AI Logic à partir de la version Preview des SDK Vertex AI in Firebase


Firebase AI Logic et ses SDK client étaient auparavant appel��s "Vertex AI in Firebase". Pour mieux refléter nos services et fonctionnalités étendus (par exemple, nous prenons désormais en charge Gemini Developer API), nous avons renommé et reconditionné nos services en Firebase AI Logic.

Pour accéder de manière sécurisée aux modèles d'IA générative de Google directement depuis vos applications mobiles ou Web, vous pouvez désormais choisir un fournisseur "Gemini API", à savoir Vertex AI Gemini API, qui est disponible depuis longtemps, ou Gemini Developer API. Vous pouvez donc désormais utiliser Gemini Developer API, qui propose un niveau sans frais avec des limites et des quotas de débit raisonnables.

Présentation des étapes de migration vers les SDK Firebase AI Logic

  • Étape 1: Choisissez le meilleur fournisseur d'API Gemini pour votre application et vos cas d'utilisation.

  • Étape 2: Activez les API requises.

  • Étape 3: Mettez à jour la bibliothèque utilisée dans votre application.

  • Étape 4: Mettez à jour l'initialisation dans votre application.

  • Étape 5: Mettez à jour votre code en fonction des fonctionnalités que vous utilisez.

Étape 1: Choisissez le meilleur fournisseur d'API Gemini pour votre application

Avec cette migration, vous avez le choix du fournisseur Gemini API:

  • Les anciens SDK "Vertex AI in Firebase" ne pouvaient utiliser que Vertex AI Gemini API.

  • Les nouveaux SDK Firebase AI Logic vous permettent de choisir le fournisseur "Gemini API" que vous souhaitez appeler directement depuis votre application mobile ou Web, à savoir Gemini Developer API ou Vertex AI Gemini API.

Consultez les différences entre les deux fournisseurs Gemini API, en particulier en termes de fonctionnalités compatibles, de tarifs et de limites de débit. Par exemple, Gemini Developer API n'est pas compatible avec la fourniture de fichiers à l'aide d'URL Cloud Storage, mais il peut être un bon choix si vous souhaitez profiter de son niveau sans frais et de son quota raisonnable.

Étape 2: Activez les API requises

Assurez-vous que toutes les API requises sont activées dans votre projet Firebase pour utiliser le fournisseur "Gemini API" de votre choix.

Notez que vous pouvez activer les deux fournisseurs d'API dans votre projet en même temps.

  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 le fournisseur d'API Gemini que vous souhaitez utiliser avec les SDK Firebase AI Logic. Vous pourrez toujours configurer et utiliser l'autre fournisseur d'API plus tard, si vous le souhaitez.

    • Gemini Developer API : facturation facultative (disponible avec le forfait Spark sans frais)
      Le workflow de la console active les API requises et crée une clé API Gemini dans votre projet.
      N'ajoutez pas cette clé API Gemini au code de votre application. En savoir plus

    • Vertex AI Gemini API : facturation requise (nécessite le forfait Blaze au paiement à l'utilisation)
      Le workflow de la console active les API requises dans votre projet.

  5. Poursuivez dans ce guide de migration pour mettre à jour la bibliothèque et l'initialisation dans votre application.

Étape 3: Mettre à jour la bibliothèque utilisée dans votre application

Mettez à jour le code de base de votre application pour qu'elle utilise la bibliothèque Firebase AI Logic.

Swift

  1. Dans Xcode, à partir de votre projet d'application ouvert, mettez à jour votre package Firebase vers la version 11.13.0 ou ultérieure à l'aide de l'une des options suivantes:

    • Option 1: Mettre à jour tous les packages: accédez à File > Packages > Update to Latest Package Versions (Fichier > Packages > Mettre à jour vers les dernières versions des packages).

    • Option 2: Mettre à jour Firebase individuellement: accédez au package Firebase dans la section Dépendances de package. Effectuez un clic droit sur le package Firebase, puis sélectionnez Mettre à jour le package.

  2. Assurez-vous que le package Firebase indique désormais la version 11.13.0 ou ultérieure. Si ce n'est pas le cas, vérifiez que les exigences concernant les packages que vous avez spécifiées permettent la mise à niveau vers la version 11.13.0 ou ultérieure.

  3. Sélectionnez la cible de votre application dans l'éditeur de projet, puis accédez à la section Cadres, bibliothèques et contenus intégrés.

  4. Ajoutez la nouvelle bibliothèque: sélectionnez le bouton +, puis ajoutez FirebaseAI à partir du package Firebase.

  5. Une fois la migration de votre application terminée (voir les sections restantes de ce guide), veillez à supprimer l'ancienne bibliothèque:
    Sélectionnez FirebaseVertexAI-Preview, puis appuyez sur le bouton .

Kotlin

  1. Dans votre fichier Gradle de module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), remplacez les anciennes dépendances (le cas échéant) par les éléments suivants.

    Notez qu'il peut être plus facile de migrer le code de base de votre application (voir les autres sections de ce guide) avant de supprimer l'ancienne dépendance.

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.14.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")
    }
  2. Synchronisez votre projet Android avec les fichiers Gradle.

Notez que si vous choisissez de ne pas utiliser Firebase Android BoM, il vous suffit d'ajouter la dépendance pour la bibliothèque firebase-ai et d'accepter la dernière version suggérée par Android Studio.

Java

  1. Dans votre fichier Gradle de module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), remplacez les anciennes dépendances (le cas échéant) par les éléments suivants.

    Notez qu'il peut être plus facile de migrer le code de base de votre application (voir les autres sections de ce guide) avant de supprimer l'ancienne dépendance.

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.14.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")
    }
  2. Synchronisez votre projet Android avec les fichiers Gradle.

Notez que si vous choisissez de ne pas utiliser Firebase Android BoM, il vous suffit d'ajouter la dépendance pour la bibliothèque firebase-ai et d'accepter la dernière version suggérée par Android Studio.

Web

  1. Obtenez la dernière version du SDK JS Firebase pour le Web à l'aide de npm:

    npm i firebase@latest

    OU

    yarn add firebase@latest
  2. Dans tous les emplacements où vous avez importé la bibliothèque, mettez à jour vos instructions d'importation pour utiliser firebase/ai à la place.

    Notez qu'il peut être plus facile de migrer le code de base de votre application (voir les sections restantes de ce guide) avant de supprimer les anciennes importations.

    // BEFORE
    import { initializeApp } from "firebase/app";
    import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";
    
    
    // AFTER
    import { initializeApp } from "firebase/app";
    import { getAI, getGenerativeModel } from "firebase/ai";

Dart

  1. Passez à l'utilisation du package firebase_ai dans votre fichier pubspec.yaml en exécutant la commande suivante à partir du répertoire de votre projet Flutter:

    flutter pub add firebase_ai
  2. Recréez votre projet Flutter:

    flutter run
  3. Une fois la migration de votre application terminée (voir les sections restantes de ce guide), veillez à supprimer l'ancien package:

    flutter pub remove firebase_vertexai

Unity

L'assistance pour Unity n'était pas disponible auprès de "Vertex AI in Firebase".

Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.

Étape 4: Mettez à jour l'initialisation dans votre application

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques à ce fournisseur sur cette page.

Modifiez la façon dont vous initialisez le service pour le fournisseur d'API de votre choix et créez une instance GenerativeModel.

Swift


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


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


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


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


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

L'assistance pour Unity n'était pas disponible auprès de "Vertex AI in Firebase".

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 5: Mettez à jour votre 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.

  • Si vous utilisez des URL Cloud Storage et que vous êtes passé à l'utilisation de Gemini Developer API lors de cette migration, vous devez mettre à jour vos requêtes multimodales pour inclure des fichiers en tant que données intégrées (ou utiliser des URL YouTube pour les vidéos).

  • Plusieurs modifications ont été apportées aux versions GA des SDK "Vertex AI in Firebase". Ces mêmes modifications sont requises pour utiliser les SDK Firebase AI Logic. Passez en revue les listes suivantes pour identifier les modifications que vous devrez peut-être apporter à votre code pour utiliser le SDK Firebase AI Logic.

Obligatoire pour toutes les langues et plates-formes

  • Appel de fonction
    Si vous avez implémenté cette fonctionnalité avant la version GA, 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é avant la version GA, 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.
  • Live API

    • Suppression de la valeur UNSPECIFIED pour la classe d'énumération ResponseModality. Utilisez plutôt null.

    • LiveGenerationConfig.setResponseModalities a été renommé LiveGenerationConfig.setResponseModality.

    • Suppression de la classe LiveContentResponse.Status et imbrication des champs d'état en tant que propriétés de LiveContentResponse.

    • Suppression de la classe LiveContentResponse et fourniture de sous-classes de LiveServerMessage correspondant aux réponses du modèle.

    • Modification de LiveModelFutures.connect pour renvoyer ListenableFuture<LiveSessionFutures> au lieu de ListenableFuture<LiveSession>.

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.
  • Live API

    • Suppression de la valeur UNSPECIFIED pour la classe d'énumération ResponseModality. Utilisez plutôt null.

    • LiveGenerationConfig.setResponseModalities a été renommé LiveGenerationConfig.setResponseModality.

    • Suppression de la classe LiveContentResponse.Status et imbrication des champs d'état en tant que propriétés de LiveContentResponse.

    • Suppression de la classe LiveContentResponse et fourniture de sous-classes de LiveServerMessage correspondant aux réponses du modèle.

    • Modification de LiveModelFutures.connect pour renvoyer ListenableFuture<LiveSessionFutures> au lieu de ListenableFuture<LiveSession>.

  • Modification de diverses méthodes de création Java pour qu'elles renvoient désormais correctement l'instance de leur classe, au lieu de void.

Web

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

Modifications requises uniquement si vous commencez à utiliser Gemini Developer API (au lieu de Vertex AI Gemini API):

  • Paramètres de sécurité

    • Suppression des utilisations de SafetySetting.method non compatibles.
  • Données intégrées

    • Suppression des utilisations de InlineDataPart.videoMetadata non compatibles.

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

L'assistance pour Unity n'était pas disponible auprès de "Vertex AI in Firebase".

Découvrez comment faire vos premiers pas avec le SDK Firebase AI Logic pour Unity.

Erreurs possibles liées à la migration

Lorsque vous passez à la version GA de Firebase AI Logic, vous pouvez rencontrer des erreurs si vous n'avez pas effectué toutes les modifications requises, comme décrit dans ce guide de migration.

Erreur 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.

Si vous recevez une erreur 403 indiquant Requests to this API firebasevertexai.googleapis.com ... are blocked., cela signifie généralement que la clé API Firebase dans votre fichier de configuration ou objet Firebase ne contient pas d'API requise dans sa liste d'autorisation pour le produit que vous essayez d'utiliser.

Assurez-vous que la clé API Firebase utilisée par votre application inclut toutes les API requises dans la liste d'autorisation "Restrictions d'API" de la clé. Pour Firebase AI Logic, votre clé API Firebase doit inclure au moins l'API Firebase AI Logic dans sa liste d'autorisation. Cette API aurait dû être automatiquement ajoutée à la liste d'autorisation de votre clé API lorsque vous avez activé les API requises dans la console Firebase.

Vous pouvez afficher toutes vos clés API dans le panneau API et services > Identifiants de la console Google Cloud.


Envoyer des commentaires sur votre expérience avec Firebase AI Logic