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

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

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

  • Обновите свою генеративную модель искусственного интеллекта, не выпуская новое приложение. Вы можете перейти на более новые стабильные версии моделей до того, как более ранние версии будут выведены из эксплуатации, перейти на модели с более низкой стоимостью или более высокой производительностью в зависимости от потребностей и характеристик ваших пользователей или условно развернуть новейшие и лучшие модели для определенных сегментов пользователей (например, бета-тестеров).
  • Укажите местоположение доступа к модели, чтобы она была ближе к вашим пользователям.
  • A/B-тестирование различных системных инструкций и подсказок, а затем постепенно доводите до пользователей выигрышные результаты эксперимента.
  • Используйте флаги функций, чтобы быстро раскрыть или скрыть генеративные функции ИИ в вашем приложении.

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

В этом руководстве по решению представлены конкретные рекомендуемые варианты использования и описано, как добавить Remote Config в ваше генеративное приложение ИИ.

Перейти к реализации кода

Зачем использовать Firebase Remote Config со своим приложением?

Firebase Remote Config позволяет вам динамически настраивать поведение вашего приложения, не требуя его обновлений. Это особенно полезно для приложений, использующих генеративный искусственный интеллект, где решающее значение имеют быстрая итерация и точная настройка.

Основные варианты использования Remote Config с генеративными приложениями искусственного интеллекта

Мы рекомендуем использовать Remote Config с Vertex AI в Firebase для следующих важных случаев:

  • Обновите модель до последней версии без обновления приложения. Используйте параметры 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 с вашими приложениями iOS, Android и Flutter, чтобы протестировать изменения параметров генеративного ИИ в различных сегментах пользователей и увидеть, как они влияют на ключевые показатели, такие как удержание и доход.

Оснастив свое генеративное приложение ИИ с помощью Firebase Remote Config , вы сможете создавать гибкие, безопасные и экономичные приложения на базе ИИ, одновременно создавая восхитительные впечатления для своих пользователей.

Добавьте Firebase Remote Config в свое приложение.

В этом руководстве по решению вы будете использовать Firebase Remote Config для динамического обновления параметров в вашем приложении Android, которое использует Vertex AI в Firebase SDK. Вы узнаете, как:

  • Получите и активируйте такие параметры, как названия моделей и системные инструкции, из Firebase Remote Config .
  • Обновите вызовы API Gemini, чтобы использовать динамически извлекаемые параметры, что позволит вам переключаться между различными моделями или изменять системные инструкции без обновления приложения.
  • Управляйте параметрами удаленно, корректируя поведение и возможности модели по мере необходимости.

Предварительные условия

В этом руководстве предполагается, что вы знакомы с использованием Xcode для разработки приложений для платформ Apple (например, iOS). Прежде чем начать, убедитесь, что вы выполнили следующее:

  • Завершите руководство по началу работы с Vertex AI в Firebase SDK . Убедитесь, что вы выполнили все следующее:

    1. Настройте новый или существующий проект Firebase, включая использование тарифного плана Blaze и включение необходимых API.
    2. Подключите свое приложение к Firebase, включая регистрацию вашего приложения и добавление конфигурации Firebase в ваше приложение.
    3. Добавьте SDK и инициализируйте службу Vertex AI и генеративную модель в своем приложении.
  • Включите Google Analytics в своем проекте и добавьте его SDK в свое приложение (необходимо для условного таргетинга, например для настройки местоположения службы и модели на основе местоположения клиентского устройства).

Шаг 1. Установите значения параметров в консоли Firebase

Создайте клиентский шаблон Remote Config и настройте параметры и значения для извлечения и использования в приложении.

  1. Откройте проект Firebase в консоли Firebase , в меню навигации разверните « Выполнить» и выберите Remote Config .
  2. Убедитесь, что в списке «Клиент/сервер» в верхней части страницы Remote Config выбран «Клиент» .
    • Если вы впервые используете шаблоны клиентов Remote Config , нажмите «Создать конфигурацию» . Появится панель « Создайте свой первый параметр» .
    • Если вы не впервые используете шаблоны Remote Config , нажмите «Добавить параметр» .
  3. Определите следующие параметры Remote Config :

    Имя параметра Описание Тип Значение по умолчанию
    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 При желании можно указать местоположение для запуска службы Vertex AI и доступа к модели. Вы можете установить условия для настройки этой опции на основе местоположения клиента, определенного Google Analytics . Нить us-central1
  4. Завершив добавление параметров, нажмите «Опубликовать изменения» . Если это не новый шаблон Remote Config , просмотрите изменения и снова нажмите «Опубликовать изменения» .

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

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

  1. В Xcode, открыв проект, выберите «Файл» > «Добавить зависимости пакета» .
  2. Выберите firebase-ios-sdk и нажмите «Добавить пакет» .
  3. В навигаторе проекта выберите свое приложение > Цели > свое приложение.
  4. На вкладке «Общие» прокрутите до раздела «Платформы, библиотеки и встроенный контент» .
  5. Нажмите + и выберите FirebaseRemoteConfig , затем нажмите « Добавить» .
  6. Добавьте импорт FirebaseRemoteConfig в свой код:

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

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

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

В этом примере интервал выборки по умолчанию составляет 3600 секунд, но мы рекомендуем вам установить относительно небольшой минимальный интервал выборки внутри вашего кода во время разработки.

Шаг 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")
    

Шаг 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 .

Шаг 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")
  }
}

Это должно обновлять объект Remote Config каждый раз, когда публикуется новый шаблон Remote Config .

Шаг 6. Присвойте значения Remote Config переменным Vertex AI.

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

Создайте значения для хранения вашей модели и значений системных подсказок. Следующий код демонстрирует получение местоположения, названия модели, системных инструкций, приглашения пользователя и местоположения Vertex AI из Remote Config :

// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
let vertexLocation = remoteConfig.configValue(forKey: "vertex_location").stringValue
let vertex = VertexAI.vertexAI(location: vertexLocation)

// Initialize the generative model with a model that supports your use case
// Specify a model that supports system instructions, like a Gemini 1.5 model
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue

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

// Provide a prompt that contains text
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)
}

Шаг 7. Запустите приложение.

Создайте и запустите свое приложение и убедитесь, что оно работает. Внесите изменения в свою конфигурацию на странице Remote Config в консоли консоли Firebase , опубликуйте изменения и проверьте результат.

Следующие шаги