Firebase Remote Config, Firebase Admin Python SDK'sı 6.7.0 ve sonraki sürümleri kullanarak sunucu tarafı yapılandırmayı destekler. Bu özellik, Remote Config'ı kullanarak sunucu tarafı uygulamaların davranışını ve yapılandırmasını dinamik olarak yönetmenize olanak tanır. Buna Cloud Functions gibi sunucusuz uygulamalar da dahildir.
Remote Config şablonundan türetilmiş istemciye özgü bir yapılandırma getiren Firebase istemci SDK'larının aksine, sunucu tarafı Remote Config SDK'sı Firebase'den tam bir Remote Config şablonu indirir. 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. Yanıtları, özel sinyallerde tanımlanan rastgele yüzdelere ve 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üvende kalmasını sağlamak amacıyla yapay zeka modeli parametrelerini, istemleri ve diğer entegrasyonları uzaktan yapılandırma gibi kullanım alanlarına olanak tanıyın.
- Ortamınızdaki değişikliklere veya LLM parametrelerinin ve model uç noktalarının güncellenmesi gibi diğer uygulama değişikliklerine yanıt olarak parametreleri 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 bir parametre değeri aldığını kaydedin ve bu bilgiyi Cloud Functions'te bir uygunluk doğrulama sistemi kapsamında 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 Python SDK'sını sunucunuza ekleyin.
1. adım: Firebase Admin Python 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. SDK'yı başlatmak ve Remote Config eklemek için:
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
2. adım: 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 tanımlayın. 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 sayede, Remote Config arka uç sunucusuyla bağlantısı kesintiye uğrasa bile uygulamanızın başarılı bir şekilde çalışması sağlanır.
Örneğin, üretken yapay zeka işlevini yöneten bir sunucu uygulaması yazıyorsanız varsayılan model adı, istem girişi ve üretken yapay zeka yapılandırması ayarlayabilirsiniz. Örneğin:
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 sorgusuna ön ek ekleme istemi | 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 alacak ve değerlerini kullanacak şekilde yapılandırın. Aşağıdaki adımlarda, Python uygulamanızın nasıl yapılandırılacağı açıklanmaktadır.
Şablona erişip şablonu yükleyin.
from firebase_admin import remote_config # Initialize server-side Remote Config template = remote_config.init_server_template() # Load the template from the backend asyncio.run(template.load())
Python'u Cloud Functions ile kullanıyorsanız şablonu tek adımda almak ve yüklemek için eşzamansız
get_server_template
işlevini kullanabilirsiniz:# Initialize server-side Remote Config template = remote_config.get_server_template()
Uygulamanızın, Remote Config arka uç sunucusuyla bağlantısı kesilse bile başarılı bir şekilde çalıştığından emin olmak için her parametrenin varsayılan değerini uygulamanıza ekleyin. Bunu yapmak için
init_server_template
veyaget_server_template
şablon işlevinizin içine birdefaultConfig
ekleyin:template = remote_config.init_server_template({ 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 asyncio.run(template.load())
Bir şablonu başlatmanın diğer yolu, gerekli sunucu şablonunu almak için
get_server_template
işlevini kullanmaktır.template.to_json
işlevini kullanarak bu şablonu JSON biçimine dönüştürebilirsiniz. Bu JSON şablonu yerel olarak depolanabilir. Ardından,init_server_template
işlevini kullanarak bu JSON şablonunu başlatabilirsiniz.Şablon yüklendikten sonra şablondaki parametreleri ve değerleri içe aktarmak için
template.evaluate()
simgesini kullanın:# Add template parameters to config config = template.evaluate()
İsteğe bağlı olarak, Remote Config şablonunuzda koşullar belirlerseniz istediğiniz değerleri tanımlayıp sağlayın:
- Yüzde koşulları kullanıyorsanız koşullarınızı değerlendirmek için kullanmak istediğiniz
randomizationId
değerinitemplate.evaluate()
işlevine ekleyin. - Özel sinyaller kullanıyorsanız özellikleri ve değerlerini tanımlayın. Özel sinyaller, Firebase Yönetici Python SDK'sı 6.7.0 ve sonraki sürümlerde kullanılabilir.
Örneğin, sunucunuzla iletişime geçen her kullanıcının uygun rastgele gruplara eklenmesini sağlamak için
randomizationId
olarak bir Firebase kurulum kimliği veya kullanıcı kimliği, belirli istemci sürümlerini hedeflemek için özel sinyal olarakversion
ve istemci platformunu hedeflemek için özel sinyal olarakplatform
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. config = template.evaluate({ 'randomizationId': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })
- Yüzde koşulları kullanıyorsanız koşullarınızı değerlendirmek için kullanmak istediğiniz
Ardından, ihtiyacınız olan parametre değerlerini yapılandırma sabitinden çıkarın. Remote Config içindeki değerleri beklenen biçime dönüştürmek için
getters
'ü kullanın. Aşağıdaki türler desteklenir:- Boole:
get_bool
- Nesne:
get_value
- Numara:
get_number
- Dize:
get_string
Örneğin, sunucunuzda Vertex AI'ı uygularken model ve model parametrelerini değiştirmek istiyorsanız
model_name
vegeneration_config
parametrelerini yapılandırabilirsiniz. Remote Config değerlerine nasıl erişebileceğinize dair bir örnek aşağıda verilmiştir:# Replace defaults with values from Remote Config. generation_config = json.loads(config.get_string('generation_config')) is_ai_enabled = config.get_bool('is_ai_enabled') model = config.get_string('model_name') # Generates a prompt comprised of the Remote Config # parameter and prepends it to the user prompt. prompt = f"{config.get_string('preamble_prompt')}{req.args.get('prompt')}"
- Boole:
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 dosyasında sunucuya özgü 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:
- Firebase konsolu Remote Config parametreleri sayfasını açın ve İstemci/Sunucu seçiciden Sunucu'yu seçin.
- Uygulamanızda tanımladığınız parametrelerle aynı ad ve veri türlerine sahip Remote Config parametreleri tanımlayın ve değerler sağlayın. Şablonu getirip değerlendirdiğinizde ve bu değerleri değişkenlerinize atadığınızda bu değerler, 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, değerleri rastgele bir örnekleme veya tanımladığınız özel sinyallere sürekli olarak uygulayacak koşullar belirleyin. Koşullar hakkında daha fazla bilgi için Koşul kuralı türleri başlıklı makaleyi inceleyin.
- Parametre ekleme işlemini tamamladığınızda Değişiklikleri yayınla'yı tıklayın.
- Değişiklikleri inceleyin 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 hafif ve etkinlik odaklı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 diyaloğu içeren bir uygulamanız varsa 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 kullanma başlıklı makaleyi inceleyin.
Uygulamanızı Cloud Functions ile dağıtma hakkında daha fazla bilgi edinmek için Başlayın: İlk işlevlerinizi yazın, test edin ve dağıtın başlıklı makaleyi inceleyin.
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ıç: Cloud Run'a Python hizmeti dağıtma başlıklı makaledeki kılavuzu uygulayın.
Cloud Run ve Cloud Functions için en iyi kullanım alanları hakkında daha fazla bilgi edinmek isterseniz Cloud Functions ve Cloud Run: Hangisini ne zaman kullanacağınız başlıklı makaleyi inceleyin.