Utilizza Remote Config in ambienti server

Firebase Remote Config ora supporta la configurazione lato server utilizzando SDK Firebase Admin Node.js v12.1.0+. Questa nuova funzionalità consente di gestire dinamicamente il comportamento e la configurazione dell'infrastruttura applicazioni che utilizzano Remote Config. Ciò include le implementazioni serverless come Cloud Functions.

A differenza degli SDK client Firebase, che recuperano una configurazione specifica per il client deriva dal modello Remote Config, lato server L'SDK Remote Config scarica un modello Remote Config completo da Firebase. Il server può quindi valutare il modello con ogni in entrata e utilizzare la propria logica per fornire una risposta personalizzata con una latenza molto bassa.

Con la funzionalità Remote Config lato server, puoi:

  • Definisci i parametri di configurazione per le applicazioni in esecuzione o a cui si accede tramite il tuo server, consentendo casi d'uso come la configurazione remota parametri del modello di IA, prompt e altre integrazioni, per garantire Le chiavi API rimangono al sicuro.
  • Adegua i parametri in modo dinamico in risposta ai cambiamenti dell'ambiente o ad altre modifiche alle applicazioni, come l'aggiornamento dei parametri LLM e degli endpoint del modello.
  • Controlla i costi aggiornando da remoto le API chiamate al server.
  • Genera immediatamente configurazioni personalizzate per i clienti che accedono ai tuoi server web.
  • Registra i client che hanno ricevuto un valore parametro e utilizzalo in Cloud Functions nell'ambito 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 Node.js Firebase Admin al server.

Passaggio 1: inizializza l'SDK Node.js Firebase Admin e autorizza le richieste API

Quando si inizializza l'SDK Admin senza parametri, l'SDK utilizza Google Valore predefinito applicazione Credenziali e legge le opzioni dall'ambiente GOOGLE_APPLICATION_CREDENTIALS . Ad esempio, 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 dei parametri predefiniti per la tua applicazione server

Identifica le variabili dell'app che vuoi aggiornare dinamicamente con Remote Config. Quindi, considera quali variabili devono essere impostate per impostazione predefinita la tua applicazione e 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 IA generativa, puoi impostare un nome del modello predefinito, un preambolo del prompt e una configurazione di IA generativa, come la seguente:

Nome parametro Descrizione Tipo Valore predefinito
model_name Nome dell'API del modello Stringa gemini-1.5-pro
preamble_prompt Prompt da anteporre all'interfaccia utente query 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 valori predefiniti, recuperare il modello Remote Config specifico del server e utilizzare i suoi valori. La i seguenti passaggi descrivono come configurare l'applicazione Node.js.

  1. 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 una Cloud Functions, puoi utilizzare l'getServerTemplate asincrono per recuperare e caricare modello in un solo passaggio:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Per assicurarti che l'applicazione venga eseguita correttamente anche se la sua connessione a il server di backend Remote Config è stato interrotto, aggiungi valori predefiniti per ogni parametro alla tua app. Per farlo, aggiungi un defaultConfig all'interno di Funzione modello initServerTemplate o getServerTemplate:

    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();
    
  3. Dopo aver caricato il modello, utilizza template.evaluate() per importare i parametri e i valori dal modello:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Facoltativamente, se imposti la percentuale nel tuo modello Remote Config, definisci e fornisci il randomizationId che vuoi utilizzare per valutare le condizioni nel template.evaluate().

    Ad esempio, puoi impostare un'installazione ID come randomizationId, o ID utente, per assicurarti che ogni utente contatti in cui il server viene aggiunto al gruppo randomizzato appropriato. La di base, ma potresti configurare server per generare randomizationIds diversi per un client diverso per garantire che agli utenti vengano mostrati valori coerenti Remote Config in base alla sua appartenenza come percentuale gruppi.

    Per ulteriori informazioni sulle condizioni percentuali, vedi Utente in casuale percentuale.

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  5. Quindi, estrai i valori parametro necessari dalla costante di configurazione. Utilizza le funzionalità di getters per trasmettere i valori da Remote Config nell'oggetto previsto formato. Sono supportati i seguenti tipi:

    • Booleano: getBoolean
    • Oggetto: getValue
    • Numero: getNumber
    • Stringa: getString

    Ad esempio, se di implementare Vertex AI server web e modificare il modello e i relativi parametri, potresti configurare i parametri per model_name e generationConfig. Ecco un esempio di come puoi 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}`;
    
  6. 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:

  1. Apri i parametri della console Firebase Remote Config pagina di destinazione e Selettore Client/Server, seleziona Server.
  2. Definisci i parametri Remote Config con gli stessi nomi e tipi di dati di i parametri che hai definito nella tua app e forniscono i valori. Questi i valori andranno a sostituire il valore defaultConfig impostato in Configura dell'applicazione server web quando recuperi e valuti modello e assegna questi valori alle variabili.
  3. Facoltativamente, imposta le condizioni percentuali per applicare in modo permanente un valore a un un campione casuale di istanze. Per ulteriori informazioni sulla percentuale condizioni, vedi Utente in casuale percentuale.
  4. Dopo aver aggiunto i parametri, fai clic su Pubblica modifiche.
  5. Esamina 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, dovresti prendere in considerazione eseguendo il deployment del codice Cloud Functions Ad esempio, immagina di avere 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 generazione di LLM in una funzione chiamata on demand dalla tua app.

Se la tua applicazione è pensata per essere a lunga esecuzione (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 Node.js su Cloud Run.

Per ulteriori informazioni sui migliori casi d'uso di Cloud Run e Cloud Functions, consulta Cloud Functions rispetto a Cloud Run: quando utilizzarlo uno sopra altri.