Firebase uygulamasında Vertex {6/}AI'yı Firebase Remote Config ile dinamik olarak güncelleme

Vertex AI in Firebase SDK'sı kullanarak uygulamanızdan Gemini API çağrısı yapılırken isteğiniz, üretken yapay zeka yanıtlarını kontrol eden bir dizi parametre içeriyor. 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, bu değişiklikleri isteğe bağlı olarak veya çeşitli senaryoları göz önünde bulundurarak değiştirebilirsiniz:

  • Yeni bir uygulama yayınlamadan üretken yapay zeka modelinizi 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ı sağlanmakta ve Remote Config'ün üretken yapay zeka uygulamanıza 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üncellemesi 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 ConfigVertex AI in Firebase ile birlikte kullanmanızı öneririz:

  • Uygulama güncellemesi olmadan en son 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 modelinin en son sürümüne kullanıma sunulduğu anda yükseltme yapabilirsiniz.
  • Uygulama güncellemesi olmadan sistem talimatlarını ve güvenlik ayarlarını güncelleyin: Sistem talimatlarını ve güvenlik ayarlarını, dağıtımdan sonra keşfederseniz istediğiniz zaman değiştirebilmek için 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 ConfigDağıtım özelliğini kullanın.

Remote Config için üretken yapay zeka uygulamalarının 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 istemci konumuna göre ayarlama: Remote Config koşullarını kullanarak modelin konumunu istemcinin algılanan konumuna göre ayarlayı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ş yapabilir veya farklı modelleri farklı kullanıcı segmentlerine dağıtabilirsiniz.
  • 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 kullanırken 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.

  • Deneyimleri her kullanıcı için kişiselleştirin: Her kullanıcı için optimum üretken yapay zeka ayarlarını otomatik olarak belirlemek üzere Remote Configkişiselleştirmeyi kullanın.

  • Maliyetleri kontrol edin: Hangi üretken yapay zeka modellerinin çağrılacağını ve ne sıklıkta kullanılacağını uzaktan ayarlayın. Ayrıca, 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: iOS, Android ve Flutter uygulamalarınızda A/B Testing ile Remote Config'i kullanarak farklı kullanıcı segmentlerinde üretken yapay zeka parametrelerinde yapılan değişiklikleri test edin. Bu değişikliklerin, elde tutma ve gelir gibi önemli metrikleri nasıl etkilediğini öğrenin.

Ü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 Vertex AI in Firebase SDK'sını kullanan parametreleri dinamik olarak güncellemek için Firebase Remote Config'ü kullanacaksınız. Bu derslere katılarak:

  • 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ü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, Android platformları için uygulama geliştirmek üzere Android Studio'yu kullanmaya aşina olduğunuz varsayılır. Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

  • Vertex AI in Firebase SDK'sı için başlangıç kılavuzunu tamamlayın. Aşağıdakilerin tümünü yaptığınızdan emin olun:

    1. Blaze fiyatlandırma planını kullanma ve gerekli API'leri etkinleştirme dahil olmak üzere yeni veya mevcut bir Firebase projesi oluşturun.
    2. Uygulamanızı kaydettirme ve Firebase yapılandırmanızı uygulamanıza ekleme dahil olmak üzere uygulamanızı Firebase'e bağlayın.
    3. SDK'yı ekleyin ve uygulamanızda Vertex AI hizmetini ve üretken modeli başlatın.
  • Projenizde Google Analytics'i etkinleştirin ve SDK'sını uygulamanıza ekleyin (hizmetin ve modelin konumunu istemci cihazın konumuna göre ayarlama gibi koşullu hedefleme için gereklidir).

1. Adım: Parametre değerlerini Firebase konsolunda 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 ve gezinme menüsünden Çalıştır'ı genişletip Remote Config seçeneğini belirleyin.
  2. Remote Config sayfasının üst kısmındaki İstemci/Sunucu seçicisinde İstemci'nin seçili olduğundan emin olun.
    • Remote Config istemci şablonlarını ilk kez kullanıyorsanız Yapılandırma Oluştur'u tıklayın. İlk parametrenizi oluşturun bölmesi görünür.
    • Remote Config şablonlarını ilk kez kullanmıyorsanız Parametre ekle'yi tıklayın.
  3. Aşağıdaki Remote Config parametrelerini tanımlayın:

    Parametre adı Açıklama Tür Varsayılan değer
    model_name Model adı. Kodunuzda kullanılacak model adlarının güncel listeleri için Kullanılabilir model adları bölümüne bakın. Dize gemini-1.5-flash
    system_instructions Sistem talimatları, belirli ihtiyaçlar ve kullanım alanlarına bağlı olarak model davranışını etkilemek için modelin son kullanıcıdan gelen ek talimatlarla karşılaşmadan önce eklediğiniz bir "ön parça"dır. 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 İsteğe bağlı olarak, Vertex AI hizmetini çalıştırmak ve bir 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 us-central1
  4. 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 SDK'sını ekleyin ve ilk kullanıma hazırlayın

Remote Config bağımlılıklarını ekleyin ve uygulamanızda Remote Config'ü ayarlayın.

  1. Modül (uygulama düzeyinde) Gradle dosyanıza Remote Config bağımlılığını ekleyin (genellikle app/build.gradle.kts veya app/build.gradle):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Ana uygulama mantığınıza Remote Config ekleyin. Burada Remote Config öğesini başlatır ve minimum getirme aralığı eklersiniz:

    Kotlin+KTX

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

    Java

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

Bu örnekte varsayılan getirme aralığı 3.600 saniyedir ancak geliştirme sırasında kodunuzda nispeten düşük bir minimum getirme aralığı belirlemenizi öneririz.

3. Adım: Uygulama içi parametre değerlerini ayarlayın

Remote Config nesnesinde uygulama içi varsayılan parametre değerlerini ayarlamanız gerekir. Bu, uygulamanızın Remote Config hizmetinden değer alamadığı durumlarda bile beklendiği gibi davranmasını sağlar.

  1. Firebase konsolundan Remote Config'ı 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 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:

    Kotlin+KTX

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

    Java

    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

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:

Kotlin+KTX

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

5. adım: Gerçek zamanlı bir 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 gerçek zamanlı bir Remote Config dinleyici ekleyin.

Aşağıdaki kod, bir parametre değeri değiştiğinde Remote Config nesnesini günceller. İsteğe bağlı olarak, addOnCompleteListener etkinleştirme işleminin içinde bir işlem de yapılandırabilirsiniz:

Kotlin+KTX

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

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

6. adım: Remote Config değerlerini Vertex AI değişkenlerine atayın

Remote Config tamamen yapılandırıldığına göre, sabit kodlu değerleri Remote Config kaynaklı değerlerle değiştirmek için kodunuzu güncelleyin.

Konum, model adı, sistem talimatları ve kullanıcı istemi için sabit kodlanmış değerleri Remote Config kaynağından alınan değerlerle değiştirin.

Kotlin+KTX

// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)

Java

// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
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);

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