Uygulamanızdaki model adını uzaktan değiştirme

Üretken yapay zeka modellerinin kullanılabilirliği sık sık değişir. Yeni ve daha iyi modeller yayınlanır, eski ve daha az yetenekli modeller ise kullanımdan kaldırılır.

Firebase AI Logic kullanarak üretken yapay zeka modellerine doğrudan bir mobil veya web uygulamasından eriştiğinizde, uygulamanızı bu sık model değişikliklerine uyacak şekilde yapılandırmanız çok önemlidir. Kullanıcılarınızın tamamı, kullanmalarını istediğiniz modeli kullanmaya başlamak için uygulamanızın en son sürümüne güncelleme yapmaz.

Firebase Remote Config, uygulamanızın yeni bir sürümünü yayınlamanıza gerek kalmadan Firebase konsolundan uygulamanızdaki parametre değerlerini (ör. model adı) dinamik ve uzaktan güncellemenize olanak tanır.

Model adını değiştirmenin, Remote Config ile Firebase AI Logic kullanmak için kritik bir kullanım alanı olduğunu unutmayın. Bununla birlikte, Remote Config kullanarak uygulamanızdaki parametreleri dinamik ve hatta koşullu olarak da kontrol edebilirsiniz. Örneğin, model oluşturma yapılandırması (maksimum jeton, sıcaklık vb.), güvenlik ayarları, sistem talimatları ve istem verileri.

Bu kılavuzda, uygulamanızda Remote Config'yı nasıl uygulayacağınız, özellikle de uygulamanızda kullanılan model adını nasıl kontrol edeceğiniz açıklanmaktadır.

1. adım: Parametre değerini Firebase konsolunda ayarlayın

Remote Config istemci şablonu oluşturun ve uygulamada getirilip kullanılacak bir model_name parametre ile değerini yapılandırın.

  1. Firebase konsolunda Firebase projenizi açın. Ardından, gezinme menüsünde Çalıştır'ı genişletip Remote Config'ı seçin.

  2. Sayfanın üst kısmındaki İstemci/Sunucu seçicisinden İstemci'nin seçildiğinden emin olun.

  3. Yapılandırma Oluştur'u (veya daha önce istemci şablonları kullandıysanız Parametre ekle'yi) tıklayarak bir istemci şablonu başlatın.

  4. model_name parametresini tanımlayın:

    Parametre adı Açıklama Tür Varsayılan değer
    model_name Model adı. Kullanılabilir model adlarını inceleyin. Dize gemini-2.5-flash
  5. Bu 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 Değişiklikleri yayınla'yı tekrar tıklayın.

2. adım: Uygulamanıza Remote Config ekleyin ve başlatın

Remote ConfigKitaplığı ekleyin ve uygulamanızda Remote Config ayarlarını yapın.

Swift

Firebase AI LogicKurulum işleminin bir parçası olarak Firebase SDK'sını uygulamanıza eklediniz ancak Remote Config da eklemeniz gerekir.

  1. Xcode'da, proje açıkken File > Add Package Dependencies'a (Dosya > Paket Bağımlılıkları Ekle) gidin.

  2. firebase-ios-sdk'yı seçin ve Paket ekle'yi tıklayın.

  3. Proje Gezgini'nde uygulamanız > Targets (Hedefler) > uygulamanızı seçin.

  4. Genel sekmesinde Framework'ler, Kitaplıklar ve Yerleştirilmiş İçerik bölümüne gidin.

  5. + simgesini tıklayın, FirebaseRemoteConfig'i seçin ve Ekle'yi tıklayın.

  6. Kodunuza FirebaseRemoteConfig içe aktarma ifadesini ekleyin:

    import FirebaseRemoteConfig
    
  7. Uygulamanı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 ekleyip minimum getirme aralığı ekleyeceksiniz:

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

Kotlin

  1. Remote Config bağımlılığını modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle app/build.gradle.kts veya app/build.gradle) ekleyin:

    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
    }
    
  2. Ana uygulama mantığınıza Remote Config ekleyin. Burada Remote Config öğesini başlatacak ve minimum getirme aralığı ekleyeceksiniz:

    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    

Java

  1. Remote Config bağımlılığını modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle app/build.gradle.kts veya app/build.gradle) ekleyin:

    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
    }
    
  2. Ana uygulama mantığınıza Remote Config ekleyin. Burada Remote Config öğesini başlatacak ve minimum getirme aralığı ekleyeceksiniz:

    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

Web

  1. Kodunuzu bir metin düzenleyicide açın ve Remote Config öğesini içe aktarın:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Birincil işlevinizin içinde ve Firebase uygulaması Firebase AI Logic SDK'sı için başlatıldıktan sonra Remote Config SDK'sını başlatın:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. Minimum getirme aralığı ayarlayın:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. Flutter proje dizininizden aşağıdaki komutu kullanarak Remote Config yükleyin ve ekleyin:

    flutter pub add firebase_remote_config
    
  2. ./lib/main.dart dosyasını açın ve Firebase AI Logic'ı desteklemek için eklediğiniz diğer içe aktarma işlemlerinden sonra içe aktarma işlemini ekleyin:

    import 'package:firebase_vertexai/firebase_ai.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_remote_config/firebase_remote_config.dart';
    
  3. Daha sonra kullanabilmek için uygulamanıza _modelName değişkenini ekleyin:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. 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. Bunu 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

  1. Remote Config'i Unity projenize eklemek için bu talimatları uygulayın.

  2. 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. Bunu 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, uygulamanızın Remote Config hizmetinden değer alamasa bile beklendiği gibi davranmasını sağlar.

Swift

  1. Firebase konsolunda Remote Config öğesini açın.

  2. Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.

  3. İstendiğinde .plist for iOS'i etkinleştirin, ardından Dosyayı indir'i tıklayın.

  4. Dosyayı uygulama dizininize kaydedin.

  5. Xcode'da uygulamanızı sağ tıklayın ve Add Files'ı (Dosya Ekle) seçin.

  6. remote_config_defaults.plist'i seçin ve Ekle'yi tıklayın.

  7. Uygulama kodunuzu, defaults dosyasına referans verecek şekilde güncelleyin:

    // Set default values for Remote Config parameters.
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

  1. Firebase konsolundan Remote Config hizmetini açın.

  2. Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.

  3. İstendiğinde Android için.xml'i etkinleştirin ve Dosyayı indir'i tıklayın.

  4. Dosyayı uygulamanızın XML kaynakları dizinine kaydedin.

  5. Daha önce eklediğiniz configSettings sonrasına 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

  1. Firebase konsolunda Remote Config öğesini açın.

  2. Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.

  3. İstendiğinde Android için.xml'i etkinleştirin ve Dosyayı indir'i tıklayın.

  4. Dosyayı uygulamanızın XML kaynakları dizinine kaydedin.

  5. Daha önce eklediğiniz configSettings sonrasına 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-2.5-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-2.5-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-2.5-flash" }
  }
);

4. adım: Değeri getirin ve etkinleştirin

Model adı için varsayılan değeri ayarladıktan sonra değerleri getirmek ve 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, yeni bir Remote Config şablonu yayınlandığında Remote Config nesnesini güncellemelidir.

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. İçe aktarma işlemlerinize getValue ve fetchAndActivate ekleyin:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. 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 modelName sabitine 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: Anlık Remote Config dinleyici ekleyin

Remote Config şablonunda yaptığınız değişikliklerin güncellenir güncellenmez istemciye aktarı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ştirme 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ştirme 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

Web uygulamalarında anlık Remote Config dinleyici özelliği desteklenmez.

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 kodu 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 kodlanmış değerleri Remote Config kaynağından alınan değerlerle değiştirin.

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
);

// ...

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