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

При вызове API Gemini из вашего приложения с использованием SDK Firebase AI Logic ваш запрос содержит ряд параметров, которые управляют ответами генеративного ИИ. Обычно это имя модели, конфигурация генерации модели (максимальное количество токенов, температура и т. д.), параметры безопасности, системные инструкции и данные подсказки.

В большинстве случаев вам потребуется изменять эти параметры по мере необходимости или в зависимости от ряда сценариев:

  • Обновите свою модель генеративного ИИ без выпуска нового приложения. Вы можете перейти на более новые, стабильные версии модели до того, как предыдущие версии будут сняты с поддержки, перейти на более дешевые или более производительные модели в зависимости от потребностей и характеристик ваших пользователей, или же развертывать новейшие и лучшие модели для определенных сегментов пользователей (например, для бета-тестеров).
  • Укажите место, откуда вы получаете доступ к модели, так, чтобы оно было ближе к вашим пользователям.
  • Проведите 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 для динамического обновления параметров в вашем приложении, использующем 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, открыв проект, перейдите в меню File > Add Package Dependencies .

  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
    

    В быстром стартовом приложении это будет находиться внутри класса AppDelegate в классе VertexAISampleApp .

Kotlin

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.7.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.7.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 for Remote Config parameters.
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

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

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

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

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

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

    // Set default values for Remote Config parameters.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    

Java

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

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

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

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

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

    // Set default values for Remote Config parameters.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

Web

Вы можете задать значения по умолчанию непосредственно в своем коде:

// Set default values for Remote Config parameters.
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

Вы можете задать значения по умолчанию непосредственно в своем коде:

// Set default values for Remote Config parameters.
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"
});

Единство

Вы можете задать значения по умолчанию непосредственно в своем коде:

// Set default values for Remote Config parameters.
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).