При вызове API Gemini из вашего приложения с использованием Firebase AI Logic SDK ваш запрос содержит ряд параметров, управляющих ответами генеративного ИИ. Обычно они включают название модели, конфигурацию генерации модели (максимальное количество токенов, температуру и т. д.), настройки безопасности, системные инструкции и данные подсказок.
В большинстве случаев вам придется изменять эти параметры по требованию или по мере необходимости в ряде сценариев:
- Обновите свою генеративную модель ИИ, не выпуская новое приложение. Вы можете перейти на более новые, стабильные версии модели до того, как предыдущие версии будут сняты с эксплуатации, перейти на более дешёвые или более производительные модели в зависимости от потребностей и характеристик ваших пользователей или при необходимости развернуть новейшие и лучшие модели для определённых сегментов пользователей (например, бета-тестеров).
- Укажите место доступа к модели, чтобы оно было ближе к вашим пользователям.
- Проводите A/B-тестирование различных системных инструкций и подсказок, а затем постепенно внедряйте победные экспериментальные значения среди своих пользователей.
- Используйте флаги функций, чтобы быстро отображать или скрывать функции генеративного ИИ в вашем приложении.
Firebase Remote Config делает все это и даже больше, позволяя вам обновлять значения параметров по мере необходимости и в зависимости от условий для экземпляров приложения, которые соответствуют характеристикам, заданным вами в консоли Firebase , без выпуска новой версии вашего приложения.
В этом руководстве по решению приведены конкретные рекомендуемые варианты использования и описано, как добавить Remote Config в ваше приложение генеративного ИИ.
Зачем использовать Firebase Remote Config в вашем приложении?
Firebase Remote Config позволяет динамически корректировать поведение приложения без необходимости его обновления. Это особенно полезно для приложений, использующих генеративный ИИ, где быстрое обновление и тонкая настройка имеют решающее значение.
Основные варианты использования Remote Config с приложениями генеративного ИИ
Мы рекомендуем использовать Remote Config с Firebase AI Logic в следующих основных случаях использования:
- Обновление до последней версии модели без обновления приложения : используйте параметры Remote Config , чтобы при необходимости изменить название модели, чтобы вы могли обновить предпочтительную модель Gemini до последней версии, как только она станет доступна. 
- Обновление системных инструкций и параметров безопасности без обновления приложения : сохранение системных инструкций и параметров безопасности в параметрах Remote Config чтобы обеспечить возможность их изменения по требованию в случае обнаружения проблем после развертывания. 
- Снижение рисков и обеспечение безопасности ИИ : используйте развертывание Remote Config для безопасного и постепенного выпуска генеративных изменений ИИ для пользователей iOS и Android. 
Расширенные и рекомендуемые варианты использования Remote Config с приложениями генеративного ИИ
После оснащения вашего приложения Remote Config и Google Analytics вы можете изучить расширенные варианты его использования:
- Установите местоположение на основе местоположения клиента : используйте условия Remote Config чтобы задать местоположение, в котором вы получаете доступ к модели, на основе обнаруженного местоположения клиента. 
- Экспериментируйте с различными моделями : быстро тестируйте и переключайтесь между различными моделями генеративного ИИ или даже получайте доступ к разным моделям для разных сегментов пользователей, чтобы найти наиболее подходящую для вашего конкретного варианта использования. 
- Оптимизируйте производительность модели : настройте параметры модели, такие как системные подсказки, максимальное количество выходных токенов, температуру и другие параметры. 
- Используйте различные системные инструкции, подсказки и конфигурацию модели на основе атрибутов клиента . При использовании Remote Config с Google Analytics вы можете создавать условия на основе атрибутов клиента или пользовательских аудиторий и задавать различные параметры на основе этих атрибутов. - Например, если вы используете генеративный ИИ для предоставления технической поддержки в своем приложении, вам может потребоваться установить системные инструкции, специфичные для платформы приложения, чтобы гарантировать предоставление точных инструкций пользователям Android, iOS и веб-платформ. 
- Персонализируйте опыт для каждого пользователя : используйте персонализацию Remote Config с мобильными приложениями и играми, чтобы автоматически определять оптимальные настройки генеративного ИИ для каждого пользователя. 
- Контролируйте расходы : удаленно регулируйте, какие модели генеративного ИИ вызываются, как часто они используются, а также динамически настраивайте максимальные выходные значения токенов на основе аудитории пользователей, чтобы сократить ненужные расходы. 
- Оптимизируйте работу приложения и результаты : используйте A/B Testing с Remote Config в своих мобильных приложениях и играх, чтобы протестировать изменения в параметрах генеративного ИИ в разных сегментах пользователей и увидеть, как они влияют на ключевые показатели, такие как удержание и доход. 
Оснастив свое приложение генеративного ИИ с помощью Firebase Remote Config , вы сможете создавать гибкие, безопасные и экономичные приложения на базе ИИ, одновременно создавая прекрасные возможности для своих пользователей.
Добавьте Firebase Remote Config в свое приложение
В этом руководстве по решению вы научитесь использовать Firebase Remote Config для динамического обновления параметров в вашем Android-приложении, использующем Firebase AI Logic SDK. Вы узнаете, как:
- Извлекайте и активируйте параметры, такие как названия моделей и системные инструкции, из Firebase Remote Config .
- Обновите вызовы API Gemini, чтобы использовать динамически извлекаемые параметры, что позволит вам переключаться между различными моделями или изменять системные инструкции без обновления приложения.
- Управляйте параметрами удаленно, корректируя поведение и возможности модели по мере необходимости.
Предпосылки
В этом руководстве предполагается, что вы знакомы с разработкой приложений для вашей платформы.
Прежде чем начать, убедитесь, что вы сделали следующее:
- Ознакомьтесь с руководством по началу работы с Firebase AI Logic , в котором описывается, как настроить проект Firebase, подключить приложение к Firebase, добавить SDK, инициализировать внутреннюю службу для выбранного поставщика « Gemini API » и создать экземпляр модели. 
- Включите Google Analytics в своем проекте Firebase и добавьте его SDK в свое приложение (требуется для условного таргетинга, например, для указания местоположения доступа к модели на основе местоположения клиентского устройства). 
Шаг 1 : Задайте значения параметров в консоли Firebase
Создайте шаблон Remote Config клиента и настройте параметры и значения для извлечения и использования в приложении.
- Откройте проект Firebase в консоли Firebase . Затем в меню навигации разверните пункт «Запуск» и выберите Remote Config .
- Убедитесь, что в селекторе Клиент/Сервер в верхней части страницы выбрано значение Клиент .
- Запустите клиентский шаблон, нажав «Создать конфигурацию» (или «Добавить параметр», если вы ранее использовали клиентские шаблоны).
- Определите параметры, которыми вы хотите управлять с помощью Remote Config . Например: - Имя параметра - Описание - Тип - Значение по умолчанию - model_name- Название модели. См. доступные названия моделей . - Нить - gemini-2.5-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- Применимо только при использовании API Vertex AI Gemini . 
 Управляйте местоположением для доступа к модели. Вы можете задать условия для настройки этой опции на основе местоположения клиента, определенного Google Analytics .- Нить - global
- После завершения добавления параметров нажмите «Опубликовать изменения» . Если это не новый шаблон Remote Config , проверьте изменения и снова нажмите «Опубликовать изменения» . 
Шаг 2 : Добавьте и инициализируйте Remote Config в своем приложении.
Добавьте библиотеку Remote Config и настройте Remote Config в своем приложении.
Быстрый
В рамках настройки Firebase AI Logic вы уже добавили Firebase SDK в свое приложение, но вам также потребуется добавить Remote Config .
- В Xcode откройте проект, перейдите в Файл > Добавить зависимости пакета . 
- Выберите firebase-ios-sdk и нажмите Добавить пакет . 
- В навигаторе проектов выберите свое приложение > Цели > ваше приложение. 
- На вкладке Общие прокрутите до раздела Фреймворки, Библиотеки и Встроенное содержимое . 
- Нажмите + и выберите FirebaseRemoteConfig , затем нажмите Добавить . 
- Добавьте импорт - FirebaseRemoteConfigв свой код:- import FirebaseRemoteConfig
- Внутри соответствующего класса вашего приложения инициализируйте Firebase и добавьте Remote Config в основную логику приложения. - Здесь вы включите Remote Config и прослушиватель Remote Config в реальном времени в качестве импортов, чтобы приложение могло извлекать новые значения в реальном времени, а также добавите минимальный интервал выборки: - let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings- В приложении быстрого старта это будет внутри - VertexAISampleApp, в классе- AppDelegate.
Kotlin
- Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно - app/build.gradle.ktsили- app/build.gradle):- dependencies { implementation(platform("com.google.firebase:firebase-bom:34.3.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
- Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки: - val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
- Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно - app/build.gradle.ktsили- app/build.gradle):- dependencies { implementation(platform("com.google.firebase:firebase-bom:34.3.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
- Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки: - FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
- Откройте свой код в текстовом редакторе и импортируйте Remote Config : - import { getRemoteConfig } from 'firebase/remote-config';
- Внутри вашей основной функции и после инициализации приложения Firebase для Firebase AI Logic SDK инициализируйте Remote Config : - // Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
- Установите минимальный интервал выборки: - remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
- Из каталога проекта Flutter установите и добавьте Remote Config с помощью следующей команды: - flutter pub add firebase_remote_config
- Откройте - ./lib/main.dartи добавьте импорт после других импортов, которые вы добавили для поддержки 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';
- Добавьте переменные - _modelName,- _systemInstructionsи- _promptв ваше приложение, чтобы мы могли использовать их позже:- late final String _modelName; late final String _systemInstructions; late final String _prompt;
- Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление. Добавьте это после инициализации Firebase. - final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Единство
- Добавьте Remote Config в свой проект Unity, следуя этим инструкциям . 
- Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление. Добавьте это после инициализации Firebase. - var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Шаг 3 : Задайте значения параметров в приложении
Вам следует задать значения параметров приложения по умолчанию в объекте Remote Config . Это гарантирует, что ваше приложение будет вести себя ожидаемым образом, даже если оно не сможет получить значения из службы Remote Config .
Быстрый
- В консоли Firebase откройте Remote Config . 
- На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» . 
- При появлении запроса включите .plist для iOS , затем нажмите Загрузить файл . 
- Сохраните файл в каталоге вашего приложения. - Если вы используете пример приложения, сохраните его в - FirebaseVertexAI/Sample/VertexAISample.
- В Xcode щелкните правой кнопкой мыши по приложению и выберите «Добавить файлы». - Если вы используете образец, щелкните правой кнопкой мыши по VertexAISample и выберите Добавить файлы в «VertexAISample» . 
- Выберите remote_config_defaults.plist , затем нажмите Добавить . 
- Обновите код приложения, указав ссылку на файл по умолчанию: - // Set default values remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
- В консоли Firebase откройте Remote Config . 
- На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» . 
- При появлении запроса включите .xml для Android , затем нажмите Загрузить файл . 
- Сохраните файл в каталоге XML-ресурсов вашего приложения. 
- Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после - configSettings, который вы добавили ранее:- // Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
- В консоли Firebase откройте Remote Config . 
- На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» . 
- При появлении запроса включите .xml для Android , затем нажмите Загрузить файл . 
- Сохраните файл в каталоге XML-ресурсов вашего приложения. 
- Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после - configSettings, который вы добавили ранее:- // Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Вы можете установить значения по умолчанию непосредственно в своем коде:
// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
  model_name: 'gemini-2.5-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: 'global',
};
Dart
Вы можете установить значения по умолчанию непосредственно в своем коде:
remoteConfig.setDefaults(const {
  "model_name": "gemini-2.5-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": "global"
});
Единство
Вы можете установить значения по умолчанию непосредственно в своем коде:
await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.5-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", "global" }
  }
);
Шаг 4 : Извлечение и активация значений
После установки значений по умолчанию добавьте следующее для извлечения и активации значений.
Быстрый
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
  if let error = error {
    print("Error fetching Remote Config: \(error.localizedDescription)")
  }
}
Это должно обновлять объект Remote Config каждый раз при публикации нового шаблона Remote Config .
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
- Добавьте - getValueи- fetchAndActivateк вашим импортам:- import { getValue, fetchAndActivate } from 'firebase/remote-config';
- После добавления кода для настройки значений Remote Config по умолчанию извлеките и активируйте конфигурацию, затем присвойте значения константам - modelName,- systemInstructions,- promptи- 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");
Единство
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Шаг 5 : Добавьте прослушиватель Remote Config в реальном времени
Добавьте в свое приложение прослушиватель Remote Config в режиме реального времени, чтобы гарантировать, что изменения, вносимые в шаблон Remote Config будут переданы клиенту сразу после их обновления.
Следующий код обновляет объект Remote Config при каждом изменении значения параметра.
Быстрый
// 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
 При желании вы также можете настроить действие внутри активации 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
 При желании вы также можете настроить действие внутри активации 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
Прослушиватели Remote Config в реальном времени не поддерживаются для веб-приложений.
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
  await remoteConfig.activate();
});
Единство
// 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();
};
Шаг 6 : Обновите запросы API Gemini для использования значений Remote Config
| Щелкните своего поставщика API Gemini , чтобы просмотреть специфичный для этого поставщика контент и код на этой странице. | 
Теперь, когда Remote Config полностью настроен, обновите свой код, заменив жестко заданные значения значениями, полученными из Remote Config .
Быстрый
// 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);
Единство
// 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.");
Шаг 7 : Запустите приложение.
Соберите и запустите приложение, чтобы убедиться в его работоспособности. Внесите изменения в конфигурацию на странице Remote Config в консоли Firebase , опубликуйте изменения и проверьте результат.
Следующие шаги
- Узнайте больше об Remote Config . 
- Добавьте Google Analytics в клиентский код, чтобы включить таргетинг. 
- Для мобильных приложений и игр: - Протестируйте различные настройки модели с помощью Remote Config и A/B Testing . 
- Постепенно выпускайте изменения параметров модели с помощью развертываний Remote Config (только для iOS+ и Android). 
- Используйте персонализацию Remote Config , чтобы использовать машинное обучение для определения оптимальных настроек для отдельных пользователей (только iOS+, Android и Unity).