Firebase Remote Config ahora admite la configuración del servidor con la versión 12.1.0 o una posterior del SDK de Firebase Admin para Node.js. Esta nueva capacidad permite que administres de forma dinámica el comportamiento y la configuración de aplicaciones del servidor con Remote Config. Esto incluye implementaciones sin servidores como Cloud Functions.
A diferencia de los SDK cliente de Firebase, que recuperan una configuración específica del cliente derivada de la plantilla de Remote Config, el SDK de Remote Config del servidor descarga una plantilla de Remote Config completa desde Firebase. El servidor podrá evaluar la plantilla con cada solicitud entrante y usa su propia lógica para entregar una respuesta personalizada con muy baja latencia. Puedes usar condiciones para controlar y personalizar las respuestas en función de porcentajes aleatorios y atributos del cliente definidos en los indicadores personalizados.
Con Remote Config del servidor, puedes hacer lo siguiente:
- Define parámetros de configuración para las aplicaciones que se ejecutan o a las que se accede a través del servidor, lo que permite casos de uso como la configuración remota de parámetros, instrucciones y otras integraciones del modelo de IA para garantizar que las claves de API se mantengan seguras.
- Ajusta dinámicamente los parámetros en respuesta a los cambios en tu entorno o otros cambios en las aplicaciones, como la actualización de parámetros de LLM y extremos del modelo.
- Para controlar los costos, actualiza de forma remota las APIs que llama tu servidor.
- Genera configuraciones personalizadas sobre la marcha para los clientes que acceden a tu servidor.
- Registra qué clientes recibieron un valor de parámetro y utilízalo en Cloud Functions como parte de un sistema de verificación de derechos.
Puedes implementar Remote Config del servidor en Cloud Run, Cloud Functions o entornos de servidor autoalojados.
Antes de comenzar
Sigue las instrucciones en Agrega el SDK de Firebase Admin a tu servidor para crear un proyecto de Firebase, configurar una cuenta de servicio y agregar el SDK de Firebase Admin para Node.js a tu servidor.
Paso 1: Inicializa el SDK de Firebase Admin para Node.js y autoriza las solicitudes a la API
Cuando inicializas el SDK de Admin sin parámetros, el SDK usa credenciales predeterminadas de la aplicación de Google y lee las opciones de la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
. Por ejemplo, para inicializar el SDK y agregar Remote Config, haz lo siguiente:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Paso 2: Identifica los valores de los parámetros predeterminados para la aplicación de servidor
Identifica las variables de tu app con las que quieres actualizar de forma dinámica Remote Config. Luego, considera qué variables se deben configurar de forma predeterminada en tu aplicación y cuáles deberían ser sus valores predeterminados. Esto garantiza que tu aplicación se ejecute de manera correcta incluso si se interrumpe la conexión al servidor de backend de Remote Config.
Por ejemplo, si escribes una aplicación de servidor que administra una función de IA generativa, puedes establecer un nombre de modelo predeterminado, un preámbulo de instrucción y una configuración de IA generativa, como la siguiente:
Nombre del parámetro | Descripción | Tipo | Valor predeterminado |
---|---|---|---|
model_name |
Nombre de la API de modelo | String | gemini-1.5-pro |
preamble_prompt
|
Instrucción para anteponer a la pregunta del usuario | String | 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
|
Parámetros para enviar al modelo | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Paso 3: Configura la aplicación de tu servidor
Después de determinar los parámetros que deseas utilizar con Remote Config, configura tu aplicación para establecer valores predeterminados, recuperar la plantilla de Remote Config específica del servidor y usar sus valores. El En los siguientes pasos, se describe cómo configurar tu aplicación de Node.js.
Accede a la plantilla y cárgala.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Si usas Node.js en Cloud Functions, puedes usar
getServerTemplate
asíncrono para recuperar y cargar la plantilla en un solo paso:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Para asegurarte de que tu aplicación se ejecute correctamente, incluso si está conectada al servidor de backend de Remote Config, agrega valores predeterminados para cada parámetro a tu app. Para ello, agrega un
defaultConfig
en tu función de plantillainitServerTemplate
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()
Después de que se cargue la plantilla, usa
template.evaluate()
para importar parámetros y valores de la plantilla:// Add template parameters to config const config = template.evaluate();
De manera opcional, si estableces condiciones en tu plantilla de Remote Config, define y proporciona los valores que desees:
- Si usas condiciones
de porcentaje,
agrega el
randomizationId
que quieres usar para evaluar las condiciones de la funcióntemplate.evaluate()
. - Si usas indicadores personalizados, define los atributos y sus valores. Los indicadores personalizados están disponibles con el SDK de Firebase Admin para Node.js 12.5.0 y versiones posteriores.
Por ejemplo, puedes configurar un ID de instalación de Firebase como
randomizationId
, o un ID de usuario, para garantizar que cada usuario que se comunique con tu servidor se agregue al grupo aleatorio apropiado,version
como un indicador personalizado para segmentar anuncios para versiones de cliente específicas yplatform
como un indicador personalizado para segmentar anuncios para la plataforma del cliente.Para obtener más información acerca de las condiciones, consulta Tipos de reglas de condiciones.
// 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" });
- Si usas condiciones
de porcentaje,
agrega el
A continuación, extrae los valores de parámetros que necesitas de la constante de configuración. Usa
getters
para transmitir los valores de Remote Config al formato esperado. Se admiten los siguientes tipos:- BOOLEAN
getBoolean
- Objeto:
getValue
- Número:
getNumber
- String:
getString
Por ejemplo, si estás implementando Vertex AI en tu servidor y quieres cambiar el modelo y los parámetros del modelo, podrías configurar los parámetros de
model_name
ygenerationConfig
. Este es un ejemplo de cómo puedes acceder a los valores de 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}`;
- BOOLEAN
Si tu servidor es de larga duración, que es el caso opuesto a un entorno sin servidores, usa
setInterval
para volver a cargar la plantilla de forma periódica y asegurarte de que obtienes periódicamente la plantilla más actualizada del servidor de Remote Config.
Paso 4: Configura valores de parámetros específicos del servidor en Remote Config
A continuación, crea una plantilla de Remote Config del servidor y configura los parámetros y valores para usar en tu app.
Para crear una plantilla de Remote Config específica del servidor, sigue estos pasos:
- Abre la página de parámetros de Remote Config de Firebase console y, en el selector de Cliente/Servidor, elige Servidor.
- Define los parámetros de Remote Config con los mismos nombres y tipos de datos que
los parámetros que definiste en la app y proporciona valores. Estos
valores anularán el valor de
defaultConfig
que estableciste en Configura tu aplicación de servidor cuando recuperas y evalúas la plantilla y asignas estos valores a tus variables. - De manera opcional, establece condiciones para aplicar valores de forma persistente a una muestra aleatoria de instancias o indicadores personalizados que definas. Para obtener más información acerca de las condiciones, consulta Tipos de reglas de condiciones.
- Cuando hayas terminado de agregar los parámetros, haz clic en Publicar cambios.
- Revisa los cambios y vuelve a hacer clic en Publicar cambios.
Paso 5: Implementa con Cloud Functions o Cloud Run
Si tu aplicación de servidor es ligera y está controlada por eventos, deberías considerar implementar el código con Cloud Functions. Por ejemplo, supongamos que tienes una app que incluye diálogos entre personajes potenciados por una API de IA generativa (por ejemplo, Google AI o Vertex AI). En este caso, puedes alojar tu lógica de entrega de LLM en una función que tu app llame según demanda.
Para trabajar en una solución que use Cloud Functions de 2ª gen. con Remote Config del servidor, consulta Usa Remote Config del servidor con Cloud Functions y Vertex AI.
Para obtener más información acerca de cómo implementar la app con Cloud Functions, consulta Primeros pasos: Escribe, prueba y, luego, implementa tus primeras funciones.
Prueba una función de muestra que admite llamadas con Remote Config y App Check del servidor en Llama a Vertex AI Gemini API con Remote Config y App Check.
Si tu aplicación está diseñada para ser de larga duración (por ejemplo, una app web con recursos) puedes usar Cloud Run. Para implementar tu app de servidor con Cloud Run, sigue la Guía de inicio rápido para implementar un servicio de Node.js en Cloud Run.
Para obtener más información acerca de los mejores casos de uso de Cloud Run y Cloud Functions, consulta Cloud Functions en comparación con Cloud Run: cuándo usar uno en lugar del otro.