Ketersediaan model AI generatif sering berubah — model baru yang lebih baik dirilis dan model lama yang kurang mumpuni dihentikan.
Saat Anda mengakses model AI generatif secara langsung dari aplikasi seluler atau web menggunakan Firebase AI Logic, Anda harus mengonfigurasi aplikasi untuk mengakomodasi perubahan model yang sering terjadi ini. Tidak semua pengguna akan mengupdate aplikasi Anda ke versi terbaru untuk mulai menggunakan model yang Anda inginkan.
Firebase Remote Config memungkinkan Anda memperbarui nilai parameter di aplikasi (seperti nama model) secara dinamis dan dari jarak jauh dari konsol Firebase, tanpa perlu merilis versi baru aplikasi Anda.
Perhatikan bahwa mengubah nama model adalah kasus penggunaan kritis untuk menggunakan Remote Config dengan Firebase AI Logic, tetapi Anda juga dapat menggunakan Remote Config untuk mengontrol parameter secara dinamis dan bahkan bersyarat di aplikasi Anda, seperti konfigurasi pembuatan model (token maksimum, suhu, dll.), setelan keamanan, petunjuk sistem, dan data perintah.
Panduan ini menjelaskan cara menerapkan Remote Config di aplikasi Anda, khususnya untuk mengontrol nama model yang digunakan di aplikasi Anda.
Langkah 1: Tetapkan parameter value di Firebase console
Buat template klien Remote Config dan konfigurasikan parameter model_name
serta nilainya untuk diambil dan digunakan dalam aplikasi.
Buka project Firebase Anda di konsol Firebase. Kemudian, dari menu navigasi, luaskan Run, lalu pilih Remote Config.
Pastikan Client dipilih dari pemilih Client/Server di bagian atas halaman.
Mulai template klien dengan mengklik Create Configuration (atau Add parameter jika Anda sebelumnya telah menggunakan template klien).
Tentukan parameter
model_name:Nama parameter Deskripsi Jenis Nilai default model_nameNama model. Lihat nama model yang tersedia. String gemini-2.5-flashSetelah menambahkan parameter ini, klik Publish changes. Jika ini bukan template Remote Config baru, tinjau perubahan, lalu klik Publish changes lagi.
Langkah 2: Tambahkan dan lakukan inisialisasi Remote Config di aplikasi Anda
Tambahkan library Remote Config dan siapkan Remote Config dalam aplikasi Anda.
Swift
Sebagai bagian dari penyiapan Firebase AI Logic, Anda telah menambahkan Firebase SDK ke aplikasi, tetapi juga harus menambahkan Remote Config.
Di Xcode, dengan project terbuka, buka File > Add Package Dependencies.
Pilih firebase-ios-sdk, lalu klik Add package.
Dari Project navigator, pilih aplikasi > Targets > aplikasi Anda.
Dari tab General, scroll ke Framework, Library, dan Embedded Content.
Klik + dan pilih FirebaseRemoteConfig, lalu klik Add.
Tambahkan impor
FirebaseRemoteConfigke kode Anda:import FirebaseRemoteConfigDi dalam class yang sesuai untuk aplikasi Anda, lakukan inisialisasi Firebase dan tambahkan Remote Config ke logika aplikasi utama Anda.
Di sini, Anda akan menyertakan Remote Config dan pemroses real-time Remote Config sebagai pengimporan sehingga aplikasi dapat mengambil nilai baru secara real-time, dan menambahkan interval pengambilan minimum:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
Tambahkan dependensi Remote Config ke file Gradle modul (level aplikasi) (biasanya
app/build.gradle.ktsatauapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:34.5.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Tambahkan Remote Config ke logika aplikasi utama Anda. Di sini, Anda akan melakukan inisialisasi Remote Config dan menambahkan interval pengambilan minimum:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Tambahkan dependensi Remote Config ke file Gradle modul (level aplikasi) (biasanya
app/build.gradle.ktsatauapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:34.5.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Tambahkan Remote Config ke logika aplikasi utama Anda. Di sini, Anda akan melakukan inisialisasi Remote Config dan menambahkan interval pengambilan minimum:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Buka kode Anda di editor teks dan impor Remote Config:
import { getRemoteConfig } from 'firebase/remote-config';Di dalam fungsi utama dan setelah aplikasi Firebase diinisialisasi untuk Firebase AI Logic SDK, lakukan inisialisasi Remote Config:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);Tetapkan interval pengambilan minimum:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Dari direktori project Flutter Anda, instal dan tambahkan Remote Config menggunakan perintah berikut:
flutter pub add firebase_remote_configBuka
./lib/main.dartdan tambahkan impor setelah impor lain yang Anda tambahkan untuk mendukung 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';Tambahkan variabel
_modelNameke aplikasi Anda agar Anda dapat menggunakannya nanti:late final String _modelName; late final String _systemInstructions; late final String _prompt;Dapatkan instance objek Remote Config dan tetapkan interval pengambilan minimum agar refresh sering terjadi. Pastikan untuk menambahkannya setelah Firebase diinisialisasi.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Unity
Tambahkan Remote Config ke project Unity Anda, dengan mengikuti petunjuk ini.
Dapatkan instance objek Remote Config dan tetapkan interval pengambilan minimum agar refresh sering terjadi. Pastikan untuk menambahkannya setelah Firebase diinisialisasi.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Langkah 3: Tetapkan parameter value dalam aplikasi
Anda harus menetapkan parameter value default dalam aplikasi di objek Remote Config. Hal ini memastikan bahwa aplikasi Anda berperilaku seperti yang diharapkan meskipun tidak dapat mengambil nilai dari layanan Remote Config.
Swift
Di Firebase console, buka Remote Config.
Di tab Parameters, buka Menu, lalu pilih Download default values.
Jika diminta, aktifkan .plist for iOS, lalu klik Download file.
Simpan file di direktori aplikasi Anda.
Di Xcode, klik kanan aplikasi Anda, lalu pilih Add Files
Pilih remote_config_defaults.plist, lalu klik Add.
Perbarui kode aplikasi Anda untuk mereferensikan file default:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
Dari Firebase console, buka Remote Config.
Di tab Parameters, buka Menu, lalu pilih Download default values.
Jika diminta, aktifkan .xml for Android, lalu klik Download file.
Simpan file di direktori resource XML aplikasi Anda.
Perbarui file aktivitas utama untuk menambahkan default setelah
configSettingsyang Anda tambahkan sebelumnya:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
Di Firebase console, buka Remote Config.
Di tab Parameters, buka Menu, lalu pilih Download default values.
Jika diminta, aktifkan .xml for Android, lalu klik Download file.
Simpan file di direktori resource XML aplikasi Anda.
Perbarui file aktivitas utama untuk menambahkan default setelah
configSettingsyang Anda tambahkan sebelumnya:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Anda dapat menetapkan nilai default untuk nama model langsung dalam kode:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
model_name: 'gemini-2.5-flash',
};
Dart
Anda dapat menetapkan nilai default untuk nama model langsung dalam kode:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"model_name": "gemini-2.5-flash"
});
Unity
Anda dapat menetapkan nilai default untuk nama model langsung dalam kode:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-2.5-flash" }
}
);
Langkah 4: Ambil dan aktifkan nilai
Setelah menetapkan nilai default untuk nama model, tambahkan kode berikut untuk mengambil dan mengaktifkan nilai.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Tindakan ini akan memperbarui objek Remote Config setiap kali template Remote Config baru dipublikasikan.
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
Tambahkan
getValuedanfetchAndActivateke impor Anda:import { getValue, fetchAndActivate } from 'firebase/remote-config';Temukan kode tempat Anda menentukan nilai default untuk nama model. Tepat setelah blok kode tersebut, tambahkan kode berikut untuk mengambil dan mengaktifkan konfigurasi serta menetapkan nilai yang diambil ke konstanta
modelName.// 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();
Dart
// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();
// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Langkah 5: Tambahkan pemroses Remote Config real-time
Tambahkan pemroses Remote Config real-time ke aplikasi Anda untuk memastikan bahwa perubahan yang Anda buat pada template Remote Config disebarkan ke klien segera setelah diperbarui.
Kode berikut memperbarui objek Remote Config setiap kali parameter value berubah.
Swift
// 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
Secara opsional, Anda juga dapat mengonfigurasi tindakan di dalam
aktivasi 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
Secara opsional, Anda juga dapat mengonfigurasi tindakan di dalam
aktivasi 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
Pemroses Remote Config real-time tidak didukung untuk aplikasi Web.
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
});
Unity
// 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();
};
Langkah 6: Perbarui permintaan Gemini API untuk menggunakan nilai Remote Config
|
Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini. |
Setelah Remote Config dikonfigurasi sepenuhnya, perbarui kode Anda untuk mengganti nilai hard code dengan nilai yang bersumber dari Remote Config.
Swift
import FirebaseAI
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: modelName
)
// ...
Kotlin
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = remoteConfig.getString("model_name")
)
// ...
Java
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ remoteConfig.getString("model_name"),
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ null,
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// ...
Web
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
const model = getGenerativeModel(ai, {
model: modelName
});
// ...
Dart
// ...
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
final model = FirebaseAI.googleAI().generativeModel(
model: _modelName,
);
// ...
Unity
// ...
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var model = ai.GetGenerativeModel(
modelName: modelName
);
// ...
Langkah 7: Jalankan aplikasi
Bangun, jalankan, dan pastikan aplikasi berfungsi. Lakukan perubahan pada konfigurasi Anda dari halaman Remote Config di Firebase console, publikasikan perubahan, dan verifikasi hasilnya.
Langkah berikutnya
Pelajari lebih lanjut cara menerapkan kasus penggunaan lain untuk Remote Config dan Firebase AI Logic.
Untuk aplikasi dan game seluler:
Uji berbagai setelan model dengan Remote Config dan A/B Testing.
Rilis perubahan parameter model secara bertahap menggunakan peluncuran Remote Config (khusus iOS+ dan Android).
Gunakan personalisasi Remote Config untuk menggunakan machine learning guna menentukan setelan terbaik bagi setiap pengguna (khusus iOS+, Android, dan Unity).