Sunucu ortamlarında Remote Config'i kullanın


Firebase Remote Config, Firebase Admin Node.js SDK v12.1.0+ kullanılarak sunucu tarafı yapılandırmasını destekler. Bu özellik, Remote Config kullanarak sunucu tarafı uygulamalarının davranışını ve yapılandırmasını dinamik olarak yönetmenizi sağlar. Cloud Functions gibi sunucusuz uygulamalar bu kapsamda yer alır.

Firebase istemci SDK'ları, Remote Config şablonundan türetilen istemciye özel bir yapılandırmayı getirirken sunucu tarafı Remote Config SDK'sı, Firebase'den eksiksiz bir Remote Config şablonu indirir. Sunucunuz daha sonra şablonu her gelen istekle birlikte değerlendirebilir ve çok düşük gecikme süresiyle özelleştirilmiş bir yanıt sunmak için kendi mantığını kullanabilir. Yanıtları rastgele yüzdelere ve özel sinyallerde tanımlanan müşteri özelliklerine göre kontrol etmek ve özelleştirmek için koşulları kullanabilirsiniz.

Sunucu tarafı Remote Config ile şunları yapabilirsiniz:

  • Sunucunuzda çalışan veya sunucunuz üzerinden erişilen uygulamalar için yapılandırma parametreleri tanımlayarak API anahtarlarınızın güvenliğini sağlamak amacıyla uzaktan yapay zeka modeli parametrelerini ve istemlerini yapılandırma gibi kullanım alanlarına ve diğer entegrasyonlara olanak tanıyın.
  • Ortamınızdaki değişikliklere veya diğer uygulama değişikliklerine (ör. LLM parametrelerini ve model uç noktalarını güncelleme) yanıt olarak parametreleri dinamik bir şekilde ayarlayın.
  • Sunucunuzun çağırdığı API'leri uzaktan güncelleyerek maliyetleri kontrol edin.
  • Sunucunuza erişen istemciler için anında özel yapılandırmalar oluşturun.
  • Hangi istemcilerin bir parametre değeri aldığını kaydedin ve bunu hak doğrulama sisteminin bir parçası olarak Cloud Functions içinde kullanın.

Sunucu tarafı Remote Config'ı Cloud Run'a, Cloud Functions veya kendi bünyesinde barındırılan sunucu ortamlarına dağıtabilirsiniz.

Başlamadan önce

Firebase projesi oluşturmak, hizmet hesabı ayarlamak ve Firebase Admin Node.js SDK'sını sunucunuza eklemek için Firebase Admin SDK'yı sunucunuza ekleme bölümündeki talimatları uygulayın.

1. adım: Firebase Admin Node.js SDK'sını başlatın ve API isteklerini yetkilendirin

Yönetici SDK'sını parametre olmadan başlattığınızda SDK, Google Application Default Credentials'ı kullanır ve seçenekleri GOOGLE_APPLICATION_CREDENTIALS ortam değişkeninden okur. SDK'yı başlatmak ve Remote Config eklemek için:

import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";

// Initialize Firebase
const firebaseApp = initializeApp();

Adım 2: Sunucu uygulamanız için varsayılan parametre değerlerini belirleyin

Uygulamanızda Remote Config ile dinamik olarak güncellemek istediğiniz değişkenleri belirleyin. Ardından, uygulamanızda hangi değişkenlerin varsayılan olarak ayarlanması gerektiğini ve varsayılan değerlerinin ne olması gerektiğini düşünün. Bu, Remote Config arka uç sunucusuyla bağlantısı kesilse bile uygulamanızın başarıyla çalışmasını sağlar.

Örneğin, üretken yapay zeka işlevini yöneten bir sunucu uygulaması yazıyorsanız aşağıdaki gibi varsayılan bir model adı, istem önsözü ve üretken yapay zeka yapılandırması ayarlayabilirsiniz:

Parametre adı Açıklama Tür Varsayılan değer
model_name Model API adı Dize gemini-2.0-flash
preamble_prompt Kullanıcının sorgusunun başına eklenecek istem Dize I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!
generation_config Modele gönderilecek parametreler JSON {"stopSequences": ["I hope this helps"], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}

3. adım: Sunucu uygulamanızı yapılandırın

Remote Config ile kullanmak istediğiniz parametreleri belirledikten sonra uygulamanızı varsayılan değerleri ayarlayacak, sunucuya özel Remote Config şablonunu getirecek ve değerlerini kullanacak şekilde yapılandırın. Aşağıdaki adımlarda, Node.js uygulamanızı nasıl yapılandıracağınız açıklanmaktadır.

  1. Şablona erişip yükleyin.

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = rc.initServerTemplate();
    
    // Load Remote Config
    await template.load();
    

    Node.js'yi Cloud Functions içinde kullanıyorsanız şablonu tek bir adımda başlatmak ve yüklemek için eşzamansız getServerTemplate işlevini kullanabilirsiniz:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Uygulamanızın Remote Config arka uç sunucusuna bağlantısı kesilse bile başarılı bir şekilde çalışmasını sağlamak için her parametreye varsayılan değerler ekleyin. Bunu yapmak için initServerTemplate veya getServerTemplate şablon işlevinizin içine defaultConfig ekleyin:

    const template = rc.initServerTemplate({
      defaultConfig: {
        model_name: "gemini-pro",
        generation_config: '{"stopSequences": [], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}',
        preamble_prompt: "I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!"
      },
    });
    
    // Load Remote Config
    await template.load()
    
  3. Şablon yüklendikten sonra, şablondaki parametreleri ve değerleri içe aktarmak için template.evaluate() simgesini kullanın:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. İsteğe bağlı olarak, Remote Config şablonunuzda koşullar ayarlarsanız istediğiniz değerleri tanımlayın ve sağlayın:

    • Yüzde koşulları kullanıyorsanız template.evaluate() işlevi içinde koşullarınızı değerlendirmek için kullanmak istediğiniz randomizationId değerini ekleyin.
    • Özel sinyaller kullanıyorsanız özellikleri ve değerlerini tanımlayın. Özel sinyaller, Firebase Admin Node.js SDK 12.5.0 ve sonraki sürümlerde kullanılabilir.

    Örneğin, sunucunuza ulaşan her kullanıcının uygun rastgele gruba eklenmesini sağlamak için Firebase yükleme kimliğini randomizationId olarak, belirli istemci sürümlerini hedeflemek için version'ı özel sinyal olarak ve istemci platformunu hedeflemek için platform'ı özel sinyal olarak ayarlayabilirsiniz.

    Koşullar hakkında daha fazla bilgi için Koşul kuralı türleri başlıklı makaleyi inceleyin.

    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId} and version.
    const config = template.evaluate({
      randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04",
      version: "1.0",
      platform: "Android"
    });
    
    
  5. Ardından, yapılandırma sabitinden ihtiyacınız olan parametre değerlerini ayıklayın. Remote Config değerlerini beklenen biçime dönüştürmek için getters işlevini kullanın. Aşağıdaki türler desteklenir:

    • Boole: getBoolean
    • Nesne: getValue
    • Numara: getNumber
    • Dize: getString

    Örneğin, sunucunuzda Vertex AI'ı uyguluyorsanız ve modeli ve model parametrelerini değiştirmek istiyorsanız model_name ve generation_config için parametreleri yapılandırmak isteyebilirsiniz. Remote Config değerlerine nasıl erişebileceğinize dair bir örnek aşağıda verilmiştir:

    // Replace defaults with values from Remote Config.
    const generationConfig =
      JSON.parse(
        config.getString('generation_config'));
    
    const is_ai_enabled = config.getBool('is_ai_enabled');
    
    const model = config.getString('model_name');
    
    // Generates a prompt comprised of the Remote Config
    // parameter and prepends it to the user prompt
    const prompt = `${config.getString('preamble_prompt')} ${req.query.prompt}`;
    
  6. Sunucusuz bir ortamın aksine sunucunuz uzun süredir çalışıyorsa setInterval sunucusundan en güncel şablonu aldığınızı doğrulamak için şablonu düzenli olarak yeniden yüklemek üzere setInterval öğesini kullanın.Remote Config

4. adım: Remote Config içinde sunucuya özel parametre değerlerini ayarlayın

Ardından, bir sunucu Remote Config şablonu oluşturun ve uygulamanızda kullanılacak parametreleri ve değerleri yapılandırın.

Sunucuya özel bir Remote Config şablonu oluşturmak için:

  1. Firebase konsolu Remote Config parametreleri sayfasını açın ve İstemci/Sunucu seçiciden Sunucu'yu seçin.
  2. Uygulamanızda tanımladığınız parametrelerle aynı adlara ve veri türlerine sahip Remote Config parametreleri tanımlayın ve değerler sağlayın. Bu değerler, şablonu getirip değerlendirirken ve bu değerleri değişkenlerinize atarken Sunucu uygulamanızı yapılandırın bölümünde ayarladığınız defaultConfig değerlerini geçersiz kılar.
  3. İsteğe bağlı olarak, değerleri rastgele bir örnekleme veya tanımladığınız özel sinyallere kalıcı olarak uygulamak için koşullar belirleyin. Koşullar hakkında daha fazla bilgi için Koşul kuralı türleri başlıklı makaleyi inceleyin.
  4. Parametre ekleme işlemini tamamladığınızda Değişiklikleri yayınla'yı tıklayın.
  5. Değişiklikleri inceleyin ve tekrar Değişiklikleri yayınla'yı tıklayın.

5. adım: Cloud Functions veya Cloud Run ile dağıtın

Sunucu uygulamanız hafif ve etkinliğe dayalıysa kodunuzu Cloud Functions kullanarak dağıtmayı düşünebilirsiniz. Örneğin, üretken yapay zeka API'si (ör. Google AI veya Vertex AI) tarafından desteklenen karakter diyalogları içeren bir uygulamanız olduğunu varsayalım. Bu durumda, LLM hizmeti sunma mantığınızı uygulamanızın isteğe bağlı olarak çağırdığı bir işlevde barındırabilirsiniz.

Sunucu tarafından oluşturulan bir web uygulaması oluşturuyorsanız, App Hosting popüler web çerçevelerini destekler.

Aksi takdirde Cloud Run'ı kullanabilirsiniz. Sunucu uygulamanızı Cloud Run ile dağıtmak için Hızlı başlangıç kılavuzu: Cloud Run'a Node.js hizmeti dağıtma başlıklı kılavuzu inceleyin.

Cloud Run ve Cloud Functions için en iyi kullanım durumları hakkında daha fazla bilgi için Cloud Functions ve Cloud Run karşılaştırması: Hangisi ne zaman kullanılır? başlıklı makaleye bakın.