Firebase AI Logic et ses SDK clients s'appelaient auparavant Vertex AI in Firebase. Pour mieux refléter l'élargissement de nos services et fonctionnalités (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 : Vertex AI Gemini API, disponible depuis longtemps, ou Gemini Developer API. Cela signifie que vous avez désormais la possibilité d'utiliser l'Gemini Developer API, qui propose un niveau sans frais avec des limites de débit et des quotas 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 : Gemini Developer API ou Vertex AI Gemini API.
Examinez 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 ne permet pas de fournir des fichiers à l'aide d'URL Cloud Storage, mais 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.
Connectez-vous à la console Firebase, puis sélectionnez votre projet Firebase.
Dans la console Firebase, accédez à la page Firebase AI Logic.
Cliquez sur Premiers pas pour lancer un workflow guidé qui vous aide à configurer les API requises et les ressources pour votre projet.
Sélectionnez 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 activera les API requises et créera une clé API Gemini dans votre projet.
N'ajoutez pas cette clé API Gemini dans le code de votre application. En savoir plusVertex AI Gemini API — facturation requise (nécessite le forfait Blaze avec paiement à l'utilisation)
Le workflow de la console activera les API requises dans votre projet.
Poursuivez la lecture de ce guide de migration pour mettre à jour la bibliothèque et l'initialisation dans votre application.
Étape 3 : Mettez à jour la bibliothèque utilisée dans votre application
Mettez à jour le code de votre application pour utiliser la bibliothèque Firebase AI Logic.
Swift
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 : Mettez à jour tous les packages. Pour ce faire, accédez à Fichier > Packages > Mettre à jour vers les dernières versions des packages.
Option 2 : Mettez à jour Firebase individuellement. Accédez au package Firebase dans la section Package Dependencies (Dépendances du package). Effectuez un clic droit sur le package Firebase, puis sélectionnez Mettre à jour le package.
Assurez-vous que le package Firebase affiche désormais la version 11.13.0 ou ultérieure. Si ce n'est pas le cas, vérifiez que vos exigences concernant les packages spécifiées autorisent la mise à jour vers la version 11.13.0 ou ultérieure.
Sélectionnez la cible de votre application dans l'éditeur de projet, puis accédez à la section Frameworks, Libraries, and Embedded Content (Frameworks, bibliothèques et contenu intégré).
Ajoutez la nouvelle bibliothèque : sélectionnez le bouton +, puis ajoutez FirebaseAI à partir du package Firebase.
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
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 suivantes.Notez qu'il peut être plus facile de migrer la base de code de votre application (voir les sections restantes 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.16.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") }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
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 suivantes.Notez qu'il peut être plus facile de migrer la base de code de votre application (voir les sections restantes 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.16.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") }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
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
Où que vous ayez 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 la base de code 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
Mettez à jour l'utilisation du package
firebase_ai
dans votre fichierpubspec.yaml
en exécutant la commande suivante à partir du répertoire de votre projet Flutter :flutter pub add firebase_ai
Recréez votre projet Flutter :
flutter run
Une fois la migration de votre application terminée (consultez 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 depuis "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. |
Mettez à jour 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.5-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.5-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.5-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.5-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.5-flash');
Unity
L'assistance pour Unity n'était pas disponible depuis "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éerez pas toujours une instance GenerativeModel
.
- Pour accéder à un modèle Imagen, créez une instance
ImagenModel
.
É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 les 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 nécessaires pour utiliser les SDK Firebase AI Logic. Consultez les listes suivantes pour identifier les modifications que vous devrez peut-être apporter à votre code pour intégrer 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 disponibilité générale, 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 des résultats structurés (comme JSON) à l'aide de
responseSchema
Si vous avez implémenté cette fonctionnalité avant la disponibilité générale, vous devrez modifier la façon dont vous définissez votre schéma. Nous vous recommandons de consulter le nouveau guide sur les sorties structurées pour apprendre à écrire des schémas JSON.Délai avant expiration
- Le délai avant expiration par défaut pour les requêtes est désormais de 180 secondes.
Obligatoire selon la plate-forme ou la langue
Swift
Énumérations
La plupart des types
enum
ont été remplacés par desstruct
avec des variables statiques. Ce changement permet de faire évoluer l'API de manière rétrocompatible. Lorsque vous utilisez des instructionsswitch
, vous devez désormais inclure un casdefault:
pour couvrir les valeurs inconnues ou non traitées, y compris les nouvelles valeurs qui seront ajoutées au SDK à l'avenir.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
. Ce type est désormais unstruct
.Suppression des cas
unknown
etunspecified
des énumérations suivantes (désormaisstruct
s) :HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
etFinishReason
.L'énumération
ModelContent.Part
a été remplacée par un protocole nomméPart
pour permettre l'ajout de nouveaux types de manière rétrocompatible. Ce changement est décrit plus en détail dans la section Parties de contenu.
Parties de contenu
Suppression du protocole
ThrowingPartsRepresentable
et simplification des initialisateurs pourModelContent
afin d'éviter les erreurs de compilation occasionnelles. Les images qui ne sont pas correctement encodées génèrent toujours des erreurs lorsqu'elles sont utilisées dansgenerateContent
.Remplacement des cas
ModelContent.Part
par les typesstruct
suivants conformes au protocolePart
:- De
.text
àTextPart
- De
.data
àInlineDataPart
- De
.fileData
àFileDataPart
- De
.functionCall
àFunctionCallPart
- De
.functionResponse
àFunctionResponsePart
- De
Catégorie de préjudice
- Le
HarmCategory
n'est plus imbriqué dans le typeSafetySetting
. Si vous l'appelezSafetySetting.HarmCategory
, vous pouvez le remplacer parHarmCategory
.
- Le
Commentaires sur la sécurité
- Suppression du type
SafetyFeedback
, car il n'était utilisé dans aucune des réponses.
- Suppression du type
Métadonnées de citation
- Remplacement du nom de la propriété
citationSources
parcitations
dansCitationMetadata
.
- Remplacement du nom de la propriété
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Réponse du candidat
- Changement de nom :
CandidateResponse
devientCandidate
, pour être cohérent avec les autres plates-formes.
- Changement de nom :
Configuration de la génération
- Les propriétés publiques de
GenerationConfig
ont été remplacées parinternal
. Ils restent tous configurables dans l'initialiseur.
- Les propriétés publiques de
Kotlin
Énumérations
Les classes
enum
etsealed
ont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blob
ont été renommées pour utiliserInlineData
.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
method
est désormais nullable.
- Le champ
Classe de durée
- Toutes les utilisations de la classe
Duration
de Kotlin ont été supprimées et remplacées parlong
. Cette modification améliore l'interopérabilité avec Java.
- Toutes les utilisations de la classe
Métadonnées de citation
- Encapsulation de tous les champs précédemment déclarés dans
CitationMetadata
dans une nouvelle classe appeléeCitation
. Les citations se trouvent dans la listecitations
deCitationMetadata
. Cette modification permet un meilleur alignement des types sur les plates-formes.
- Encapsulation de tous les champs précédemment déclarés dans
Compter les jetons
- Le champ
totalBillableCharacters
est désormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Instancier un modèle
- Le paramètre
requestOptions
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Live API
Suppression de la valeur
UNSPECIFIED
pour la classe d'énumérationResponseModality
. Utilisez plutôtnull
.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 deLiveContentResponse
.La classe
LiveContentResponse
a été supprimée. Des sous-classes deLiveServerMessage
correspondant aux réponses du modèle ont été fournies à la place.Modification de
LiveModelFutures.connect
pour renvoyerListenableFuture<LiveSessionFutures>
au lieu deListenableFuture<LiveSession>
.
Java
Énumérations
Les classes
enum
etsealed
ont été remplacées par des classes standards. Cette modification permet de faire évoluer l'API de manière rétrocompatible.L'énumération
BlockThreshold
a été renomméeHarmBlockThreshold
.Suppression de valeurs des énumérations suivantes :
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
Méthodes de blob
- Toutes les méthodes dont le nom comportait
Blob
ont été renommées pour utiliserInlineData
.
- Toutes les méthodes dont le nom comportait
Paramètres de sécurité
- Le champ
method
est désormais nullable.
- Le champ
Classe de durée
- Toutes les utilisations de la classe
Duration
de Kotlin ont été supprimées et remplacées parlong
. Cette modification améliore l'interopérabilité avec Java.
- Toutes les utilisations de la classe
Métadonnées de citation
- Encapsulation de tous les champs précédemment déclarés dans
CitationMetadata
dans une nouvelle classe appeléeCitation
. Les citations se trouvent dans la listecitations
deCitationMetadata
. Cette modification permet un meilleur alignement des types sur les plates-formes.
- Encapsulation de tous les champs précédemment déclarés dans
Compter les jetons
- Le champ
totalBillableCharacters
est désormais nullable.
- Le champ
Nombre total de caractères facturables
- La propriété
totalBillableCharacters
dansCountTokensResponse
a été rendue facultative pour refléter les situations où aucun caractère n'est envoyé.
- La propriété
Instancier un modèle
- Le paramètre
requestOptions
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Live API
Suppression de la valeur
UNSPECIFIED
pour la classe d'énumérationResponseModality
. Utilisez plutôtnull
.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 deLiveContentResponse
.La classe
LiveContentResponse
a été supprimée. Des sous-classes deLiveServerMessage
correspondant aux réponses du modèle ont été fournies à la place.Modification de
LiveModelFutures.connect
pour renvoyerListenableFuture<LiveSessionFutures>
au lieu deListenableFuture<LiveSession>
.
Diverses méthodes de création Java ont été modifiées pour renvoyer correctement l'instance de leur classe, au lieu de
void
.
Web
Énumérations
- Valeurs supprimées des énumérations suivantes :
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
etFinishReason
.
- Valeurs supprimées des énumérations suivantes :
Motif du blocage
- Modification de
blockReason
dansPromptFeedback
(désormais facultatif).
- Modification de
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 compatible.
- Suppression des utilisations de
Données intégrées
- Suppression des utilisations de
InlineDataPart.videoMetadata
non compatible.
- Suppression des utilisations de
Dart
Énumérations
- Suppression de valeurs des énumérations suivantes :
HarmCategory
,HarmProbability
,BlockReason
etFinishReason
.
- Suppression de valeurs des énumérations suivantes :
Partie "Données"
DataPart
a été renomméInlineDataPart
, et la fonctionstatic
data
a été renomméeinlineData
pour s'aligner sur les autres plates-formes.
Options de demande
- Suppression de
RequestOptions
, cartimeout
ne fonctionnait pas. Elle sera réintégrée prochainement, mais sera déplacée vers le typeGenerativeModel
pour correspondre aux autres plates-formes.
- Suppression de
Séquences d'arrêt
- Le paramètre
stopSequences
deGenerationConfig
est désormais facultatif et est défini par défaut surnull
au lieu d'un tableau vide.
- Le paramètre
Citations
- Remplacement du nom de la propriété
citationSources
parcitations
dansCitationMetadata
. Le typeCitationSource
a été renomméCitation
pour correspondre aux autres plates-formes.
- Remplacement du nom de la propriété
Types, méthodes et propriétés publics inutiles
- Suppression des types, méthodes et propriétés suivants qui ont été exposés par erreur :
defaultTimeout
,CountTokensResponseFields
,parseCountTokensResponse
,parseEmbedContentResponse
,parseGenerateContentResponse
,parseContent
,BatchEmbedContentsResponse
,ContentEmbedding
,EmbedContentRequest
etEmbedContentResponse
.
- Suppression des types, méthodes et propriétés suivants qui ont été exposés par erreur :
Compter les jetons
- Suppression des champs supplémentaires de la fonction
countTokens
qui ne sont plus nécessaires. Seulcontents
est nécessaire.
- Suppression des champs supplémentaires de la fonction
Instancier un modèle
- Le paramètre
systemInstruction
a été déplacé à la fin de la liste des paramètres pour s'aligner sur les autres plates-formes.
- Le paramètre
Fonctionnalité d'intégration
- Suppression des fonctionnalités d'embedding non compatibles (
embedContent
etbatchEmbedContents
) du modèle.
- Suppression des fonctionnalités d'embedding non compatibles (
Unity
L'assistance pour Unity n'était pas disponible depuis "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 migrez vers 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 ou objet de configuration Firebase ne comporte pas l'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 des "Restrictions d'API" de la clé. Pour Firebase AI Logic, votre clé API Firebase doit au moins avoir l'API Firebase AI Logic dans sa liste d'autorisation. Cette API aurait dû être ajoutée automatiquement à 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