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

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

Çoğu durumda, bunları isteğe bağlı olarak veya çeşitli senaryolar için gerektiği şekilde değiştirmek istersiniz:

  • Üretken yapay zeka modelinizi yeni bir uygulama yayınlamadan güncelleyin. Eski 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 (beta test kullanıcıları gibi) 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 testi yapın, ardından kazanan deneme değerlerini kullanıcılarınıza yavaş yavaş dağıtın.
  • Uygulamanızda ü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ı yaparak uygulamanızın yeni bir sürümünü yayınlamadan parametre değerlerini gerektiği gibi ve Firebase konsolunda belirlediğiniz ö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ı sunulmakta ve üretken yapay zeka uygulamanıza Remote Config'nin nasıl ekleneceği açıklanmaktadır.

Kod uygulama bölümüne atla

Uygulamanızla 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ı iterasyon ve hassas ayarların ö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ı için Remote ConfigFirebase AI Logic ile birlikte kullanmanızı öneririz:

  • Uygulama güncellemesi olmadan 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 Geminimodelin en yeni sürümüne kullanıma sunulduğu anda yükseltme yapabilirsiniz.

  • Sistem talimatlarını ve güvenlik ayarlarını uygulama güncellemesi olmadan güncelleme: Sistem talimatlarını ve güvenlik ayarlarını Remote Config parametrelerinin içine kaydederek dağıtım sonrasında sorun tespit ederseniz bunları istediğiniz zaman değiştirebilirsiniz.

  • 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 Configyayınlama özelliğini kullanın.

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

Uygulamanızı Remote Config ve Google Analytics ile enstrümante ettikten sonra gelişmiş kullanım alanlarını keşfedebilirsiniz:

  • Konumu istemcinin konumuna göre ayarlama: İstemcinin algılanan konumuna göre modele eriştiğiniz konumu ayarlamak için Remote Config koşullarını kullanın.

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

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

  • İstemci özelliklerine göre farklı sistem talimatları, istemler ve model yapılandırması kullanın: Remote ConfigGoogle Analytics ile birlikte kullandığınızda istemci özelliklerine veya özel kitlelere dayalı 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 sağlandığından emin olmak için uygulama platformuna özgü sistem talimatları ayarlamak isteyebilirsiniz.

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

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

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

Üretken yapay zeka uygulamanızı Firebase Remote Config ile entegre ederek kullanıcılarınıza keyifli deneyimler sunarken esnek, güvenli ve uygun maliyetli yapay zeka destekli uygulamalar oluşturabilirsiniz.

Uygulamanıza Firebase Remote Config ekleme

Bu çözüm kılavuzunda, Android uygulamanızda Firebase AI Logic SDK'sını kullanan parametreleri dinamik olarak güncellemek için Firebase Remote Config'ü kullanacaksınız. Aşağıdakileri nasıl yapacağınızı öğreneceksiniz:

  • Firebase Remote Config'ten 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üncelleyerek farklı modeller arasında geçiş yapmanıza veya uygulama güncellemesi yapmadan sistem talimatlarını değiştirmenize olanak tanır.
  • 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 oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz "Gemini API" sağlayıcı için arka uç hizmetini başlatma ve bir model örneği oluşturma hakkında bilgi veren Firebase AI Logic başlangıç kılavuzunu tamamlayın.

  • Firebase projenizde Google Analytics'i etkinleştirin ve SDK'sını uygulamanıza ekleyin (modele 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

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

  1. Firebase konsolunda Firebase projenizi açın. Ardından, gezinme menüsünde Çalıştır'ı genişletin ve Remote Config seçeneğini belirleyin.
  2. Sayfanın üst kısmındaki İstemci/Sunucu seçicisinde İstemci'nin seçili olduğundan emin olun.
  3. Yapılandırma oluştur'u (veya daha önce müşteri şablonları kullandıysanız Parametre ekle'yi) tıklayarak bir müşteri ş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ına bakın. Dize gemini-2.0-flash
    system_instructions Sistem talimatları, model davranışını etkilemek için son kullanıcıdan başka talimatlar gelmeden önce eklediğiniz bir "önsöz" 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ıldığında geçerlidir.
    Modele erişmek için konum bilgisini 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 us-central1
  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 Config kitaplığını ekleyin ve uygulamanızda Remote Config'ü ayarlayın.

Swift

Firebase AI Logic kurulumu kapsamında Firebase SDK'sını uygulamanıza eklemiş olsanız da Remote Config'ı da eklemeniz gerekir.

  1. Xcode'da, proje açıkken Dosya > Paket Bağımlılıkları Ekle'ye gidin.

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

  3. Proje gezgininde uygulamanızı > Hedefler > uygulamanızı seçin.

  4. Genel sekmesinde Çerçeveler, Kitaplıklar ve Yerleşik İçerik'e gidin.

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

  6. FirebaseRemoteConfig içe aktarma işlevini kodunuza ekleyin:

    import FirebaseRemoteConfig
    
  7. Uygulamanız için uygun sınıfta Firebase'i başlatın ve Remote Config öğesini ana uygulama mantığınıza ekleyin.

    Uygulamanın yeni değerleri gerçek zamanlı olarak alabilmesi için Remote Config ve Remote Config gerçek zamanlı dinleyicisini içe aktarma olarak ekleyin ve minimum getirme aralığı ekleyin:

    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 olur.

Kotlin

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.13.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 değişkenini başlatır ve minimum getirme aralığı eklersiniz:

    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üzeyi) Gradle dosyasına (genellikle app/build.gradle.kts veya app/build.gradle) ekleyin:

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.13.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 değişkenini başlatır ve minimum getirme aralığı eklersiniz:

    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 dosyasını içe aktarın:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Birincil işlevinizde 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ığı belirleyin:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

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

    flutter pub add firebase_remote_config
    
  2. ./lib/main.dart'ü açın ve içe aktarma işlemini, Firebase AI Logic'yi desteklemek için eklediğiniz diğer içe aktarma işlemlerinin ardından 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şkenleri 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. 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

  1. Bu talimatları uygulayarak Remote Config'ü Unity projenize ekleyin.

  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. 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ğ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 alamadığı durumlarda bile beklendiği gibi davranmasını sağlar.

Swift

  1. Firebase konsolunda Remote Config'u açın.

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

  3. İstendiğinde iOS için.plist'i etkinleştirin ve 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 Dosya Ekle'yi seçin.

    Sana Özel'i kullanıyorsanız VertexAISample'ı sağ tıklayın ve "VertexAISample"e Dosya Ekle'yi seçin.

  6. remote_config_defaults.plist dosyasını seçip Ekle'yi tıklayın.

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

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

  1. Firebase konsolundan Remote Config'u açın.

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

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

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

  5. Ana etkinlik dosyanızı, daha önce eklediğiniz configSettings öğesinden sonra varsayılanları eklemek için güncelleyin:

    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    

Java

  1. Firebase konsolunda Remote Config'u açın.

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

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

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

  5. Ana etkinlik dosyanızı, daha önce eklediğiniz configSettings öğesinden sonra varsayılanları eklemek için 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.0-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: 'us-central1',
};

Dart

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

remoteConfig.setDefaults(const {
  "model_name": "gemini-2.0-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": "us-central1"
});

Unity

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

await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.0-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", "us-central1" }
  }
);

4. Adım: Değerleri getirin ve etkinleştirin

Varsayılanları ayarladıktan sonra değerleri almak 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 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

  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 dağıtılmasını sağlamak için uygulamanıza bir gerçek zamanlı Remote Config dinleyici ekleyin.

Aşağıdaki kod, bir parametre değeri 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şleminin 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şleminin 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

Gerçek zamanlı Remote Config dinleyiciler web uygulamalarında 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 özgü 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ığında, sabit kodlanmış değerleri Remote Config kaynaklı değerlerle değiştirecek şekilde kodunuzu güncelleyin.

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. Firebase konsolundaki Remote Config sayfasından yapılandırmanızda değişiklik yapın, değişiklikleri yayınlayın ve sonucu doğrulayın.

Sonraki adımlar