Üretken yapay zeka modellerinin kullanılabilirliği sık sık değişir. Yeni ve daha iyi modeller kullanıma sunulurken eski ve daha az yetenekli modeller kapatılır.
Üretken yapay zeka modellerine Firebase AI Logic kullanarak doğrudan bir mobil veya web uygulamasından eriştiğinizde, uygulamanızı bu sık model değişikliklerine uyum sağlayacak şekilde yapılandırmanız çok önemlidir. Kullanıcılarınızın hepsi, kullanmalarını istediğiniz modeli kullanmaya başlamak için uygulamanızı en yeni sürümüne güncellemez.
Firebase Remote Config, uygulamanızın yeni bir sürümünü yayınlamanıza gerek kalmadan uygulamanızdaki parametre değerlerini (ör. model adı) Firebase konsolundan dinamik ve uzaktan güncellemenize olanak tanır.
Model adını değiştirmenin, Firebase AI Logic ile Remote Config kullanmak için kritik bir kullanım alanı olduğunu unutmayın. Ancak uygulamanızdaki parametreleri dinamik ve hatta koşullu olarak kontrol etmek için de Remote Config kullanabilirsiniz. Örneğin, model oluşturma yapılandırması (maksimum çıkış jetonları gibi), güvenlik ayarları, sistem talimatları ve istem verileri.
Bu kılavuzda, uygulamanızda kullanılan model adını kontrol etmek için Remote Config uygulamasını nasıl kullanacağınız açıklanmaktadır.
1. adım: Firebase konsolunda parametre değerini ayarlayın.
Remote Config istemci şablonu oluşturun ve uygulamada alınıp kullanılacak bir model_name parametresi ve değerini yapılandırın.
Firebase konsolunda DevOps & Engagement > Remote Config'e gidin.
Sayfanın üst kısmındaki İstemci/Sunucu seçiciden İstemci'yi seçin.
Yapılandırma Oluştur'u tıklayarak bir istemci şablonu başlatın (veya daha önce istemci şablonları kullandıysanız Parametre ekle'yi tıklayın).
model_nameparametresini tanımlayın:Parametre adı Açıklama Tür Varsayılan değer model_nameModel adı. Kullanılabilir model adlarını inceleyin. Dize gemini-3.8-flashBu parametreyi ekledikten sonra Değişiklikleri yayınla'yı tıklayın. Bu yeni bir Remote Config şablonu değilse değişiklikleri inceleyin ve tekrar Değişiklikleri yayınla'yı tıklayın.
2. adım: Uygulamanıza Remote Config ekleyin ve başlatın
Remote Config kitaplığını ekleyin ve uygulamanızda Remote Config özelliğini ayarlayın.
Swift
Firebase AI Logic kurulumu kapsamında Firebase SDK'sını uygulamanıza eklediniz ancak Remote Config da eklemeniz gerekir.
Xcode'da proje açıkken File > Add Package Dependencies (Dosya > Paket Bağımlılıkları Ekle) bölümüne gidin.
firebase-ios-sdk'yı seçin ve Add package'ı (Paket ekle) tıklayın.
Proje Gezgini'nde uygulamanız > Hedefler > uygulamanızı seçin.
General (Genel) sekmesinde Frameworks, Libraries, and Embedded Content (Çerçeveler, Kitaplıklar ve Yerleştirilmiş İçerik) bölümüne gidin.
+ simgesini tıklayıp FirebaseRemoteConfig'i seçin, ardından Add'i (Ekle) tıklayın.
Kodunuza
FirebaseRemoteConfigiçe aktarma işlemini ekleyin:import FirebaseRemoteConfigUygulamanız için uygun sınıfın içinde Firebase'i başlatın ve ana uygulama mantığınıza Remote Config ekleyin.
Burada, uygulamanın yeni değerleri gerçek zamanlı olarak getirebilmesi için Remote Config ve Remote Config gerçek zamanlı dinleyiciyi içe aktarma olarak ekleyecek ve minimum getirme aralığı ekleyeceksiniz:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
Remote Config bağımlılığını modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle
app/build.gradle.ktsveyaapp/build.gradle) ekleyin:dependencies { implementation(platform("com.google.firebase:firebase-bom:35.1.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Ana uygulama mantığınıza Remote Config ekleyin. Burada Remote Config nesnesini başlatacak ve minimum getirme aralığı ekleyeceksiniz:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Remote Config bağımlılığını modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle
app/build.gradle.ktsveyaapp/build.gradle) ekleyin:dependencies { implementation(platform("com.google.firebase:firebase-bom:35.1.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Ana uygulama mantığınıza Remote Config ekleyin. Burada Remote Config nesnesini başlatacak ve minimum getirme aralığı ekleyeceksiniz:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Kodunuzu bir metin düzenleyicide açın ve Remote Config kitaplığını içe aktarın:
import { getRemoteConfig } from 'firebase/remote-config';Birincil işlevinizde ve Firebase uygulaması Firebase AI Logic SDK için başlatıldıktan sonra Remote Config öğesini başlatın:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);Minimum getirme aralığı ayarlama:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Flutter proje dizininizden aşağıdaki komutu kullanarak Remote Config paketini yükleyip ekleyin:
flutter pub add firebase_remote_config./lib/main.dartdosyasını açın ve içe aktarma işlemini, Firebase AI Logic desteği için eklediğiniz diğer içe aktarma işlemlerinden sonra ekleyin:import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';Daha sonra kullanabilmek için
_modelNamedeğişkenini uygulamanıza ekleyin:late final String _modelName; late final String _systemInstructions; late final String _prompt;Remote Config nesne örneğini alın ve yenileme işleminin sık sık gerçekleşmesi için minimum getirme aralığını ayarlayın. Bu kodu Firebase başlatıldıktan sonra eklediğinizden emin olun.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Unity
Bu talimatları uygulayarak Unity projenize Remote Config ekleyin.
Remote Config nesne örneği oluşturun ve yenileme işleminin sık sık gerçekleşmesi için minimum getirme aralığını ayarlayın. Bu kodu Firebase başlatıldıktan sonra eklediğinizden emin olun.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
3. adım: Uygulama içi parametre değerini ayarlayın
Uygulama içi varsayılan parametre değerlerini Remote Config nesnesinde ayarlamanız gerekir. Bu sayede, uygulamanız Remote Config hizmetinden değerleri getiremese bile beklendiği gibi çalışır.
Swift
Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.
Menü 'yü açın ve Varsayılan değerleri indir'i seçin.İstendiğinde iOS için.plist'i etkinleştirin ve ardından Dosyayı indir'i tıklayın.
Dosyayı uygulama dizininize kaydedin.
Xcode'da uygulamanızı sağ tıklayın ve Add Files'ı (Dosya Ekle) seçin.
remote_config_defaults.plist dosyasını seçin ve Add'i (Ekle) tıklayın.
Uygulama kodunuzu, varsayılanlar dosyasına referans verecek şekilde güncelleyin:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.
Menü 'yü açın ve Varsayılan değerleri indir'i seçin.İstendiğinde Android için.xml'yi etkinleştirin ve ardından Dosyayı indir'i tıklayın.
Dosyayı uygulamanızın XML kaynakları dizinine kaydedin.
Daha önce eklediğiniz
configSettingsöğesinden sonra varsayılanları eklemek için ana etkinlik dosyanızı güncelleyin:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.
Menü 'yü açın ve Varsayılan değerleri indir'i seçin.İstendiğinde Android için.xml'yi etkinleştirin ve ardından Dosyayı indir'i tıklayın.
Dosyayı uygulamanızın XML kaynakları dizinine kaydedin.
Daha önce eklediğiniz
configSettingsöğesinden sonra varsayılanları eklemek için ana etkinlik dosyanızı güncelleyin:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Model adının varsayılan değerini doğrudan kodunuzda ayarlayabilirsiniz:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
model_name: 'gemini-3.8-flash',
};
Dart
Model adının varsayılan değerini doğrudan kodunuzda ayarlayabilirsiniz:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"model_name": "gemini-3.8-flash"
});
Unity
Model adının varsayılan değerini doğrudan kodunuzda ayarlayabilirsiniz:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-3.8-flash" }
}
);
4. adım: Değeri getirme ve etkinleştirme
Model adı için varsayılan değeri ayarladıktan sonra, değerleri getirip etkinleştirmek için aşağıdakileri ekleyin.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Bu işlem, yeni bir Remote Config şablonu yayınlandığında Remote Config nesnesini günceller.
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
İçe aktarma işlemlerinize
getValuevefetchAndActivateekleyin:import { getValue, fetchAndActivate } from 'firebase/remote-config';Model adı için varsayılan değeri belirttiğiniz kodu bulun. Bu kod bloğunun hemen ardından, yapılandırmayı getirip etkinleştirmek ve getirilen değeri
modelNamesabitine atamak için aşağıdaki kodu ekleyin.// 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();
5. adım: Gerçek zamanlı Remote Config dinleyici ekleme
Remote Config şablonunda yaptığınız değişikliklerin güncellenir güncellenmez istemciye yayılmasını sağlamak için uygulamanıza gerçek zamanlı Remote Config dinleyici ekleyin.
Aşağıdaki kod, bir parametre değeri her değiştiğinde Remote Config nesnesini günceller.
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
İsteğe bağlı olarak, addOnCompleteListener etkinleştirmesi içinde bir işlem de yapılandırabilirsiniz:
// 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
İsteğe bağlı olarak, addOnCompleteListener etkinleştirmesi içinde bir işlem de yapılandırabilirsiniz:
// 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();
});
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();
};
6. adım: Gemini API isteklerini Remote Config değerini kullanacak şekilde güncelleyin.
|
Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Remote Config tamamen yapılandırıldığına göre, kodunuzu güncelleyerek sabit kodlu değerleri Remote Config'ten alınan değerlerle değiştirin.
Swift
import FirebaseAILogic
// 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
);
// ...
7. adım: Uygulamayı çalıştırın
Uygulamayı derleyip çalıştırın ve çalıştığını doğrulayın. Firebase konsolundaki Remote Config sayfasından yapılandırmanızda değişiklikler yapın, değişiklikleri yayınlayın ve sonucu doğrulayın.
Sonraki adımlar
Remote Config ve Firebase AI Logic için diğer kullanım alanlarını uygulama hakkında daha fazla bilgi edinin.
Mobil uygulamalar ve oyunlar için:
Remote Config ve A/B Testing ile farklı model ayarlarını test edin.
Remote Config kullanıma sunma (yalnızca iOS+ ve Android) özelliğini kullanarak model parametresi değişikliklerini kademeli olarak yayınlayın.
Her bir kullanıcı için en iyi ayarları belirlemek üzere makine öğrenimini kullanmak istiyorsanız Remote Config kişiselleştirme özelliğini kullanın (yalnızca iOS+, Android ve Unity).