Firebase Remote Config supporta la configurazione lato server utilizzando l'SDK Firebase Admin Node.js v12.1.0 o 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 del 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 entrata 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 agli attributi del cliente definiti negli indicatori personalizzati.
Con Remote Config lato server, puoi:
- Definisci i parametri di configurazione per le applicazioni in esecuzione o a cui si accede tramite il server, consentendo casi d'uso come la configurazione remota di parametri e prompt del modello di AI e altre integrazioni, per garantire la sicurezza delle chiavi API.
- Regola dinamicamente i parametri in risposta alle modifiche apportate all'ambiente o ad altre applicazioni, ad esempio l'aggiornamento dei parametri LLM e degli endpoint del modello.
- Controlla i costi aggiornando da remoto le API chiamate dal 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 Admin Node.js al server.
Passaggio 1: inizializza l'SDK Firebase Admin Node.js e autorizza le richieste API
Quando inizializzi l'SDK Admin 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 { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Passaggio 2: identifica i valori predefiniti dei parametri per l'applicazione server
Identifica le variabili nella tua app che vuoi aggiornare dinamicamente con Remote Config. Poi, considera quali variabili devono essere impostate per impostazione predefinita nella tua applicazione e quali devono essere i loro 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, potresti 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 API 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 server
Dopo aver determinato i parametri da utilizzare con Remote Config, configura l'applicazione per impostare i valori predefiniti, recuperare il modello Remote Config specifico del server e utilizzare i relativi valori. I passaggi seguenti descrivono come configurare l'applicazione Node.js.
Accedi al modello e caricalo.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Se utilizzi Node.js all'interno di un Cloud Functions, puoi utilizzare
getServerTemplate
asincrono per inizializzare e caricare il modello in un unico passaggio:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
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. Per farlo, aggiungi un
defaultConfig
all'interno della funzione modelloinitServerTemplate
ogetServerTemplate
:const template = rc.initServerTemplate({ 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 await template.load()
Dopo il caricamento del modello, utilizza
template.evaluate()
per importare parametri e valori dal modello:// Add template parameters to config const config = template.evaluate();
(Facoltativo) Se imposti condizioni nel modello Remote Config, definisci e fornisci i valori che vuoi:
- Se utilizzi condizioni
percentuali,
aggiungi la
randomizationId
che vuoi utilizzare per valutare le condizioni all'interno della funzionetemplate.evaluate()
. - Se utilizzi indicatori personalizzati, definisci gli attributi e i relativi valori. Gli indicatori personalizzati sono disponibili con l'SDK Firebase Admin Node.js 12.5.0 e versioni successive.
Ad esempio, puoi impostare un ID installazione di Firebase come
randomizationId
o un ID utente per assicurarti che ogni utente che contatta il tuo server venga aggiunto al gruppo randomizzato corretto,version
come indicatore personalizzato per scegliere come target versioni specifiche del client eplatform
come indicatore personalizzato per scegliere come target la piattaforma client.Per ulteriori informazioni sulle condizioni, vedi 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. const config = template.evaluate({ randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04", version: "1.0", platform: "Android" });
- Se utilizzi condizioni
percentuali,
aggiungi la
Successivamente, estrai i valori dei parametri che ti servono dalla costante di configurazione. Utilizza
getters
per convertire i valori da Remote Config nel formato previsto. Sono supportati i seguenti tipi:- Booleano:
getBoolean
- Oggetto:
getValue
- Numero:
getNumber
- Stringa:
getString
Ad esempio, se stai implementando Vertex AI sul tuo server e vuoi modificare il modello e i parametri del modello, potresti voler 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. const generationConfig = JSON.parse( config.getString('generation_config')); const is_ai_enabled = config.getBool('is_ai_enabled'); const model = config.getString('model_name'); // Generates a prompt comprised of the Remote Config // parameter and prepends it to the user prompt const prompt = `${config.getString('preamble_prompt')} ${req.query.prompt}`;
- Booleano:
Se il server è in esecuzione da molto tempo, anziché in un ambiente serverless, utilizza
setInterval
per ricaricare periodicamente il modello e verificare di recuperare il modello più aggiornato dal server Remote Config.
Passaggio 4: imposta i valori dei parametri specifici del server in Remote Config
Successivamente, 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 del server:
- Apri la pagina Parametri della console Firebase Remote Config e, nel 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
defaultConfig
impostato in Configura l'applicazione server quando recuperi e valuti il modello e assegni questi valori alle variabili. - Se vuoi, imposta le condizioni per applicare in modo permanente i valori a un campione casuale di istanze o segnali 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, supponiamo che tu abbia un'app che include dialoghi tra personaggi basati su un'API di AI generativa (ad esempio Google AI o Vertex AI). In questo caso, potresti ospitare la logica di servizio LLM in una funzione che la tua app chiama on demand.
Per una soluzione che utilizza Cloud Functions di seconda generazione con Remote Config lato server, consulta Utilizzare Remote Config lato server con Cloud Functions e Vertex AI.
Per saperne di più sul deployment dell'app con Cloud Functions, consulta Guida introduttiva: scrivi, testa ed esegui il deployment delle tue prime funzioni.
Prova una funzione chiamabile di esempio con Remote Config e App Check lato server Chiama Vertex AI Gemini API con Remote Config e App Check.
Se la tua applicazione è pensata per essere eseguita a lungo (ad esempio, un'app web con asset), potresti prendere in considerazione Cloud Run. Per eseguire il deployment dell'app server con Cloud Run, segui la guida in Guida rapida: distribuisci un servizio Node.js su Cloud Run.
Per saperne di più sui casi d'uso migliori per Cloud Run e Cloud Functions, consulta Cloud Functions vs. Cloud Run: quando utilizzare uno rispetto all'altro.