Firebase Remote Config ile Firebase AI Logic uygulamanızı dinamik olarak güncelleme

Firebase AI Logic SDK'sını kullanarak uygulamanızdan Gemini API işlevini çağırdığınızda isteğiniz, üretken yapay zeka yanıtlarını kontrol eden bir dizi parametre içerir. Bunlar genellikle model adı, model nesli yapılandırması (maksimum jeton, sıcaklık vb.), güvenlik ayarları, sistem talimatları ve istem verilerini içerir.

Çoğu durumda, bu ayarları isteğe bağlı olarak veya çeşitli senaryolarda gerektiğinde değiştirmek isteyebilirsiniz:

  • Yeni bir uygulama yayınlamadan üretken yapay zeka modelinizi güncelleyin. Önceki sürümler kullanımdan kaldırılmadan önce daha yeni ve kararlı model sürümlerine geçebilir, kullanıcılarınızın ihtiyaçlarına ve özelliklerine göre daha düşük maliyetli veya daha yüksek performanslı modellere geçebilir ya da en yeni ve en iyi modelleri belirli kullanıcı segmentlerine (ör. beta test kullanıcıları) koşullu olarak dağıtabilirsiniz.
  • Modele eriştiğiniz konumu, kullanıcılarınıza daha yakın olacak şekilde ayarlayın.
  • Farklı sistem talimatlarını ve istemlerini A/B testine tabi tutun, ardından kazanan deneme değerlerini kullanıcılarınıza yavaş yavaş sunun.
  • Uygulamanızdaki üretken yapay zeka özelliklerini hızlıca göstermek veya gizlemek için özellik işaretlerini kullanın.

Firebase Remote Config tüm bunları ve daha fazlasını yapar. Uygulamanızın yeni bir sürümünü yayınlamadan, parametre değerlerini gerektiği gibi ve Firebase konsolunda ayarladığınız özelliklerle eşleşen uygulama örnekleri için koşullu olarak güncellemenize olanak tanır.

Bu çözüm kılavuzunda, önerilen belirli kullanım alanları ve üretken yapay zeka uygulamanıza Remote Config'yı nasıl ekleyeceğiniz açıklanmaktadır.

Kod uygulaması bölümüne git

Uygulamanızda neden Firebase Remote Config kullanmalısınız?

Firebase Remote Config, uygulama güncellemeleri gerektirmeden uygulamanızın davranışını dinamik olarak ayarlamanıza olanak tanır. Bu özellik, özellikle hızlı yineleme ve ince ayarın çok önemli olduğu üretken yapay zeka kullanan uygulamalar için çok güçlüdür.

Üretken yapay zeka uygulamalarıyla Remote Config için temel kullanım alanları

Aşağıdaki temel kullanım alanlarında Remote Config ile Firebase AI Logic kullanmanızı öneririz:

  • Uygulama güncellemesi yapmadan en yeni model sürümüne yükseltme: Model adını gerektiği gibi değiştirmek için Remote Config parametrelerini kullanın. Böylece, tercih ettiğiniz Gemini modelin en yeni sürümü kullanıma sunulur sunulmaz bu sürüme yükseltebilirsiniz.

  • Uygulama güncellemesi yapmadan sistem talimatlarını ve güvenlik ayarlarını güncelleme: Dağıtımdan sonra sorun keşfederseniz bunları isteğe bağlı olarak değiştirebilmeniz için sistem talimatlarını ve güvenlik ayarlarını Remote Config parametrelerinde saklayın.

  • Riski azaltın ve yapay zeka güvenliğini zorunlu kılın: Üretken yapay zeka değişikliklerini iOS ve Android kullanıcılarınıza güvenli ve kademeli olarak sunmak için Remote Config kullanıma sunma özelliğini kullanın.

Üretken yapay zeka uygulamalarıyla Remote Config için gelişmiş ve önerilen kullanım alanları

Uygulamanıza Remote Config ve Google Analytics ile izleme kodunu ekledikten sonra, gelişmiş kullanım alanlarını keşfedebilirsiniz:

  • Konumu istemci konumuna göre ayarlama: İstemcinin algılanan konumuna göre Remote Config koşullarını kullanarak modele eriştiğiniz konumu ayarlayın.

  • Farklı modellerle denemeler yapın: Çeşitli üretken yapay zeka modellerini hızlıca test edip aralarında geçiş yapın veya hatta farklı kullanıcı segmentleri için farklı modellere erişerek özel kullanım alanınıza en uygun olanı bulun.

  • Model performansını optimize etme: Sistem istemi, maksimum çıkış jetonu ve sıcaklık gibi model parametrelerinin yanı sıra diğer ayarları ince ayar yapın.

  • İstemci özelliklerine göre farklı sistem talimatları, istemler ve model yapılandırması kullanma: Remote Config ile Google Analytics kullanılırken istemci özelliklerine veya özel kitlelere göre koşullar oluşturabilir ve bu özelliklere göre farklı parametreler ayarlayabilirsiniz.

    Örneğin, uygulamanızda teknik destek sağlamak için üretken yapay zeka kullanıyorsanız Android, iOS ve web platformu kullanıcılarınıza doğru talimatlar verildiğinden emin olmak için uygulama platformuna özel sistem talimatları ayarlayabilirsiniz.

  • Her kullanıcı için deneyimleri kişiselleştirin: Her kullanıcı için optimum üretken yapay zeka ayarlarını otomatik olarak belirlemek üzere mobil uygulamalarınızda ve oyunlarınızda Remote Config kişiselleştirme özelliğini kullanın.

  • Maliyetleri kontrol edin: Hangi üretken yapay zeka modellerinin çağrıldığını, ne sıklıkta kullanıldıklarını uzaktan ayarlayın ve kullanıcı kitlesine göre maksimum çıkış jetonu değerlerini dinamik olarak yapılandırarak gereksiz maliyetleri azaltın.

  • Uygulama deneyimini ve sonuçları optimize etme: Elde tutma ve gelir gibi önemli metrikleri nasıl etkilediklerini görmek için üretken yapay zeka parametrelerindeki değişiklikleri farklı kullanıcı segmentlerinde test etmek üzere mobil uygulamalarınızda ve oyunlarınızda A/B Testing ile Remote Config'ı kullanın.

Üretken yapay zeka uygulamanızı Firebase Remote Config ile donatarak kullanıcılarınız için keyifli deneyimler oluştururken esnek, güvenli ve uygun maliyetli yapay zeka destekli uygulamalar geliştirebilirsiniz.

Uygulamanıza Firebase Remote Config ekleme

Bu çözüm kılavuzunda, Firebase Remote Config SDK'sını kullanan Android uygulamanızdaki parametreleri dinamik olarak güncellemek için Firebase AI Logic kullanacaksınız. Bu eğitimde şunları öğreneceksiniz:

  • Firebase Remote Config konumundan model adları ve sistem talimatları gibi parametreleri getirin ve etkinleştirin.
  • Gemini API çağrılarınızı dinamik olarak alınan parametreleri kullanacak şekilde güncelleyin. Böylece, uygulama güncellemesi yapmadan farklı modeller arasında geçiş yapabilir veya sistem talimatlarını değiştirebilirsiniz.
  • Model davranışını ve özelliklerini gerektiği gibi ayarlayarak parametreleri uzaktan kontrol edin.

Ön koşullar

Bu kılavuzda, platformunuz için uygulama geliştirme konusunda bilgi sahibi olduğunuz varsayılmaktadır.

Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

  • Firebase projenizi ayarlama, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz "Gemini API" sağlayıcısı için arka uç hizmetini başlatma ve model örneği oluşturma işlemlerinin nasıl yapılacağını açıklayan Firebase AI Logic başlangıç kılavuzunu tamamlayın.

  • Firebase projenizde Google Analytics'ı etkinleştirin ve SDK'sını uygulamanıza ekleyin (modelinize eriştiğiniz konumu istemci cihazın konumuna göre ayarlama gibi koşullu hedefleme için gereklidir).

1. adım: Firebase konsolunda parametre değerlerini ayarlayın

İstemci Remote Configşablonu oluşturun ve uygulamada getirilip kullanılacak parametreleri ve değerleri yapılandırın.

  1. Firebase projenizi Firebase konsolunda 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. Remote Config ile kontrol etmek istediğiniz parametreleri tanımlayın. Örneğin:

    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
    system_instructions Sistem talimatları, modelin davranışını etkilemek için son kullanıcıdan gelen diğer talimatlara maruz kalmadan önce eklediğiniz bir "giriş" gibidir. Dize You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Üretken yapay zeka özelliğinizle kullanılacak varsayılan istem. Dize I am a developer who wants to know more about Firebase!
    vertex_location Yalnızca Vertex AI Gemini API kullanılıyorsa geçerlidir.
    Modele erişmek için konumu kontrol edin. Bu seçeneği Google Analytics tarafından algılanan müşteri konumuna göre yapılandırmak için koşullar belirleyebilirsiniz.
    Dize global
  5. Parametre ekleme işlemini tamamladığınızda 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 gezgininde uygulamanız > 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 anında getirebilmesi için Remote Config ve Remote Config anlık dinleyiciyi içe aktarma olarak ekleyip minimum getirme aralığı ekleyeceksiniz:

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

    Hızlı başlangıç uygulamasında bu, AppDelegate sınıfındaki VertexAISampleApp içinde yer alır.

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:33.15.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:33.15.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 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 kullanabilmemiz için uygulamanıza _modelName, _systemInstructions ve _prompt değişkenlerini 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ğerlerini 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 getiremediği durumlarda 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 iOS için.plist'i etkinleştirin, ardından Dosyayı indir'i tıklayın.

  4. Dosyayı uygulama dizininize kaydedin.

    Örnek uygulamayı kullanıyorsanız FirebaseVertexAI/Sample/VertexAISample içinde kaydedin.

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

    Örnek kullanıyorsanız VertexAISample'ı sağ tıklayın ve Add Files to "VertexAISample" ("VertexAISample"a Dosya Ekle) seçeneğini belirleyin.

  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
    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.
    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.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

Web

Varsayılan değerleri doğrudan kodunuzda ayarlayabilirsiniz:

// Set default Remote Config parameter values
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

Varsayılan değerleri doğrudan kodunuzda ayarlayabilirsiniz:

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

Unity

Varsayılan değerleri doğrudan kodunuzda ayarlayabilirsiniz:

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. adım: Değerleri getirin ve etkinleştirin

Varsayılanları 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. Varsayılan Remote Config değerlerini yapılandırmak için eklediğiniz koddan sonra, yapılandırmayı getirin ve etkinleştirin, ardından modelName, systemInstructions, prompt ve vertexLocation sabitlerine değerler atayın.

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

Unity

// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();

5. adım: Gerçek zamanlı 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 sayısı 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ğerlerini 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

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

Unity

// 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. adım: Uygulamayı çalıştırın

Uygulamayı derleyip çalıştırın ve çalıştığını doğrulayın. Remote Config konsolundaki Firebase 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