Firebase Remote Config supporta la configurazione lato server utilizzando l'SDK Firebase Admin per Python 6.7.0 e versioni successive. Questa funzionalità ti consente di gestire in modo dinamico il comportamento e la configurazione delle applicazioni lato server utilizzando Remote Config. Sono incluse implementazioni serverless come Cloud Functions.
A differenza degli SDK client Firebase, che recuperano una configurazione specifica per il client derivata dal modello Remote Config, l'SDK Remote Config lato server scarica un modello Remote Config completo da Firebase. Il server può quindi valutare il modello con ogni richiesta in arrivo e utilizzare la propria logica per fornire una risposta personalizzata con una latenza molto bassa. Puoi utilizzare le condizioni per controllare e personalizzare le risposte in base a percentuali casuali e attributi dei clienti definiti negli indicatori personalizzati.
Con Remote Config lato server puoi:
- Definisci i parametri di configurazione per le applicazioni in esecuzione sul server o a cui si accede tramite il server, consentendo casi d'uso come la configurazione da remoto di parametri e prompt dei modelli di IA e altre integrazioni, per garantire la sicurezza delle tue chiavi API.
- Modifica dinamicamente i parametri in risposta alle modifiche dell'ambiente o ad altre modifiche dell'applicazione, ad esempio l'aggiornamento dei parametri LLM e degli endpoint del modello.
- Controlla i costi aggiornando da remoto le API chiamate dal tuo server.
- Genera configurazioni personalizzate al volo per i client che accedono al tuo server.
- Registra i client che hanno ricevuto un valore parametro e utilizzalo in Cloud Functions come parte di un sistema di verifica dei diritti.
Puoi eseguire il deployment di Remote Config lato server su Cloud Run, Cloud Functions o in ambienti server self-hosted.
Prima di iniziare
Segui le istruzioni riportate in Aggiungere l'SDK Firebase Admin al server per creare un progetto Firebase, configurare un account di servizio e aggiungere l'SDK Firebase Python al server.
Passaggio 1: inizializza l'SDK Firebase Admin per Python e autorizza le richieste API
Quando l'SDK Admin viene inizializzato senza parametri, l'SDK utilizza le credenziali predefinite dell'applicazione Google e legge le opzioni dalla variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
. Per inizializzare l'SDK e aggiungere Remote Config:
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
Passaggio 2: identifica i valori predefiniti dei parametri per l'applicazione server
Identifica le variabili dell'app che vuoi aggiornare dinamicamente con Remote Config. Poi, valuta quali variabili devono essere impostate per impostazione predefinita nella tua applicazione e quali devono essere i relativi valori predefiniti. In questo modo, la tua applicazione viene eseguita correttamente anche se la connessione al server di backend Remote Config viene interrotta.
Ad esempio, se stai scrivendo un'applicazione server che gestisce una funzione di AI generativa, puoi impostare un nome del modello predefinito, un preambolo del prompt e una configurazione di AI generativa, come la seguente:
Nome parametro | Descrizione | Tipo | Valore predefinito |
---|---|---|---|
model_name |
Nome dell'API del modello | Stringa | gemini-2.0-flash |
preamble_prompt
|
Prompt da anteporre alla query dell'utente | Stringa | 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
|
Parametri da inviare al modello | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Passaggio 3: configura l'applicazione del server
Dopo aver stabilito i parametri da utilizzare con Remote Config, configura l'applicazione per impostare i valori predefiniti, recuperare il modello Remote Config specifico del server e utilizzarne i valori. I passaggi riportati di seguito descrivono come configurare l'applicazione Python.
Accedi e carica il modello.
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())
Se utilizzi Python con Cloud Functions, puoi utilizzare
get_server_template
asincrono per recuperare e caricare il modello in un unico passaggio:# Initialize server-side Remote Config template = remote_config.get_server_template()
Per assicurarti che l'applicazione venga eseguita correttamente anche se la connessione al server di backend Remote Config viene interrotta, aggiungi valori predefiniti per ogni parametro all'app. A tale scopo, aggiungi un
defaultConfig
all'interno della funzione del modelloinit_server_template
oget_server_template
:template = remote_config.init_server_template({ defaultConfig: { '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())
Un altro modo per inizializzare un modello è utilizzare la funzione
get_server_template
per recuperare il modello di server richiesto. Puoi convertire questo modello in formato JSON utilizzando la funzionetemplate.to_json
. Questo modello JSON può essere archiviato localmente. Successivamente, puoi inizializzare questo modello JSON utilizzando la funzioneinit_server_template
.Dopo aver caricato il modello, utilizza
template.evaluate()
per importare i parametri e i valori dal modello:# Add template parameters to config config = template.evaluate()
Se lo desideri, se imposti condizioni nel modello Remote Config, definisci e fornisci i valori che preferisci:
- Se utilizzi le condizioni
in percentuale,
aggiungi il valore
randomizationId
che vuoi utilizzare per valutare le condizioni all'interno della funzionetemplate.evaluate()
. - Se utilizzi gli indicatori personalizzati, definisci gli attributi e i relativi valori. Gli indicatori personalizzati sono disponibili con la versione 6.7.0 o successive dell'SDK di Firebase Admin per Python.
Ad esempio, puoi impostare un ID di installazione Firebase come
randomizationId
o un ID utente per assicurarti che ogni utente che contatta il tuo server venga aggiunto al gruppo randomizzato appropriato,version
come indicatore personalizzato per scegliere come target versioni client specifiche eplatform
come indicatore personalizzato per scegliere come target la piattaforma client.Per ulteriori informazioni sulle condizioni, consulta Tipi di regole di condizione.
# Add template parameters to `config`. Evaluates the # template and returns the parameter value assigned to # the group assigned to the {randomizationId} and version. config = template.evaluate({ 'randomizationId': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })
- Se utilizzi le condizioni
in percentuale,
aggiungi il valore
Successivamente, estrai i valori parametro di cui hai bisogno dalla costante di configurazione. Utilizza
getters
per eseguire il casting dei valori da Remote Config nel formato previsto. Sono supportati i seguenti tipi:- Booleano:
get_bool
- Oggetto:
get_value
- Numero:
get_number
- Stringa:
get_string
Ad esempio, se implementi Vertex AI sul tuo server e vuoi modificare il modello e i relativi parametri, potresti dover configurare i parametri per
model_name
egeneration_config
. Ecco un esempio di come accedere ai valori di 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')}"
- Booleano:
Se il tuo server è di lunga durata, al contrario di un ambiente serverless, utilizza
setInterval
per ricaricare periodicamente il modello in modo da assicurarti di recuperare periodicamente il modello più aggiornato dal Remote Config server.
Passaggio 4: imposta i valori dei parametri specifici del server in Remote Config
Poi crea un modello Remote Config del server e configura i parametri e i valori da utilizzare nella tua app.
Per creare un modello Remote Config specifico per il server:
- Apri la pagina dei parametri Remote Config della console Firebase e, dal selettore Client/Server, seleziona Server.
- Definisci i parametri Remote Config con gli stessi nomi e tipi di dati dei parametri definiti nella tua app e fornisci i valori. Questi valori sostituiranno il valore
defaultConfig
impostato in Configurare l'applicazione del server quando ottieni e valuti il modello e li assegni alle variabili. - Se vuoi, imposta le condizioni per applicare in modo permanente i valori a un campione random di istanze o indicatori personalizzati che definisci. Per ulteriori informazioni sulle condizioni, consulta Tipi di regole di condizione.
- Al termine dell'aggiunta dei parametri, fai clic su Pubblica modifiche.
- Rivedi le modifiche e fai di nuovo clic su Pubblica modifiche.
Passaggio 5: esegui il deployment con Cloud Functions o Cloud Run
Se la tua applicazione server è leggera e basata su eventi, ti consigliamo di eseguire il deployment del codice utilizzando Cloud Functions. Ad esempio, se hai un'app che include il dialogo dei personaggi basato su un'API di IA generativa (ad esempio Google AI o Vertex AI). In questo caso, puoi ospitare la logica di servizio LLM in una funzione chiamata on demand dall'app.
Per utilizzare una soluzione che utilizza Cloud Functions di 2ª generazione con Remote Config lato server, consulta Utilizzare Remote Config lato server con Cloud Functions e Vertex AI.
Per scoprire di più sul deployment dell'app con Cloud Functions, consulta la sezione Iniziare: scrivere, testare e eseguire il deployment delle prime funzioni.
Se la tua applicazione è pensata per essere di lunga durata (ad esempio un'app web con asset), potresti prendere in considerazione Cloud Run. Per eseguire il deployment della tua app server con Cloud Run, segui la guida Guida rapida: esegui il deployment di un servizio Python in Cloud Run.
Per ulteriori informazioni sui casi d'uso migliori per Cloud Run e Cloud Functions, consulta Cloud Functions e Cloud Run: quando scegliere uno rispetto all'altro.