Firebase Remote Config, Firebase Admin Python SDK v6.7.0+ kullanılarak 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ö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 koşullara göre kontrol edip özelleştirmek için özel sinyallerde tanımlanan müşteri özelliklerini kullanabilirsiniz.
Sunucu tarafı Remote Config ile şunları yapabilirsiniz:
- Sunucunuzda çalışan veya sunucunuz üzerinden erişilen uygulamalar için yapılandırma parametreleri tanımlayın. Bu sayede, API anahtarlarınızın güvenliğini sağlamak için yapay zeka modeli parametrelerini ve istemlerini uzaktan yapılandırma gibi kullanım alanlarının yanı sıra diğer entegrasyonları da kullanabilirsiniz.
- 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 parametre değeri aldığını kaydedin ve bunu Cloud Functions içinde hak doğrulama sisteminin bir parçası olarak 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 Python SDK'sını sunucunuza eklemek için Firebase Admin SDK'sını sunucunuza ekleme bölümündeki talimatları uygulayın.
1. adım: Firebase Admin Python SDK'yı 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 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 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, uygulamanızın Remote Config arka uç sunucusuyla bağlantısı kesilse bile başarılı bir şekilde çalışmasını sağlar.
Örneğin, üretken yapay zeka işlevini yöneten bir sunucu uygulaması yazıyorsanız varsayılan model adı, istem ön girişi 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, Python uygulamanızı nasıl yapılandıracağınız açıklanmaktadır.
Şablona erişip 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())Alternatif olarak, Python'ı Cloud Functions ile kullanıyorsanız şablonu tek adımda başlatmak ve yüklemek için eşzamansız
get_server_templateişlevini kullanabilirsiniz:# Initialize server-side Remote Config template = await remote_config.get_server_template()Uygulamanızın Remote Config arka uç sunucusuyla bağlantısı kesilse bile başarılı bir şekilde çalışmasını sağlamak için uygulamanıza her parametre için varsayılan değerler ekleyin. Bunu yapmak için
init_server_templateveyaget_server_templateşablon işlevinizin içinedefault_configekleyin:template = remote_config.init_server_template({ default_config: { '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())Şablonu başlatmanın bir diğer yolu da gerekli sunucu şablonunu almak için
get_server_templateişlevini kullanmaktır. Bu şablonutemplate.to_jsonişlevini kullanarak JSON biçimine dönüştürebilirsiniz. Bu JSON şablonu yerel olarak depolanabilir. Daha sonrainit_server_templateiş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 ayarlarsanız istediğiniz değerleri tanımlayın ve sağlayın:
- Yüzde koşullarını kullanıyorsanız
template.evaluate()işlevi içinde koşullarınızı değerlendirmek için kullanmak istediğinizrandomization_iddeğerini ekleyin. - customSignals kullanıyorsanız özellikleri ve değerlerini tanımlayın. Özel sinyaller, Firebase Admin Python SDK v6.7.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
randomization_idolarak bir Firebase yükleme kimliği veya kullanıcı kimliği, belirli istemci sürümlerini hedeflemek içinversionolarak özel bir sinyal ve istemci platformunu hedeflemek içinplatformolarak özel bir sinyal 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 {randomization_id} and version. config = template.evaluate({ 'randomization_id': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })- Yüzde koşullarını kullanıyorsanız
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
gettersişlevini kullanın. Aşağıdaki türler desteklenir:- Boole:
get_bool - Tamsayı:
get_int - Yanal dönüş:
get_float - Dize:
get_string - Değer kaynağı:
get_value_source
Örneğin, sunucunuzda Vertex AI'ı uyguluyorsanız ve modeli ve model parametrelerini değiştirmek istiyorsanız
model_namevegeneration_configiç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. 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:
Sunucusuz bir ortamın aksine, sunucunuz uzun süredir çalışıyorsa Remote Config sunucusundan en güncel şablonu aldığınızdan emin olmak için şablonu düzenli olarak yeniden yükleyin.
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 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ı adlara ve veri türlerine sahip Remote Config parametreler 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
default_configdeğerlerini geçersiz kılar. - İsteğe bağlı olarak, değerleri rastgele bir örneklem örneğine 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.
- Parametre ekleme işlemini 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 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 diyaloğu içeren bir uygulamanız varsa. Bu durumda, uygulamanızın isteğe bağlı olarak çağırdığı bir işlevde LLM hizmeti sunma mantığınızı barındırabilirsiniz.
Sunucu tarafı Remote Config ile 2. nesil Cloud Functions kullanan bir çözümü incelemek için Cloud Functions ve Vertex AI ile sunucu tarafı Remote Config'yi kullanma başlıklı makaleyi inceleyin.
Uygulamanızı Cloud Functions ile dağıtma hakkında daha fazla bilgi edinmek için Başlangıç: İlk işlevlerinizi yazma, test etme ve dağıtma başlıklı makaleyi inceleyin.
Aksi takdirde Cloud Run'ı 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ı kılavuzdaki adımları uygulayın.
Cloud Run ve Cloud Functions için en iyi kullanım alanları hakkında daha fazla bilgi edinmek istiyorsanız Cloud Functions ve Cloud Run: Ne zaman hangisi kullanılmalı? başlıklı makaleyi inceleyin.