A Configuração remota do Firebase agora oferece suporte à configuração do lado do servidor usando o SDK Admin para Node.js do Firebase v12.1.0 ou mais recente. Com esse novo recurso, você pode gerenciar de forma dinâmica o comportamento e a configuração de aplicativos do lado do servidor usando a Configuração remota. Isso inclui implementações sem servidor como o Cloud Functions.
Ao contrário dos SDKs do cliente do Firebase, que buscam uma configuração específica do cliente derivada do modelo da Configuração remota, o SDK da Configuração remota do lado do servidor faz o download de um modelo completo do modelo pelo Firebase. Seu servidor pode avaliar o modelo com cada solicitação recebida e usar sua própria lógica para fornecer uma resposta personalizada com latência muito baixa.
Com a Configuração remota do lado do servidor, você pode:
- Definir parâmetros de configuração para aplicativos executados ou acessados pelo seu servidor, o que permite casos de uso como parâmetros e comandos do modelo de IA de configuração remota, além de outras integrações, para garantir que as chaves de API permanecem seguras.
- Ajustar dinamicamente os parâmetros em resposta a mudanças no ambiente ou outras mudanças no aplicativo, como atualização de parâmetros LLM e endpoints de modelo.
- Controlar os custos atualizando remotamente as APIs chamadas pelo servidor.
- Gerar configurações personalizadas imediatamente para clientes que acessam seus servidor.
- Registrar quais clientes receberam um valor de parâmetro e usar essa informação no Cloud Functions como parte de um sistema de verificação de direitos.
É possível implantar a Configuração remota do lado do servidor no Cloud Run, Cloud Functions ou ambientes de servidor auto-hospedados.
Antes de começar
Siga as instruções em Adicionar o SDK Admin do Firebase ao seu servidor para criar um projeto, configure uma conta de serviço e adicione o SDK Admin para Node.js do Firebase ao seu servidor.
Etapa 1: inicializar o SDK Admin para Node.js do Firebase e autorizar solicitações de API
Quando você inicializa o SDK Admin sem parâmetros, o SDK usa o Google Application Default Credentials e lê as opções da variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
. Por exemplo, para inicializar o SDK e adicionar a Configuração remota:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Etapa 2: identificar os valores de parâmetros padrão do aplicativo do servidor
Identifique as variáveis do app que você quer usar para atualizar dinamicamente com a Configuração remota. Depois, considere quais variáveis precisam ser definidas por padrão no seu aplicativo e quais devem ser os valores padrão deles. Isso garante que o aplicativo seja executado com êxito, mesmo que a conexão com o servidor de back-end da Configuração remota tenha sido interrompido.
Por exemplo, se você estiver gravando um aplicativo de servidor que gerencia uma função de IA generativa, é possível definir um nome de modelo padrão, preâmbulo do comando e uma configuração de IA generativa, como esta:
Nome do parâmetro | Descrição | Tipo | Valor padrão |
---|---|---|---|
model_name |
Nome da API do modelo | String | gemini-1.5-pro |
preamble_prompt
|
Comando para prefixar à consulta do usuário | 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 a serem enviados ao modelo | JSON | {"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Etapa 3: configurar o aplicativo de servidor
Depois de determinar os parâmetros que cê quer usar com a Configuração remota, configure seu aplicativo para definir valores padrão, busque o modelo da Configuração remota específico do servidor e use os valores dele. As etapas a seguir descrevem como configurar seu aplicativo Node.js.
Acesse e carregue o modelo.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Se você estiver usando o Node.js no Cloud Functions, poderá usar o
getServerTemplate
assíncrono para buscar e carregar o modelo em uma única etapa:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Para garantir que seu aplicativo seja executado com êxito, mesmo que sua conexão com o servidor de back-end da Configuração remota seja interrompido, adicione valores padrão para cada parâmetro ao seu app. Para isso, adicione um
defaultConfig
dentro da sua função de modeloinitServerTemplate
ougetServerTemplate
: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();
Depois que o modelo for carregado, use
template.evaluate()
para importar parâmetros e valores do modelo:// Add template parameters to config const config = template.evaluate();
Opcionalmente, se você definir condições percentuais no modelo da Configuração remota, defina e especifique o
randomizationId
que você quer usar para avaliar as condições da funçãotemplate.evaluate()
.Por exemplo, você pode definir um ID de instalação do Firebase como
randomizationId
ou um ID do usuário para garantir que cada usuário que entre em contato com seu servidor seja adicionado ao grupo aleatório adequado. O exemplo a seguir é básico, mas é possível configurar seu servidor para gerar umrandomizationIds
diferente para cada solicitação de cliente, para garantir que os usuários recebam valores consistentes da Configuração remota com base na assinatura deles em grupos de condições percentuais.Para mais informações sobre condições de porcentagem, consulte Usuário em porcentagem aleatória.
// 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 });
Em seguida, extraia os valores de parâmetro necessários da constante de configuração. Use
getters
para transmitir os valores da Configuração remota para o formato esperado. Veja a seguir os tipos compatíveis:- Booleano:
getBoolean
- Objeto:
getValue
- Número:
getNumber
- String:
getString
Por exemplo, se você estiver implementando a Vertex AI no seu servidor e quiser alterar o modelo e os parâmetros dele, talvez seja melhor configurar os parâmetros para
model_name
egenerationConfig
. Confira um exemplo de como acessar os valores da Configuração remota:// 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 o servidor for de longa duração, ao contrário de um ambiente sem servidor, use
setInterval
para atualizar periodicamente o modelo e garantir que você esteja buscando periodicamente o modelo mais atualizado do servidor da Configuração remota.
Etapa 4: definir valores de parâmetros específicos do servidor na Configuração remota
Em seguida, crie um modelo de servidor da Configuração remota e defina os parâmetros e valores para usar no seu app.
Para criar um modelo da Configuração remota específico do servidor:
- Abra a a página de parâmetros da Configuração remota do console do Firebase e, no seletor Cliente/servidor, selecione Servidor.
- Defina os parâmetros da Configuração remota com os mesmos nomes e tipos de dados que
os parâmetros definidos no app e envie valores. Esses
valores substituirão o
defaultConfig
definido em Configurar seu servidor da Web quando você buscar e avaliar o modelo e atribuir esses valores às variáveis. - Opcionalmente, defina condições de porcentagem para aplicar persistentemente um valor a uma amostra aleatória de instâncias. Para mais informações sobre condições de porcentagem, consulte Usuário em porcentagem aleatória.
- Quando terminar de adicionar parâmetros, clique em Publicar alterações.
- Revise as alterações e clique em Publicar alterações novamente.
Etapa 5: implantar com o Cloud Functions ou o Cloud Run
Se o aplicativo do servidor for leve e orientado por eventos, você deve considerar implantar o código usando o Cloud Functions. Por exemplo, imagine que você tem um app que inclui o diálogo entre os personagens com uma API de IA generativa (por exemplo, Google AI ou Vertex AI). Nesse caso, é possível hospedar sua lógica de veiculação de LLMs em uma função que seu app chama sob demanda.
Para trabalhar em uma solução que usa a 2ª geração do Cloud Functions com a Configuração remota do lado do servidor, consulte Usar a Configuração remota do lado do servidor com o Cloud Functions e a Vertex AI.
Para saber como implantar seu app com o Cloud Functions, consulte Comece agora: escrever, testar e implantar as primeiras funções.
Teste uma função chamável de exemplo com a Configuração remota do lado do servidor e o App Check em Chamar a API Gemini da Vertex AI com a Configuração remota e o App Check.
Se seu aplicativo for projetado para ser de longa duração (por exemplo, um aplicativo da Web com recursos), considere o Cloud Run. Para implantar seu app de servidor com o Cloud Run, siga o guia em Guia de início rápido: implantar um serviço Node.js para o Cloud Run.
Para mais informações sobre os melhores casos de uso para o Cloud Run e Cloud Functions, consulte Cloud Functions x Cloud Run: quando usar cada um.