Firebase Remote Config ahora admite la configuración del servidor mediante la La versión 12.1.0 o una posterior del SDK de Firebase Admin Node.js. Esta nueva capacidad permite que administres de forma dinámica el comportamiento y la configuración de aplicaciones de los recursos del servidor con Remote Config. Esto incluye implementaciones sin servidores como Cloud Functions.
A diferencia de los SDK de 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 completa de Remote Config. 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.
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 con éxito 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 una Cloud Function, 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 a el 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 de porcentaje en tu plantilla de Remote Config, define y proporciona el
randomizationId
que quieres usar para evaluar las condiciones de la funcióntemplate.evaluate()
.Por ejemplo, puedes configurar un ID de instalación como
randomizationId
, o un ID de usuario, para garantizar que cada usuario que se comunique con tu servidor se agregue al grupo aleatorio apropiado. El el siguiente es un ejemplo básico, pero puedes configurar tu servidor a fin de generarrandomizationIds
diferentes para distintas solicitudes de clientes, para garantizar que los usuarios reciban valores coherentes de Remote Config según su membresía en grupos de condiciones de porcentaje.Para obtener más información sobre las condiciones de porcentaje, consulta Usuario en porcentaje aleatorio.
// 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 });
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 para el servidor, configura los parámetros y valores para usar en tu app.
Para crear una plantilla Remote Config específica del servidor:
- 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 de porcentaje para aplicar un valor de forma persistente a una muestra aleatoria de instancias. Para obtener más información sobre las condiciones de porcentaje, consulta Usuario en porcentaje aleatorio.
- 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 Usar Remote Config del servidor con Cloud Functions y Vertex AI
Para obtener más información sobre cómo implementar la app con Cloud Functions, consulta Cómo comenzar: escribe, prueba e implementa tus primeras funciones.
Prueba una función de muestra que admite llamadas con Remote Config y Verificación de aplicaciones del servidor en Llama a la API de Vertex AI Gemini con Remote Config y Verificación de aplicaciones.
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 sobre los mejores casos de uso de Cloud Run y Cloud Functions, consulta Diferencias entre Cloud Functions y Cloud Run: cuándo usar uno en lugar del otro.