Sunucu ortamlarında Remote Config'i kullanın

Firebase Remote Config artık Firebase Admin Node.js SDK v12.1.0+ kullanan sunucu tarafı yapılandırmasını destekliyor. Bu yeni özellik sayesinde Remote Config'i kullanarak sunucu tarafı uygulamaların davranışını ve yapılandırmasını dinamik olarak yönetebilirsiniz. Buna Cloud Functions gibi sunucusuz uygulamalar da dahildir.

Remote Config şablonundan istemciye özel bir yapılandırmayı türeten Firebase istemci SDK'larının aksine sunucu tarafı Remote Config SDK, Firebase'den eksiksiz bir Remote Config şablonu indirir. Daha sonra sunucunuz, gelen her istekle şablonu değerlendirebilir ve çok düşük gecikmeyle özelleştirilmiş bir yanıt sunmak için kendi mantığını kullanabilir.

Sunucu tarafı Remote Config ile şunları yapabilirsiniz:

  • Sunucunuzda çalışan veya sunucunuzda çalışan uygulamalar için yapılandırma parametreleri tanımlayarak API anahtarlarınızın güvende kalmasını sağlamak için AI modeli parametrelerini, istemleri ve diğer entegrasyonları uzaktan yapılandırma gibi kullanım alanlarına izin verin.
  • Parametreleri, ortamınızdaki değişikliklere veya LLM parametrelerini ve model uç noktalarını güncelleme gibi diğer uygulama değişikliklerine göre dinamik olarak 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.

Cloud Run, Cloud Functions veya kendiliğinden barındırılan sunucu ortamlarına sunucu tarafı Remote Config'i dağıtabilirsiniz.

Başlamadan önce

Firebase projesi oluşturmak, hizmet hesabı oluşturmak 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

Admin SDK'yı parametre olmadan başlattığınızda SDK, Google Uygulama Varsayılan Kimlik Bilgileri'ni kullanır ve GOOGLE_APPLICATION_CREDENTIALS ortam değişkeninden seçenekleri okur. Örneğin, SDK'yı başlatmak ve Remote Config'i 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 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 bunların varsayılan değerlerinin ne olması gerektiğini düşünün. Bu, Remote Config arka uç sunucusuyla olan bağlantısı kesilse bile uygulamanızın başarıyla çalışmasını sağlar.

Örneğin, bir üretken yapay zeka işlevini yöneten bir sunucu uygulaması yazıyorsanız aşağıdakiler gibi bir varsayılan 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'si adı Dize gemini-1.5-pro
preamble_prompt Kullanıcının sorgusunun başına 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 özgü 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şin ve şablonu 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 şablonu tek bir adımda getirip yüklemek için eşzamansız getServerTemplate kullanabilirsiniz:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Remote Config arka uç sunucusu ile olan bağlantısı kesilse bile uygulamanızın başarıyla çalışmasını sağlamak için uygulamanıza her parametre için varsayılan değerleri ekleyin. Bunu yapmak için initServerTemplate veya getServerTemplate şablon işlevinizin içine bir 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() öğesini kullanın:

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

    Örneğin, sunucunuzla iletişim kuran her kullanıcının uygun rastgele gruba eklenmesini sağlamak için randomizationId olarak bir Firebase yükleme kimliği veya bir kullanıcı kimliği ayarlayabilirsiniz. Aşağıdaki örnek temel bir örnektir ancak kullanıcılara yüzde koşul gruplarındaki üyeliklerine göre Remote Config'den tutarlı değerler sunulduğundan emin olmak amacıyla sunucunuzu farklı istemci istekleri için farklı randomizationIds oluşturacak şekilde yapılandırabilirsiniz.

    Yüzde koşulları hakkında daha fazla bilgi için Rastgele yüzdeye göre kullanıcı bölümüne bakın.

    // 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. Daha sonra, ihtiyaç duyduğunuz parametre değerlerini yapılandırma sabitinden çıkarın. Remote Config'deki değerleri beklenen biçime dönüştürmek için getters hizmetini kullanın. Aşağıdaki türler desteklenir:

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

    Örneğin, sunucunuzda Vertex AI uyguluyorsanız ve model ile model parametrelerini değiştirmek istiyorsanız model_name ve generationConfig için parametreleri yapılandırmak isteyebilirsiniz. Aşağıda, Remote Config'in değerlerine nasıl erişebileceğinizi gösteren bir örnek 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. Sunucunuz, sunucusuz bir ortam yerine uzun çalışıyorsa Remote Config sunucusundan düzenli aralıklarla en güncel şablonu aldığınızdan emin olmak için şablonu yeniden yüklemek için setInterval kullanın.

4. Adım: Remote Config'de sunucuya özel parametre değerleri ayarlayın

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

Sunucuya özgü Remote Config şablonu oluşturmak için:

  1. Firebase konsolunun Remote Config parametreleri sayfasını açın ve İstemci/Sunucu seçiciden Sunucu'yu seçin.
  2. Remote Config parametrelerini uygulamanızda tanımladığınız parametrelerle aynı adlara ve veri türlerine sahip olarak tanımlayıp 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ırma bölümünde ayarladığınız defaultConfig değerini geçersiz kılar.
  3. İsteğe bağlı olarak, bir değeri rastgele bir örnek örneğine kalıcı olarak uygulamak için yüzde koşulları ayarlayın. Yüzde koşulları hakkında daha fazla bilgi için Rastgele yüzdeyle kullanıcı bölümüne bakın.
  4. Parametreleri eklemeyi 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 işlevi olarak veya Cloud Run'ı kullanarak dağıtın

Sunucu uygulamanız hafif ve olay odaklıysa kodunuzu bir Cloud Functions olarak dağıtmayı düşünmelisiniz. Örneğin, Google AI ve Vertex AI gibi üretken yapay zeka API'leri tarafından desteklenen karakter diyalogları içeren bir uygulamanız olduğunu varsayalım. Bu durumda, LLM sunum mantığınızı, uygulamanızın isteğe bağlı olarak çağırdığı bir Cloud Functions işlevinde barındırabilirsiniz. Uygulamanızı bir Cloud Functions işlevi olarak nasıl dağıtacağınızı Başlarken: İlk işlevlerinizi yazma, test etme ve dağıtma bölümünden öğrenebilirsiniz.

Uygulamanızın uzun süre çalıştırılması gerekiyorsa (örneğin, öğe içeren bir web uygulaması) Cloud Run'ı kullanmayı düşünebilirsiniz. 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 Cloud Functions'ın en iyi kullanım alanları hakkında daha fazla bilgi edinmek için Cloud Functions ve Cloud Run: ne zaman kullanılır? başlıklı makaleyi inceleyin.