Atualizar dinamicamente seu app Firebase AI Logic com a Configuração remota do Firebase

Ao chamar a Gemini API do seu app usando um SDK da Firebase AI Logic, a solicitação contém vários parâmetros que controlam as respostas da IA generativa. Geralmente, eles incluem o nome do modelo, a configuração de geração de modelo (tokens máximos, temperatura etc.), configurações de segurança, instruções do sistema e dados de comandos.

Na maioria dos casos, convém mudar esses valores conforme necessário em vários cenários:

  • Atualize seu modelo de IA generativa sem lançar um novo app. É possível fazer upgrade para versões de modelo mais recentes e estáveis antes que as versões anteriores sejam desativadas, mudar para modelos de menor custo ou de maior desempenho com base nas necessidades e nos atributos dos usuários ou implantar condicionalmente os modelos mais recentes e melhores em segmentos de usuários específicos (como testadores Beta).
  • Defina o local em que você acessa o modelo para que ele fique mais próximo dos usuários.
  • Faça testes A/B de diferentes instruções e comandos do sistema e depois lance aos poucos os valores do experimento vencedor para os usuários.
  • Use flags de recurso para expor ou ocultar rapidamente recursos de IA generativa no app.

A Firebase Remote Config faz tudo isso e mais ainda, permitindo que você atualize os valores dos parâmetros conforme necessário e condicionalmente para instâncias de apps que correspondem às características definidas no console do Firebase, sem lançar uma nova versão do app.

Este guia de soluções apresenta casos de uso recomendados específicos e descreve como adicionar a Remote Config ao seu app de IA generativa.

Ir para a implementação do código

Por que usar a Firebase Remote Config com seu app?

Com a Firebase Remote Config, você ajusta dinamicamente o comportamento do app sem precisar de atualizações. Isso é especialmente útil para apps que usam IA generativa, em que a iteração rápida e o ajuste fino são cruciais.

Casos de uso essenciais para a Remote Config com apps de IA generativa

Recomendamos o uso da Remote Config com a Firebase AI Logic para os seguintes casos de uso essenciais:

  • Upgrade para a versão mais recente do modelo sem uma atualização do app: use os parâmetros Remote Config para mudar o nome do modelo conforme necessário, para que você possa fazer upgrade para a versão mais recente do seu modelo preferido do Gemini assim que ela estiver disponível.

  • Atualizar as instruções do sistema e as configurações de segurança sem atualizar o app: armazene as instruções do sistema e as configurações de segurança nos parâmetros da Remote Config para que elas possam ser alteradas sob demanda se você descobrir problemas após a implantação.

  • Reduzir riscos e aplicar a segurança da IA: use os lançamentos da Remote Config para lançar mudanças de IA generativa de forma segura e gradual para seus usuários do iOS e do Android.

Casos de uso avançados e recomendados para a Remote Config com apps de IA generativa

Depois de instrumentar o app com a Remote Config e o Google Analytics, você pode explorar casos de uso avançados:

  • Defina a localização com base na localização do cliente: use condições de Remote Config para definir a localização em que você acessa o modelo com base na localização detectada do cliente.

  • Teste modelos diferentes: teste e alterne rapidamente entre vários modelos de IA generativa ou acesse modelos diferentes para diferentes segmentos de usuários para encontrar o melhor para seu caso de uso específico.

  • Otimize o desempenho do modelo: ajuste os parâmetros do modelo, como comando do sistema, máximo de tokens de saída, temperatura e outras configurações.

  • Use diferentes instruções, comandos e configurações de modelo do sistema com base nos atributos do cliente: ao usar a Remote Config com o Google Analytics, é possível criar condições com base nos atributos do cliente ou nos públicos-alvo personalizados e definir diferentes parâmetros com base nesses atributos.

    Por exemplo, se você estiver usando a IA generativa para oferecer suporte técnico no app, defina instruções específicas do sistema para a plataforma do app para garantir que instruções precisas sejam fornecidas aos usuários do Android, iOS e da plataforma da Web.

  • Personalize as experiências para cada usuário: use a personalização da Remote Config com seus apps e jogos para dispositivos móveis e determine automaticamente as configurações ideais de IA generativa para cada usuário.

  • Controle de custos: ajuste remotamente quais modelos de IA generativa são chamados, com que frequência eles são usados e configure dinamicamente os valores máximos de token de saída com base no público-alvo do usuário para reduzir custos desnecessários.

  • Otimize a experiência e os resultados do app: use A/B Testing com Remote Config com seus apps e jogos para dispositivos móveis para testar mudanças nos parâmetros de IA generativa em diferentes segmentos de usuários e conferir como elas afetam as principais métricas, como retenção e receita.

Ao instrumentar seu app de IA generativa com a Firebase Remote Config, você pode criar aplicativos com IA flexíveis, seguros e econômicos, além de criar experiências incríveis para seus usuários.

Adicionar o Firebase Remote Config ao app

Neste guia de solução, você vai usar a Firebase Remote Config para atualizar dinamicamente parâmetros no app Android que usam o SDK da Firebase AI Logic. Você aprenderá o seguinte:

  • Buscar e ativar parâmetros como nomes de modelos e instruções do sistema na Firebase Remote Config.
  • Atualizar suas chamadas da Gemini API para usar os parâmetros recuperados dinamicamente, permitindo alternar entre modelos diferentes ou modificar instruções do sistema sem uma atualização do app.
  • Controlar os parâmetros remotamente, ajustando o comportamento e os recursos do modelo conforme necessário.

Pré-requisitos

Neste guia, pressupomos que você já sabe desenvolver apps para sua plataforma.

Antes de começar, faça o seguinte:

  • Conclua o guia de início da Firebase AI Logic, que descreve como configurar seu projeto do Firebase, conectar seu app ao Firebase, adicionar o SDK, inicializar o serviço de back-end para o provedor "Gemini API" escolhido e criar uma instância de modelo.

  • Ative o Google Analytics no seu projeto do Firebase e adicione o SDK ao app (obrigatório para segmentação condicional, como definir a localização em que você acessa o modelo com base na localização do dispositivo do cliente).

Etapa 1: definir valores de parâmetro no console do Firebase

Crie um modelo de Remote Config do cliente e configure os parâmetros e valores para buscar e usar no app.

  1. Abra seu projeto do Firebase no console do Firebase. Em seguida, no menu de navegação, abra Run e selecione Remote Config.
  2. Verifique se Cliente está selecionado no seletor Cliente/Servidor na parte de cima da página.
  3. Para iniciar um modelo de cliente, clique em Criar configuração ou Adicionar parâmetro se você já usou modelos de cliente.
  4. Defina os parâmetros que você quer controlar com Remote Config. Exemplo:

    Nome do parâmetro Descrição Tipo Valor padrão
    model_name Nome do modelo. Consulte os nomes de modelos disponíveis. String gemini-2.0-flash
    system_instructions As instruções do sistema são como um "preâmbulo" que você adiciona antes que o modelo seja exposto a outras instruções do usuário final para influenciar o comportamento do modelo. String You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Comando padrão para usar com seu recurso de IA generativa. String I am a developer who wants to know more about Firebase!
    vertex_location Aplicável apenas se estiver usando Vertex AI Gemini API.
    Controle o local para acessar o modelo. É possível definir condições para configurar essa opção com base na localização do cliente detectada pelo Google Analytics.
    String us-central1
  5. Quando terminar de adicionar parâmetros, clique em Publicar alterações. Se esse não for um novo modelo de Remote Config, revise as mudanças e clique em Publicar alterações novamente.

Etapa 2: adicionar e inicializar a Remote Config no app

Adicione a biblioteca Remote Config e configure a Remote Config no app.

Swift

Como parte da configuração da Firebase AI Logic, você já adicionou o SDK do Firebase ao app, mas também precisa adicionar Remote Config.

  1. No Xcode, com o projeto aberto, navegue até Arquivo > Adicionar dependências do pacote.

  2. Selecione firebase-ios-sdk e clique em Adicionar pacote.

  3. No navegador do projeto, selecione seu app > Segmentos > seu app.

  4. Na guia Geral, role até Frameworks, bibliotecas e conteúdo incorporado.

  5. Clique em +, escolha FirebaseRemoteConfig e clique em Adicionar.

  6. Adicione a importação FirebaseRemoteConfig ao seu código:

    import FirebaseRemoteConfig
    
  7. Dentro da classe apropriada para seu app, inicialize o Firebase e adicione Remote Config à lógica principal do aplicativo.

    Aqui você vai incluir Remote Config e o listener de Remote Config em tempo real como importações para que o app possa buscar novos valores em tempo real e adicionar um intervalo mínimo de busca:

    let remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 3600
    remoteConfig.configSettings = settings
    

    No app de início rápido, ele estaria dentro de VertexAISampleApp, na classe AppDelegate.

Kotlin

  1. Adicione a dependência da Remote Config ao arquivo Gradle do seu módulo (nível do app) (geralmente app/build.gradle.kts ou app/build.gradle):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.13.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Adicione a Remote Config à lógica principal do aplicativo. Aqui você vai inicializar a Remote Config e adicionar um intervalo mínimo de busca:

    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    

Java

  1. Adicione a dependência da Remote Config ao arquivo Gradle do seu módulo (nível do app) (geralmente app/build.gradle.kts ou app/build.gradle):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.13.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Adicione a Remote Config à lógica principal do aplicativo. Aqui você vai inicializar a Remote Config e adicionar um intervalo mínimo de busca:

    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

Web

  1. Abra o código em um editor de texto e importe a Remote Config:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Na função principal e depois que o app do Firebase for inicializado para o SDK da Firebase AI Logic, inicialize a Remote Config:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. Defina um intervalo de busca mínimo:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. No diretório do projeto do Flutter, instale e adicione Remote Config usando o seguinte comando:

    flutter pub add firebase_remote_config
    
  2. Abra ./lib/main.dart e adicione a importação depois das outras importações que você adicionou para oferecer suporte à Firebase AI Logic:

    import 'package:firebase_vertexai/firebase_ai.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_remote_config/firebase_remote_config.dart';
    
  3. Adicione as variáveis _modelName, _systemInstructions e _prompt ao app para que possamos usá-las mais tarde:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. Receba a instância de objeto da Remote Config e defina o intervalo mínimo de busca para permitir atualizações frequentes: Adicione isso depois que o Firebase for inicializado.

      final remoteConfig = FirebaseRemoteConfig.instance;
      await remoteConfig.setConfigSettings(RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 3600),
        minimumFetchInterval: const Duration(seconds: 3600),
      ));
    

Unity

  1. Adicione Remote Config ao seu projeto do Unity seguindo estas instruções.

  2. Receba a instância de objeto da Remote Config e defina o intervalo mínimo de busca para permitir atualizações frequentes: Adicione isso depois que o Firebase for inicializado.

    var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
    const int MillisecondsPerSecond = 1000;
    await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() {
      FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond,
      MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond
    });
    

Etapa 3: definir os valores de parâmetros padrão no app

Defina valores de parâmetros padrão no app no objeto Remote Config. Isso garante que o app se comporte como esperado, mesmo que não consiga buscar valores do serviço Remote Config.

Swift

  1. No console do Firebase, abra Remote Config.

  2. Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.

  3. Quando solicitado, ative a opção .plist para iOS, e clique em Fazer o download do arquivo.

  4. Salve o arquivo no diretório do aplicativo.

    Se estiver usando o app de exemplo, salve-o em FirebaseVertexAI/Sample/VertexAISample.

  5. No Xcode, clique com o botão direito do mouse no app e selecione Add Files.

    Se estiver usando o exemplo, clique com o botão direito do mouse em VertexAISample e selecione Adicionar arquivos a "VertexAISample".

  6. Selecione remote_config_defaults.plist e clique em Adicionar.

  7. Atualize o código do app para fazer referência ao arquivo padrão:

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

  1. No console de Firebase, abra Remote Config.

  2. Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.

  3. Quando solicitado, ative a opção .xml para Android e clique em Fazer o download do arquivo.

  4. Salve o arquivo no diretório de recursos XML do app.

  5. Atualize o arquivo de atividade principal para adicionar os padrões depois do configSettings adicionado anteriormente:

    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    

Java

  1. No console do Firebase, abra Remote Config.

  2. Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.

  3. Quando solicitado, ative a opção .xml para Android e clique em Fazer o download do arquivo.

  4. Salve o arquivo no diretório de recursos XML do app.

  5. Atualize o arquivo de atividade principal para adicionar os padrões depois do configSettings adicionado anteriormente:

    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

Web

É possível definir os valores padrão diretamente no código:

// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
  model_name: 'gemini-2.0-flash',
  system_instructions:
    'You are a helpful assistant who knows everything there is to know about Firebase!',
  prompt: 'I am a developer who wants to know more about Firebase!',
  vertex_location: 'us-central1',
};

Dart

É possível definir os valores padrão diretamente no código:

remoteConfig.setDefaults(const {
  "model_name": "gemini-2.0-flash",
  "system_instructions": "You are a helpful assistant who knows everything there is to know about Firebase!",
  "prompt": "I am a developer who wants to know more about Firebase!",
  "vertex_location": "us-central1"
});

Unity

É possível definir os valores padrão diretamente no código:

await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.0-flash" },
    { "system_instructions", "You are a helpful assistant who knows everything there is to know about Firebase!" },
    { "prompt", "I am a developer who wants to know more about Firebase!" },
    { "vertex_location", "us-central1" }
  }
);

Etapa 4: buscar e ativar valores

Depois de definir padrões, adicione o seguinte para buscar e ativar valores.

Swift

// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
  if let error = error {
    print("Error fetching Remote Config: \(error.localizedDescription)")
  }
}

Isso vai atualizar o objeto Remote Config sempre que um novo modelo de Remote Config for publicado.

Kotlin

// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate()
      .addOnCompleteListener(this) { task ->
          if (task.isSuccessful) {
              val updated = task.result
              Log.d(TAG, "Remote Config values fetched and activated: $updated")
          } else {
              Log.e(TAG, "Error fetching Remote Config", task.exception)
          }
      }

Java

  // Fetch and activate Remote Config values
  mFirebaseRemoteConfig.fetchAndActivate()
    .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
        @Override
        public void onComplete(@NonNull Task<Boolean> task) {
            if (task.isSuccessful()) {
                boolean updated = task.getResult();
                Log.d(TAG, "Config params updated: " + updated);
            } else {
                Log.e(TAG, "Error fetching Remote Config", task.exception)
            }
          }
    });

Web

  1. Adicione getValue e fetchAndActivate às importações:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. Depois do código adicionado para configurar os valores padrão de Remote Config, busque e ative a configuração e atribua valores às constantes modelName, systemInstructions, prompt e vertexLocation.

    // Fetch and activate Remote Config.
    try {
      await fetchAndActivate(remoteConfig);
    } catch(err) {
      console.error('Remote Config fetch failed', err);
    }
    
    console.log('Remote Config fetched.');
    
    // Assign Remote Config values.
    const modelName = getValue(remoteConfig, 'model_name').asString();
    const systemInstructions = getValue(remoteConfig, 'system_instructions').asString();
    const prompt = getValue(remoteConfig, 'prompt').asString();
    const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
    

Dart

// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();

// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
String? _systemInstructions = remoteConfig.getString("system_instructions");
String? _prompt = remoteConfig.getString("prompt");
String? _vertexLocation = remoteConfig.getString("vertex_location");

Unity

// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();

Etapa 5: adicionar um listener de Remote Config em tempo real

Adicione um listener de Remote Config em tempo real ao app para garantir que as mudanças feitas no modelo de Remote Config sejam propagadas para o cliente assim que forem atualizadas.

O código a seguir atualiza o objeto Remote Config sempre que um valor de parâmetro muda.

Swift

// Add real-time Remote Config
remoteConfig.addOnConfigUpdateListener { configUpdate, error in
  guard let configUpdate = configUpdate, error == nil else {
    print("Error listening for config updates: \(error?.localizedDescription ?? "No error available")")
    return
  }

  print("Updated keys: \(configUpdate.updatedKeys)")
  remoteConfig.activate { changed, error in
    guard error == nil else {
      print("Error activating config: \(error?.localizedDescription ?? "No error available")")
      return
    }
    print("Activated config successfully")
  }
}

Kotlin

Também é possível configurar uma ação dentro da ativação addOnCompleteListener:

      // Add a real-time Remote Config listener
      remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
          override fun onUpdate(configUpdate : ConfigUpdate) {
              Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.updatedKeys);
              remoteConfig.activate().addOnCompleteListener {
                  // Optionally, add an action to perform on update here.
              }
          }

          override fun onError(error : FirebaseRemoteConfigException) {
              Log.w(ContentValues.TAG, "Config update error with code: " + error.code, error)
          }
      }

Java

Também é possível configurar uma ação dentro da ativação addOnCompleteListener:

  // Add a real-time Remote Config listener
  remoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
      @Override
      public void onUpdate(ConfigUpdate configUpdate) {
          Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
                remoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
                  @Override
                  public void onComplete(@NonNull Task<Boolean> task) {
                      // Optionally, add an action to perform on update here.
                  }
              });
          }

      @Override
      public void onError(FirebaseRemoteConfigException error) {
          Log.w(ContentValues.TAG, "Config update error with code: " + error.getCode(), error);
      }
  });

Web

Os listeners Remote Config em tempo real não têm suporte para apps da Web.

Dart

// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
  await remoteConfig.activate();
});

Unity

// Add a real-time Remote Config listener to automatically update whenever
// a new template is published.
// Note: the parameters can be anonymous as they are unused.

remoteConfig.OnConfigUpdateListener += (_, _) => {
  remoteConfig.ActivateAsync();
};

Etapa 6: atualizar as solicitações da Gemini API para usar valores da Remote Config

Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página.

Agora que a Remote Config está totalmente configurada, atualize o código para substituir valores codificados por valores provenientes da Remote Config.

Swift

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue

let model = ai.generativeModel(
  modelName: modelName,
  systemInstruction: ModelContent(role: "system", parts: systemInstructions)
)

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
let userPrompt = remoteConfig.configValue(forKey: "prompt").stringValue

// To generate text output, call `generateContent` with the text input
let response = try await model.generateContent(userPrompt)
if let text = response.text {
  print(text)
}

Kotlin

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
val model = ai.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call `generateContent` with the text input
// The text in the prompt will be sourced from Remote Config
val response = model.generateContent(remoteConfig.getString("prompt"))
print(response.text)

Java

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
FirebaseAI ai = FirebaseAI.getInstance(GenerativeBackend.googleAI());

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
GenerativeModel gm = ai.generativeModel(
        /* modelName */ remoteConfig.getString("model_name"),
        /* generationConfig (optional) */ null,
        /* safetySettings (optional) */ null,
        /* tools (optional) */ null,
        /* toolsConfig (optional) */ null,
        /* systemInstruction (optional) */ new Content.Builder().addText(
                remoteConfig.getString("system_instructions")).build(),
        /* requestOptions (optional) */ new RequestOptions()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
Content userPrompt = new Content.Builder()
        .addText(remoteConfig.getString("prompt"))
        .build();

// To generate text output, call `generateContent` with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
const model = getGenerativeModel(ai, {
  model: modelName,
  systemInstruction: systemInstruction
});

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  // The text in the prompt will be sourced from Remote Config
  const userPrompt = prompt;

  // To generate text output, call `generateContent` with the text input
  const result = await model.generateContent(userPrompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

Dart

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
final ai = await FirebaseAI.googleAI();

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
final model =
      ai.generativeModel(
        model: _modelName,
        systemInstruction: Content.system(_systemInstructions),
      );

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
final _userPrompt = [Content.text(_prompt)];

// To generate text output, call `generateContent` with the text input
final response = await model.generateContent(_userPrompt);
print(response.text);

Unity

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var systemInstructions = remoteConfig.GetValue("system_instructions").StringValue;

var model = ai.GetGenerativeModel(
  modelName: modelName,
  systemInstruction: ModelContent.Text(systemInstructions)
);

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
var userPrompt = remoteConfig.GetValue("prompt").StringValue;

// To generate text output, call `GenerateContentAsync` with the text input
var response = await model.GenerateContentAsync(userPrompt);
UnityEngine.Debug.Log(response.Text ?? "No text in response.");

Etapa 7: executar o app

Crie e execute o app e verifique se ele funciona. Faça mudanças na configuração na página de Remote Config no console do Firebase, publique as mudanças e verifique o resultado.

Próximas etapas