Динамически обновляйте приложение Firebase AI Logic с помощью Firebase Remote Config

При вызове 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 клиента и настройте параметры и значения для извлечения и использования в приложении.

  1. Откройте проект Firebase в консоли Firebase . Затем в меню навигации разверните пункт «Запуск» и выберите Remote Config .
  2. Убедитесь, что в селекторе Клиент/Сервер в верхней части страницы выбрано значение Клиент .
  3. Запустите клиентский шаблон, нажав «Создать конфигурацию» (или «Добавить параметр», если вы ранее использовали клиентские шаблоны).
  4. Определите параметры, которыми вы хотите управлять с помощью 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
  5. После завершения добавления параметров нажмите «Опубликовать изменения» . Если это не новый шаблон Remote Config , проверьте изменения и снова нажмите «Опубликовать изменения» .

Шаг 2 : Добавьте и инициализируйте Remote Config в своем приложении.

Добавьте библиотеку Remote Config и настройте Remote Config в своем приложении.

Быстрый

В рамках настройки Firebase AI Logic вы уже добавили Firebase SDK в свое приложение, но вам также потребуется добавить Remote Config .

  1. В Xcode откройте проект, перейдите в Файл > Добавить зависимости пакета .

  2. Выберите firebase-ios-sdk и нажмите Добавить пакет .

  3. В навигаторе проектов выберите свое приложение > Цели > ваше приложение.

  4. На вкладке Общие прокрутите до раздела Фреймворки, Библиотеки и Встроенное содержимое .

  5. Нажмите + и выберите FirebaseRemoteConfig , затем нажмите Добавить .

  6. Добавьте импорт FirebaseRemoteConfig в свой код:

    import FirebaseRemoteConfig
    
  7. Внутри соответствующего класса вашего приложения инициализируйте Firebase и добавьте Remote Config в основную логику приложения.

    Здесь вы включите Remote Config и прослушиватель Remote Config в реальном времени в качестве импортов, чтобы приложение могло извлекать новые значения в реальном времени, а также добавите минимальный интервал выборки:

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

    В приложении быстрого старта это будет внутри VertexAISampleApp , в классе AppDelegate .

Kotlin

  1. Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно app/build.gradle.kts или app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.0.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки:

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

Java

  1. Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно app/build.gradle.kts или app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.0.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки:

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

Web

  1. Откройте свой код в текстовом редакторе и импортируйте Remote Config :

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Внутри вашей основной функции и после инициализации приложения Firebase для Firebase AI Logic SDK инициализируйте Remote Config :

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. Установите минимальный интервал выборки:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. Из каталога проекта Flutter установите и добавьте Remote Config с помощью следующей команды:

    flutter pub add firebase_remote_config
    
  2. Откройте ./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';
    
  3. Добавьте переменные _modelName , _systemInstructions и _prompt в ваше приложение, чтобы мы могли использовать их позже:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление. Добавьте это после инициализации Firebase.

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

Единство

  1. Добавьте Remote Config в свой проект Unity, следуя этим инструкциям .

  2. Получите экземпляр объекта 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 .

Быстрый

  1. В консоли Firebase откройте Remote Config .

  2. На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .

  3. При появлении запроса включите .plist для iOS , затем нажмите Загрузить файл .

  4. Сохраните файл в каталоге вашего приложения.

    Если вы используете пример приложения, сохраните его в FirebaseVertexAI/Sample/VertexAISample .

  5. В Xcode щелкните правой кнопкой мыши по приложению и выберите «Добавить файлы».

    Если вы используете образец, щелкните правой кнопкой мыши по VertexAISample и выберите Добавить файлы в «VertexAISample» .

  6. Выберите remote_config_defaults.plist , затем нажмите Добавить .

  7. Обновите код приложения, указав ссылку на файл по умолчанию:

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

Kotlin

  1. В консоли Firebase откройте Remote Config .

  2. На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .

  3. При появлении запроса включите .xml для Android , затем нажмите Загрузить файл .

  4. Сохраните файл в каталоге XML-ресурсов вашего приложения.

  5. Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после configSettings , который вы добавили ранее:

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

Java

  1. В консоли Firebase откройте Remote Config .

  2. На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .

  3. При появлении запроса включите .xml для Android , затем нажмите Загрузить файл .

  4. Сохраните файл в каталоге XML-ресурсов вашего приложения.

  5. Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после 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

  1. Добавьте getValue и fetchAndActivate к вашим импортам:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. После добавления кода для настройки значений 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).