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.
- Hangi istemcilerin parametre değeri aldığını kaydedin ve bunu Cloud Functions'da yararlanma hakkı doğrulama sisteminin bir parçası olarak kullanın.
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.
Ş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();
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
veyagetServerTemplate
şablon işlevinizin içine birdefaultConfig
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();
Ş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();
İ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ğinizrandomizationId
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 });
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
vegenerationConfig
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}`;
- Boole:
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:
- Firebase konsolunun Remote Config parametreleri sayfasını açın ve İstemci/Sunucu seçiciden Sunucu'yu seçin.
- 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. - İ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.
- Parametreleri eklemeyi tamamladığınızda, Değişiklikleri yayınla'yı tıklayın.
- 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 olay odaklıysa kodunuzu Cloud Functions'ı kullanarak dağıtmayı düşünmelisiniz. Ö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 sunma mantığınızı, uygulamanızın isteğe bağlı olarak çağırdığı bir işlevde barındırabilirsiniz.
Sunucu tarafı Remote Config ile 2. nesil Cloud Functions kullanan bir çözüm üzerinde çalışmak için Cloud Functions ve Vertex AI ile sunucu tarafı Remote Config'i kullanma bölümüne bakın.
Uygulamanızı Cloud Functions ile dağıtma hakkında daha fazla bilgi edinmek için Başlama: İlk işlevlerinizi yazma, test etme ve dağıtma bölümüne bakın.
Remote Config ve Uygulama Kontrolü ile Vertex AI Gemini API'yi çağırma başlıklı makalede sunucu tarafı Remote Config ve Uygulama Kontrolü ile birlikte örnek bir çağrılabilir işlev deneyin.
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.