При вызове 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 и настройте параметры и значения для получения и использования в приложении.
Откройте свой проект Firebase в консоли Firebase . Затем в меню навигации разверните раздел «Выполнить» и выберите Remote Config .
Убедитесь, что в верхней части страницы в поле выбора "Клиент/Сервер" выбран параметр "Клиент" .
Чтобы создать шаблон клиента, нажмите «Создать конфигурацию» (или «Добавить параметр», если вы ранее использовали шаблоны клиентов).
Определите параметры, которыми вы хотите управлять с помощью Remote Config . Например:
Имя параметра Описание Тип Значение по умолчанию model_nameНазвание модели. См. доступные названия моделей . Нить gemini-2.5-flashsystem_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, открыв проект, перейдите в меню File > Add Package Dependencies .
Выберите 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В быстром стартовом приложении это будет находиться внутри класса
AppDelegateв классеVertexAISampleApp.
Kotlin
Добавьте зависимость Remote Config в файл Gradle вашего модуля (на уровне приложения) (обычно
app/build.gradle.ktsилиapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:34.11.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.11.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 for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
В консоли Firebase откройте Remote Config .
На вкладке «Параметры» откройте меню и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите поддержку .xml для Android , затем нажмите «Скачать файл» .
Сохраните файл в каталоге XML-ресурсов вашего приложения.
Обновите основной файл активности, добавив значения по умолчанию после ранее добавленных
configSettings:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
В консоли Firebase откройте Remote Config .
На вкладке «Параметры» откройте меню и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите поддержку .xml для Android , затем нажмите «Скачать файл» .
Сохраните файл в каталоге XML-ресурсов вашего приложения.
Обновите основной файл активности, добавив значения по умолчанию после ранее добавленных
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
Добавьте
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
// Add a real-time Remote Config listener
onConfigUpdate(remoteConfig, {
next: (configUpdate) => {
console.log("Updated keys:", configUpdate.getUpdatedKeys());
if (configUpdate.getUpdatedKeys().has("welcome_message")) {
activate(remoteConfig).then(() => {
showWelcomeMessage();
});
}
},
error: (error) => {
console.log("Config update error:", error);
},
complete: () => {
console.log("Listening stopped.");
}
});
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).