Firebase Remote Config پیکربندی سمت سرور با استفاده از Firebase Admin Python SDK نسخه ۶.۷.۰+ پشتیبانی میکند. این قابلیت به شما این امکان را میدهد که به صورت پویا رفتار و پیکربندی برنامههای سمت سرور را با استفاده از Remote Config مدیریت کنید. این شامل پیادهسازیهای بدون سرور مانند Cloud Functions نیز میشود.
برخلاف SDK های کلاینت فایربیس که پیکربندی خاص کلاینت را از الگوی Remote Config دریافت میکنند، SDK سمت سرور Remote Config یک الگوی کامل Remote Config را از فایربیس دانلود میکند. سپس سرور شما میتواند الگو را با هر درخواست ورودی ارزیابی کند و از منطق خود برای ارائه یک پاسخ سفارشی با تأخیر بسیار کم استفاده کند. میتوانید از شرطها برای کنترل و سفارشیسازی پاسخها بر اساس درصدهای تصادفی و ویژگیهای کلاینت تعریف شده در سیگنالهای سفارشی استفاده کنید.
با Remote Config سمت سرور، میتوانید:
- پارامترهای پیکربندی را برای برنامههایی که روی سرور شما اجرا میشوند یا از طریق آن قابل دسترسی هستند، تعریف کنید و مواردی مانند پیکربندی از راه دور پارامترها و اعلانهای مدل هوش مصنوعی و سایر ادغامها را برای اطمینان از ایمن ماندن کلیدهای API خود، امکانپذیر سازید.
- پارامترها را به صورت پویا در پاسخ به تغییرات در محیط یا سایر تغییرات برنامه، مانند بهروزرسانی پارامترهای LLM و نقاط پایانی مدل، تنظیم کنید.
- با بهروزرسانی از راه دور APIهایی که سرور شما فراخوانی میکند، هزینهها را کنترل کنید.
- پیکربندیهای سفارشی را در لحظه برای کلاینتهایی که به سرور شما دسترسی دارند، ایجاد کنید.
- ثبت کنید که کدام کلاینتها مقدار پارامتر را دریافت کردهاند و از آن در Cloud Functions به عنوان بخشی از سیستم تأیید حق استفاده کنید.
شما میتوانید Remote Config سمت سرور را روی Cloud Run، Cloud Functions یا محیطهای سرور خود-میزبان مستقر کنید.
قبل از اینکه شروع کنی
برای ایجاد یک پروژه Firebase، تنظیم یک حساب کاربری سرویس و افزودن Firebase Python SDK به سرور خود، دستورالعملهای موجود در بخش «افزودن Firebase Admin SDK به سرور» را دنبال کنید.
مرحله 1: مقداردهی اولیه SDK پایتون Firebase Admin و تأیید درخواستهای API
وقتی SDK مدیریت را بدون هیچ پارامتری مقداردهی اولیه میکنید، SDK از اعتبارنامههای پیشفرض برنامه گوگل استفاده میکند و گزینهها را از متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS میخواند. برای مقداردهی اولیه SDK و افزودن Remote Config :
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
مرحله ۲: مقادیر پیشفرض پارامترها را برای برنامه سرور خود شناسایی کنید
متغیرهایی را در برنامه خود که میخواهید به صورت پویا با Remote Config بهروزرسانی شوند، شناسایی کنید. سپس، در نظر بگیرید که کدام متغیرها باید به طور پیشفرض در برنامه شما تنظیم شوند و مقادیر پیشفرض آنها باید چه باشند. این تضمین میکند که برنامه شما حتی اگر اتصال آن به سرور Remote Config backend قطع شود، با موفقیت اجرا میشود.
برای مثال، اگر در حال نوشتن یک برنامهی سرور هستید که یک تابع هوش مصنوعی مولد را مدیریت میکند، میتوانید یک نام مدل پیشفرض، مقدمهی اعلان و یک پیکربندی هوش مصنوعی مولد مانند موارد زیر تنظیم کنید:
| نام پارامتر | توضیحات | نوع | مقدار پیشفرض |
|---|---|---|---|
model_name | نام API مدل | رشته | gemini-2.0-flash |
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! |
generation_config | پارامترهایی که باید به مدل ارسال شوند | جیسون | {"stopSequences": ["I hope this helps"], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20} |
مرحله 3: برنامه سرور خود را پیکربندی کنید
پس از اینکه پارامترهایی را که میخواهید با Remote Config استفاده کنید تعیین کردید، برنامه خود را طوری پیکربندی کنید که مقادیر پیشفرض را تنظیم کند، الگوی Remote Config مخصوص سرور را دریافت کند و از مقادیر آن استفاده کند. مراحل زیر نحوه پیکربندی برنامه پایتون شما را شرح میدهد.
به الگو دسترسی پیدا کنید و آن را بارگذاری کنید.
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())از طرف دیگر، اگر از پایتون با Cloud Functions استفاده میکنید، میتوانید از
get_server_templateناهمزمان برای مقداردهی اولیه و بارگذاری الگو در یک مرحله استفاده کنید:# Initialize server-side Remote Config template = await remote_config.get_server_template()برای اطمینان از اینکه برنامه شما حتی در صورت قطع اتصال به سرور Remote Config backend با موفقیت اجرا میشود، برای هر پارامتر به برنامه خود مقادیر پیشفرض اضافه کنید. برای انجام این کار، یک
default_configدرون تابع الگویinit_server_templateیاget_server_templateخود اضافه کنید: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())روش دیگری که میتوانید یک الگو را مقداردهی اولیه کنید، استفاده از تابع
get_server_templateبرای بازیابی الگوی سرور مورد نیاز است. میتوانید این الگو را با استفاده از تابعtemplate.to_jsonبه فرمت JSON تبدیل کنید. این الگوی JSON میتواند به صورت محلی ذخیره شود. متعاقباً میتوانید این الگوی JSON را با استفاده از تابعinit_server_templateمقداردهی اولیه کنید.پس از بارگذاری قالب،
template.evaluate()برای وارد کردن پارامترها و مقادیر از قالب استفاده کنید:# Add template parameters to config config = template.evaluate()در صورت تمایل، اگر در الگوی Remote Config خود شرطهایی تعیین کردهاید، مقادیر مورد نظر خود را تعریف و ارائه دهید:
- اگر از شرطهای درصدی استفاده میکنید،
randomization_idمورد نظر برای ارزیابی شرط(های) خود را در تابعtemplate.evaluate()اضافه کنید. - اگر از سیگنالهای سفارشی استفاده میکنید، ویژگیها و مقادیر آنها را تعریف کنید. سیگنالهای سفارشی با Firebase Admin Python SDK نسخه ۶.۷.۰ و بالاتر در دسترس هستند.
برای مثال، میتوانید یک شناسه نصب Firebase را به عنوان
randomization_idیا یک شناسه کاربری تنظیم کنید تا مطمئن شوید هر کاربری که با سرور شما تماس میگیرد به گروه تصادفی مناسب،versionبه عنوان یک سیگنال سفارشی برای هدف قرار دادن نسخههای خاص کلاینت وplatformبه عنوان یک سیگنال سفارشی برای هدف قرار دادن پلتفرم کلاینت اضافه میشود.برای اطلاعات بیشتر در مورد شرطها، به انواع قانون شرط مراجعه کنید.
# 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" })- اگر از شرطهای درصدی استفاده میکنید،
در مرحله بعد، مقادیر پارامترهای مورد نیاز خود را از ثابت config استخراج کنید.
gettersبرای تبدیل مقادیر از Remote Config به فرمت مورد انتظار استفاده کنید. انواع زیر پشتیبانی میشوند:- بولی:
get_bool - عدد صحیح:
get_int - شناور:
get_float - رشته:
get_string - منبع مقدار:
get_value_source
برای مثال، اگر شما در حال پیادهسازی Vertex AI روی سرور خود هستید و میخواهید مدل و پارامترهای مدل را تغییر دهید، ممکن است بخواهید پارامترهایی را برای
model_nameوgeneration_configپیکربندی کنید. در اینجا مثالی از نحوه دسترسی به مقادیر Remote Config آورده شده است:# 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')}"- بولی:
اگر سرور شما مدت زیادی در حال اجرا است، برخلاف یک محیط بدون سرور، به صورت دورهای قالب را مجدداً بارگذاری کنید تا مطمئن شوید که بهروزترین قالب را از سرور Remote Config دریافت میکنید.
مرحله ۴: تنظیم مقادیر پارامترهای مختص سرور در Remote Config
در مرحله بعد، یک الگوی Remote Config سرور ایجاد کنید و پارامترها و مقادیر را برای استفاده در برنامه خود پیکربندی کنید.
برای ایجاد یک الگوی Remote Config مخصوص سرور:
- صفحه پارامترهای Remote Config کنسول Firebase را باز کنید و از انتخابگر Client/Server ، گزینه Server را انتخاب کنید.
- پارامترهای Remote Config را با همان نامها و انواع دادهای که در برنامه خود تعریف کردهاید، تعریف کنید و مقادیر را ارائه دهید. این مقادیر،
default_configتنظیم شده در پیکربندی برنامه سرور شما را هنگام دریافت و ارزیابی الگو و اختصاص این مقادیر به متغیرهای شما، لغو میکنند. - به صورت اختیاری، میتوانید شرایطی را تنظیم کنید تا مقادیر به طور مداوم بر روی یک نمونه تصادفی از نمونهها یا سیگنالهای سفارشی که تعریف میکنید اعمال شوند. برای اطلاعات بیشتر در مورد شرایط، به انواع قوانین شرایط مراجعه کنید.
- وقتی افزودن پارامترها تمام شد، روی انتشار تغییرات کلیک کنید.
- تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.
مرحله ۵: استقرار با Cloud Functions یا Cloud Run
اگر برنامه سرور شما سبک و رویدادمحور است، باید استقرار کد خود را با استفاده Cloud Functions در نظر بگیرید. به عنوان مثال، اگر برنامهای دارید که شامل دیالوگهای کاراکتری است که توسط یک API هوش مصنوعی مولد (مثلاً Google AI یا Vertex AI ) پشتیبانی میشود. در این حالت، میتوانید منطق سرویس LLM خود را در تابعی که برنامه شما در صورت تقاضا فراخوانی میکند، میزبانی کنید.
برای کار با راهکاری که Cloud Functions نسل دوم به همراه Remote Config سمت سرور استفاده میکند، به بخش «استفاده Remote Config سمت سرور با Cloud Functions و هوش مصنوعی ورتکس» مراجعه کنید.
برای کسب اطلاعات بیشتر در مورد استقرار برنامه خود با Cloud Functions ، به بخش شروع به کار: نوشتن، آزمایش و استقرار اولین توابع خود مراجعه کنید.
در غیر این صورت، میتوانید Cloud Run را در نظر بگیرید. برای استقرار برنامه سرور خود با Cloud Run، راهنمای موجود در Quickstart: Deploy a Python service to Cloud Run را دنبال کنید.
برای اطلاعات بیشتر در مورد بهترین موارد استفاده از Cloud Run و Cloud Functions ، به Cloud Functions در مقابل Cloud Run: چه زمانی باید از یکی به جای دیگری استفاده کرد، مراجعه کنید.