Firebase Remote Config est compatible avec la configuration côté serveur à l'aide du SDK Admin Firebase pour Python v6.7.0 et versions ultérieures. Cette fonctionnalité vous permet de gérer de manière dynamique le comportement et la configuration des applications côté serveur à l'aide de Remote Config. Cela inclut les implémentations sans serveur telles que Cloud Functions.
Contrairement aux SDK client Firebase, qui récupèrent une configuration spécifique au client dérivée du modèle Remote Config, le SDK Remote Config côté serveur télécharge un modèle Remote Config complet depuis Firebase. Votre serveur peut ensuite évaluer le modèle avec chaque requête entrante et utiliser sa propre logique pour fournir une réponse personnalisée avec une latence très faible. Vous pouvez utiliser des conditions pour contrôler et personnaliser les réponses en fonction de pourcentages aléatoires et d'attributs client définis dans les signaux personnalisés.
Avec Remote Config côté serveur, vous pouvez :
- Définissez des paramètres de configuration pour les applications exécutées sur votre serveur ou accessibles via celui-ci, ce qui permet des cas d'utilisation tels que la configuration à distance des paramètres et des invites de modèles d'IA, ainsi que d'autres intégrations, afin de garantir la sécurité de vos clés API.
- Ajustez dynamiquement les paramètres en réponse aux changements dans votre environnement ou à d'autres modifications d'application, comme la mise à jour des paramètres LLM et des points de terminaison du modèle.
- Contrôlez les coûts en mettant à jour à distance les API appelées par votre serveur.
- Générez des configurations personnalisées à la volée pour les clients qui accèdent à votre serveur.
- Enregistrez les clients qui ont reçu une valeur de paramètre et utilisez-la dans Cloud Functions dans le cadre d'un système de vérification des droits d'accès.
Vous pouvez déployer Remote Config côté serveur sur Cloud Run, Cloud Functions ou dans des environnements de serveur auto-hébergés.
Avant de commencer
Suivez les instructions de la section Ajouter le SDK Admin Firebase à votre serveur pour créer un projet Firebase, configurer un compte de service et ajouter le SDK Firebase Python à votre serveur.
Étape 1 : Initialiser le SDK Admin Firebase Python et autoriser les requêtes API
Lorsque vous initialisez le SDK Admin sans aucun paramètre, il utilise les identifiants d'application par défaut Google et lit les options à partir de la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS. Pour initialiser le SDK et ajouter Remote Config :
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
Étape 2 : Identifiez les valeurs de paramètre par défaut pour votre application serveur
Identifiez les variables de votre application que vous souhaitez mettre à jour de manière dynamique avec Remote Config. Ensuite, réfléchissez aux variables qui doivent être définies par défaut dans votre application et à leurs valeurs par défaut. Cela garantit que votre application s'exécute correctement même si sa connexion au serveur backend Remote Config est interrompue.
Par exemple, si vous écrivez une application serveur qui gère une fonction d'IA générative, vous pouvez définir un nom de modèle par défaut, un préambule d'invite et une configuration d'IA générative, comme suit :
| Nom du paramètre | Description | Type | Valeur par défaut |
|---|---|---|---|
model_name |
Nom de l'API du modèle | Chaîne | gemini-2.0-flash |
preamble_prompt
|
Requête à ajouter au début de la requête de l'utilisateur | Chaîne | I'm a
developer who
wants to learn
about Firebase and
you are a helpful
assistant who
knows everything
there is to know
about Firebase! |
generation_config
|
Paramètres à envoyer au modèle | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Étape 3 : Configurez votre application serveur
Une fois que vous avez déterminé les paramètres que vous souhaitez utiliser avec Remote Config, configurez votre application pour définir des valeurs par défaut, extraire le modèle Remote Config spécifique au serveur et utiliser ses valeurs. Les étapes suivantes décrivent comment configurer votre application Python.
Accédez au modèle et chargez-le.
from firebase_admin import remote_config # Initialize server-side Remote Config template = remote_config.init_server_template() # Load the template from the backend asyncio.run(template.load())Si vous utilisez Python avec Cloud Functions, vous pouvez également utiliser
get_server_templateasynchrone pour initialiser et charger le modèle en une seule étape :# Initialize server-side Remote Config template = await remote_config.get_server_template()Pour vous assurer que votre application s'exécute correctement même si sa connexion au serveur backend Remote Config est interrompue, ajoutez des valeurs par défaut pour chaque paramètre à votre application. Pour ce faire, ajoutez un
default_configdans votre fonction de modèleinit_server_templateouget_server_template:template = remote_config.init_server_template({ default_config: { 'model_name': "gemini-pro", 'generation_config': '{"stopSequences": [], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}', 'preamble_prompt': "I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!" }, }) # Load Remote Config asyncio.run(template.load())Vous pouvez également initialiser un modèle en utilisant la fonction
get_server_templatepour récupérer le modèle de serveur requis. Vous pouvez convertir ce modèle au format JSON à l'aide de la fonctiontemplate.to_json. Ce modèle JSON peut être stocké localement. Vous pouvez ensuite initialiser ce modèle JSON à l'aide de la fonctioninit_server_template.Une fois le modèle chargé, utilisez
template.evaluate()pour importer les paramètres et les valeurs du modèle :# Add template parameters to config config = template.evaluate()Si vous définissez des conditions dans votre modèle Remote Config, définissez et fournissez les valeurs souhaitées :
- Si vous utilisez des conditions de pourcentage, ajoutez le
randomization_idque vous souhaitez utiliser pour évaluer vos conditions dans la fonctiontemplate.evaluate(). - Si vous utilisez des signaux personnalisés, définissez les attributs et leurs valeurs. Les signaux personnalisés sont disponibles avec le SDK Admin Firebase pour Python version 6.7.0 et ultérieure.
Par exemple, vous pouvez définir un ID d'installation Firebase comme
randomization_id, ou un ID utilisateur, pour vous assurer que chaque utilisateur qui contacte votre serveur est ajouté au bon groupe aléatoire,versioncomme signal personnalisé pour cibler des versions client spécifiques etplatformcomme signal personnalisé pour cibler la plate-forme client.Pour en savoir plus sur les conditions, consultez Types de règles de condition.
# Add template parameters to `config`. Evaluates the # template and returns the parameter value assigned to # the group assigned to the {randomization_id} and version. config = template.evaluate({ 'randomization_id': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })- Si vous utilisez des conditions de pourcentage, ajoutez le
Ensuite, extrayez les valeurs de paramètre dont vous avez besoin à partir de la constante de configuration. Utilisez
getterspour caster les valeurs de Remote Config dans le format attendu. Les types suivants sont acceptés :- Booléen :
get_bool - Entier :
get_int - Flottant :
get_float - Chaîne :
get_string - Source de la valeur :
get_value_source
Par exemple, si vous implémentez Vertex AI sur votre serveur et que vous souhaitez modifier le modèle et les paramètres du modèle, vous pouvez configurer les paramètres pour
model_nameetgeneration_config. Voici un exemple d'accès aux valeurs de Remote Config :# Replace defaults with values from Remote Config. generation_config = json.loads(config.get_string('generation_config')) is_ai_enabled = config.get_bool('is_ai_enabled') model = config.get_string('model_name') # Generates a prompt comprised of the Remote Config # parameter and prepends it to the user prompt. prompt = f"{config.get_string('preamble_prompt')}{req.args.get('prompt')}"- Booléen :
Si votre serveur est de longue durée, contrairement à un environnement sans serveur, rechargez régulièrement le modèle pour vous assurer de récupérer le modèle le plus récent à partir du serveur Remote Config.
Étape 4 : Définissez les valeurs des paramètres spécifiques au serveur dans Remote Config
Ensuite, créez un modèle Remote Config de serveur et configurez les paramètres et les valeurs à utiliser dans votre application.
Pour créer un modèle Remote Config spécifique à un serveur :
- Ouvrez la page Paramètres de la console Firebase Remote Config, puis sélectionnez Serveur dans le sélecteur Client/Serveur.
- Définissez des paramètres Remote Config avec les mêmes noms et types de données que ceux que vous avez définis dans votre application, puis fournissez des valeurs. Ces valeurs remplaceront le
default_configque vous avez défini dans Configurer votre application serveur lorsque vous récupérerez et évaluerez le modèle, et que vous attribuerez ces valeurs à vos variables. - Vous pouvez également définir des conditions pour appliquer des valeurs de manière persistante à un échantillon aléatoire d'instances ou à des signaux personnalisés que vous définissez. Pour en savoir plus sur les conditions, consultez Types de règles de condition.
- Lorsque vous avez terminé d'ajouter des paramètres, cliquez sur Publier les modifications.
- Vérifiez les modifications, puis cliquez à nouveau sur Publier les modifications.
Étape 5 : Déployer avec Cloud Functions ou Cloud Run
Si votre application serveur est légère et basée sur des événements, vous devriez envisager de déployer votre code à l'aide de Cloud Functions. Par exemple, si vous avez une application qui inclut des dialogues de personnages optimisés par une API d'IA générative (par exemple, Google AI ou Vertex AI). Dans ce cas, vous pouvez héberger votre logique de diffusion de LLM dans une fonction que votre application appelle à la demande.
Pour découvrir une solution qui utilise Cloud Functions de 2e génération avec Remote Config côté serveur, consultez Utiliser Remote Config côté serveur avec Cloud Functions et Vertex AI.
Pour en savoir plus sur le déploiement de votre application avec Cloud Functions, consultez Premiers pas : écrire, tester et déployer vos premières fonctions.
Sinon, vous pouvez envisager d'utiliser Cloud Run. Pour déployer votre application serveur avec Cloud Run, suivez le guide Guide de démarrage rapide : déployer un service Python sur Cloud Run.
Pour en savoir plus sur les cas d'utilisation les plus adaptés à Cloud Functions et à Cloud Run, consultez Cloud Functions vs Cloud Run : quand utiliser l'un plutôt que l'autre.