Sunucu ortamlarında Remote Config'i kullanın

Firebase Remote Config artık Firebase Yöneticisi Node.js SDK'sı v12.1.0+. Bu yeni özellik sayesinde sunucu tarafı yapılandırmasının davranış ve yapılandırmasını dinamik olarak Remote Config kullanan uygulamalar. Buna, sunucusuz uygulamalar dahildir Cloud Functions gibi.

İstemciye özel yapılandırma getiren Firebase istemci SDK'larından farklı olarak Remote Config şablonundan, sunucu tarafında türetilir Remote Config SDK, eksiksiz Remote Config şablonunu indiriyor Firebase'den geliyor. Sunucunuz daha sonra gelen her istekle şablonu değerlendirebilir ve çok düşük gecikmeli özelleştirilmiş bir yanıt sunmak için kendi mantığını kullanabilir.

Sunucu tarafı Remote Config ile şunları yapabilirsiniz:

  • üzerinde çalışan veya erişilen uygulamalar için yapılandırma parametrelerini tanımlayın uzaktan yapılandırma gibi kullanım alanlarına, Yapay zeka modeli parametreleri, istemler ve diğer entegrasyonlar sayesinde, API anahtarları güvende kalır.
  • Parametreleri ortamınızdaki değişikliklere göre dinamik olarak ayarlayın veya LLM parametrelerini ve model uç noktalarını güncelleme gibi diğer uygulama değişiklikleri hakkında bilgi edinebilirsiniz.
  • 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 bu bilgiyi, bir uygunluk doğrulama sistemi kapsamında Cloud Functions'te kullanın.

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

Başlamadan önce

Firebase Admin SDK'sını sunucunuza ekleme başlıklı makaledeki talimatları uygulayarak bir Firebase projesi oluşturun, bir hizmet hesabı oluşturun ve Firebase Admin Node.js SDK'sını sunucunuza ekleyin.

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 Uygulama Varsayılan Kimlik Bilgileri'ni kullanır ve seçenekleri GOOGLE_APPLICATION_CREDENTIALS ortam değişkeninden okur. Örneğin, 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();

2. Adım: Sunucu uygulamanız için varsayılan parametre değerlerini tanımlayın

Uygulamanızda dinamik olarak güncellemek istediğiniz değişkenleri belirleyin Remote Config Daha sonra, ve varsayılan değerlerinin ne olması gerektiği. Böylece proje daha ile bağlantısı olsa bile başarılı bir şekilde çalışır. Remote Config arka uç sunucusu kesintiye uğradı.

Örneğin, Search Console'da çalışan bir üretken yapay zeka işlevi için varsayılan bir model adı, istem önsözü veya ve aşağıdaki gibi bir üretken yapay zeka yapılandırması içerir:

Parametre adı Açıklama Tür Varsayılan değer
model_name Model API adı Dize gemini-1.5-pro
preamble_prompt Başa ekleme istemi kullanıcının sorgu 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 Gönderilecek parametreler açıklamaya 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 özgü Remote Config şablonunu alacak ve değerlerini kullanacak şekilde yapılandırın. İlgili içeriği oluşturmak için kullanılan Aşağıdaki adımlar Node.js uygulamanızı nasıl yapılandıracağınızı açıklar.

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

    Cloud Functions içinde Node.js kullanıyorsanız öğesini getirmek ve yüklemek için eşzamansız getServerTemplate kullanabilir oluşturabilirsiniz:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. ile bağlantısı olsa bile uygulamanızın başarılı bir şekilde çalıştığından emin olmak için Remote Config arka uç sunucusu kesintiye uğradı, her parametreyi uygulamanıza ekleyebilirsiniz. Bunu yapmak içindefaultConfig initServerTemplate veya getServerTemplate şablon işlevi:

    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 template.evaluate() öğesini kullanarak parametreleri ve değerleri girin:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. İsteğe bağlı olarak, yüzde koşullar Remote Config şablonunuzda randomizationId değerini tanımlayın ve sağlayın koşullarınızı değerlendirmek için kullanmak istediğiniz template.evaluate() işlevi.

    Örneğin, bir Firebase kurulumu Kimlik kullanıcı kimliği yerine randomizationId veya User-ID olarak Sunucunuzun uygun rastgele gruba eklendiğinden emin olun. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnek temel bir örnektir, ancak farklı bir istemci için farklı randomizationIds oluşturmak üzere sunucuya kullanıcılara sağlandığından emin olmak için Yüzde durumundaki üyelik durumuna göre Remote Config gruplar.

    Yüzde koşulları hakkında daha fazla bilgi için Analizler'de rastgele yüzdeye göre kullanıcı başlıklı makaleyi inceleyin.

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  5. Ardından, yapılandırma sabit değerinden ihtiyacınız olan parametre değerlerini çıkarın. Tekliflerinizi otomatikleştirmek ve optimize etmek için Remote Config değerlerinden beklenen değerleri yayınlamak için getters biçimindedir. Şu türler desteklenir:

    • Boole: getBoolean
    • Nesne: getValue
    • Sayı: getNumber
    • Dize: getString

    Örneğin projenin zamanlamasıyla ilgili Vertex AI'ı kullanarak sunucu ve model ve model parametrelerini değiştirmek istiyorsanız, model_name ve generationConfig parametrelerini yapılandır. Bir Remote Config değerlerine nasıl erişebileceğinizi gösteren bir örnek:

    // 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. Sunucunuz sunucusuz bir ortam yerine uzun süredir çalışıyorsa Remote Config sunucusundan düzenli olarak en güncel şablonu getirdiğinizden emin olmak için şablonu düzenli olarak yeniden yüklemek üzere setInterval kullanın.

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 parametrelerini açın ve İstemci/Sunucu seçicisi, Sunucu'yu seçin.
  2. Remote Config parametrelerini aşağıdakilerle aynı adlara ve veri türlerine sahip olarak tanımlayın: uygulamanızda tanımladığınız ve değer sağlayan parametreler. Şablonu getirip değerlendirdiğinizde ve bu değerleri değişkenlerinize atadığınızda bu değerler, Sunucu uygulamanızı yapılandırın bölümünde ayarladığınız defaultConfig değerini geçersiz kılar.
  3. İsteğe bağlı olarak, rastgele örneğidir. Yüzde hakkında daha fazla bilgi için görmek için Rastgele kullanıcı yüzde oranı.
  4. Parametre eklemeyi tamamladığınızda Değişiklikleri yayınla'yı tıklayın.
  5. Değişiklikleri gözden geçirin ve Değişiklikleri yayınla'yı tekrar tıklayın.

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

Sunucu uygulamanız hafifse ve etkinliğe dayalıysa, kodunuzu Cloud Functions. Örneğin, üretken yapay zeka ile desteklenen karakter diyalogları içeren bir uygulamanız olduğunu varsayalım API (örneğin, Google AI veya Vertex AI). Bu örnekte, müşterilerinize LLM sunma mantığınızı, uygulamanızın isteğe bağlı olarak çağırdığı bir işleve yerleştirin.

Uygulamanızın uzun süre çalıştırılması gerekiyorsa (ör. öğeleri olan bir web uygulaması) Cloud Run'u kullanabilirsiniz. Sunucu uygulamanızı Cloud Run ile dağıtmak için Hızlı başlangıç: Node.js hizmetini Cloud Run'a dağıtma başlıklı makaledeki kılavuzu uygulayın.

Cloud Run ve diğer platformlara yönelik en iyi kullanım alanları hakkında daha fazla bilgi Cloud Functions için Cloud Functions - Cloud Run: ne zaman kullanılmalı? bölümünü inceleyin. bir üzerinde diğer.