از Remote Config در محیط های سرور استفاده کنید


Firebase Remote Config از پیکربندی سمت سرور با استفاده از Firebase Admin Python SDK v6.7.0+ پشتیبانی می کند. این قابلیت به شما امکان می دهد تا به صورت پویا رفتار و پیکربندی برنامه های سمت سرور را با استفاده از Remote Config مدیریت کنید. این شامل اجرای بدون سرور مانند Cloud Functions است.

بر خلاف SDK های مشتری Firebase، که یک پیکربندی خاص مشتری برگرفته از الگوی Remote Config را دریافت می کنند، SDK Remote Config سمت سرور یک الگوی کامل Remote Config را از Firebase دانلود می کند. سپس سرور شما می تواند الگو را با هر درخواست دریافتی ارزیابی کند و از منطق خود برای ارائه یک پاسخ سفارشی با تاخیر بسیار کم استفاده کند. می توانید از شرایط برای کنترل و سفارشی کردن پاسخ ها بر اساس درصدهای تصادفی و ویژگی های مشتری تعریف شده در سیگنال های سفارشی استفاده کنید.

با Remote Config سمت سرور، می توانید:

  • برای اطمینان از ایمن ماندن کلیدهای API خود، پارامترهای پیکربندی را برای برنامه‌هایی که روی سرور شما اجرا می‌شوند یا از طریق سرور شما قابل دسترسی هستند، تعریف کنید، به مواردی مانند پیکربندی از راه دور پارامترهای مدل هوش مصنوعی و اعلان‌ها و سایر ادغام‌ها اجازه دهید.
  • به صورت پویا پارامترها را در پاسخ به تغییرات محیط خود یا سایر تغییرات برنامه، مانند به‌روزرسانی پارامترهای LLM و نقاط پایانی مدل، تنظیم کنید.
  • با به‌روزرسانی از راه دور APIهایی که سرورتان با آنها تماس می‌گیرد، هزینه‌ها را کنترل کنید.
  • برای مشتریانی که به سرور شما دسترسی دارند پیکربندی های سفارشی را در لحظه ایجاد کنید.
  • مشتریانی را که مقدار پارامتر دریافت کرده اند، ثبت کنید و از آن در Cloud Functions به عنوان بخشی از یک سیستم تأیید استحقاق استفاده کنید.

می‌توانید Remote Config سمت سرور را در محیط‌های Cloud Run، Cloud Functions یا سرورهای خود میزبان اجرا کنید.

قبل از شروع

دستورالعمل های افزودن Firebase Admin SDK به سرور خود را دنبال کنید تا یک پروژه Firebase ایجاد کنید، یک حساب سرویس راه اندازی کنید و Firebase Python SDK را به سرور خود اضافه کنید.

مرحله 1: Firebase Admin Python SDK را راه اندازی کنید و درخواست های API را مجاز کنید

وقتی SDK مدیریت را بدون هیچ پارامتری مقداردهی اولیه می‌کنید، SDK از اعتبارنامه پیش‌فرض برنامه Google استفاده می‌کند و گزینه‌ها را از متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS می‌خواند. برای مقداردهی اولیه SDK و اضافه کردن Remote Config :

import firebase_admin
import asyncio
import json

firebase_admin.initialize_app()

مرحله 2: مقادیر پارامترهای پیش فرض را برای برنامه سرور خود شناسایی کنید

متغیرهایی را در برنامه خود که می خواهید به صورت پویا با Remote Config به روز کنید، شناسایی کنید. سپس، در نظر بگیرید که کدام متغیرها باید به طور پیش فرض در برنامه شما تنظیم شوند و مقادیر پیش فرض آنها چقدر باید باشد. این تضمین می کند که برنامه شما با موفقیت اجرا می شود حتی اگر اتصال آن به سرور باطن Remote Config قطع شود.

برای مثال، اگر در حال نوشتن یک برنامه سرور هستید که یک عملکرد هوش مصنوعی تولیدی را مدیریت می‌کند، می‌توانید یک نام مدل پیش‌فرض، مقدمه اعلان و یک پیکربندی هوش مصنوعی تولیدی مانند موارد زیر تنظیم کنید:

نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
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 پارامترهای ارسال به مدل JSON {"stopSequences": ["I hope this helps"], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}

مرحله 3: برنامه سرور خود را پیکربندی کنید

پس از تعیین پارامترهایی که می‌خواهید با Remote Config استفاده کنید، برنامه خود را برای تنظیم مقادیر پیش‌فرض پیکربندی کنید، الگوی Remote Config مخصوص سرور را واکشی کنید و از مقادیر آن استفاده کنید. مراحل زیر نحوه پیکربندی برنامه پایتون را شرح می دهد.

  1. به قالب دسترسی پیدا کرده و بارگذاری کنید.

    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 = remote_config.get_server_template()
    
  2. برای اطمینان از اینکه برنامه شما با موفقیت اجرا می شود حتی اگر اتصال آن به سرور باطن Remote Config قطع شود، مقادیر پیش فرض را برای هر پارامتر به برنامه خود اضافه کنید. برای انجام این کار، یک defaultConfig در تابع قالب init_server_template یا get_server_template خود اضافه کنید:

    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())
    
    

    راه دیگری که می توانید یک قالب را مقداردهی اولیه کنید، استفاده از تابع get_server_template برای بازیابی الگوی سرور مورد نیاز است. با استفاده از تابع template.to_json می توانید این قالب را به فرمت JSON تبدیل کنید. این قالب JSON را می توان به صورت محلی ذخیره کرد. متعاقباً می توانید این الگوی JSON را با استفاده از تابع init_server_template مقداردهی اولیه کنید.

  3. پس از بارگیری قالب، از template.evaluate() برای وارد کردن پارامترها و مقادیر از قالب استفاده کنید:

    # Add template parameters to config
    config = template.evaluate()
    
  4. به صورت اختیاری، اگر شرایطی را در قالب Remote Config خود تنظیم کرده اید، مقادیر مورد نظر خود را تعریف و ارائه کنید:

    • اگر از شرایط درصد استفاده می کنید، randomizationId را که می خواهید برای ارزیابی شرایط خود در تابع template.evaluate() استفاده کنید، اضافه کنید.
    • اگر از سیگنال های سفارشی استفاده می کنید، ویژگی ها و مقادیر آنها را تعریف کنید. سیگنال های سفارشی با Firebase Admin Python SDK نسخه 6.7.0 و بالاتر در دسترس هستند.

    برای مثال، ممکن است شناسه نصب Firebase را به‌عنوان randomizationId یا شناسه کاربری تنظیم کنید تا اطمینان حاصل کنید که هر کاربری که با سرور شما تماس می‌گیرد به گروه تصادفی مناسب، version به‌عنوان یک سیگنال سفارشی برای هدف قرار دادن نسخه‌های مشتری خاص، و platform به عنوان سیگنال سفارشی برای پلتفرم مشتری هدف اضافه می‌شود.

    برای اطلاعات بیشتر در مورد شرایط، انواع قانون شرط را ببینید.

    # 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"
    })
    
    
  5. در مرحله بعد، مقادیر پارامتر مورد نیاز خود را از ثابت پیکربندی استخراج کنید. از getters برای فرستادن مقادیر از Remote Config به قالب مورد انتظار استفاده کنید. انواع زیر پشتیبانی می شوند:

    • بولی: get_bool
    • شی: get_value
    • شماره: get_number
    • رشته: get_string

    برای مثال، اگر 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')}"
    
  6. اگر سرور شما طولانی‌مدت کار می‌کند، برخلاف محیط بدون سرور، از setInterval برای بارگیری مجدد قالب به صورت دوره‌ای استفاده کنید تا مطمئن شوید که به‌روزترین الگو را به‌طور دوره‌ای از سرور Remote Config دریافت می‌کنید.

مرحله 4: مقادیر پارامترهای خاص سرور را در Remote Config تنظیم کنید

در مرحله بعد، یک الگوی Remote Config سرور ایجاد کنید و پارامترها و مقادیر را برای استفاده در برنامه خود پیکربندی کنید.

برای ایجاد یک الگوی Remote Config مخصوص سرور:

  1. صفحه پارامترهای Remote Config کنسول Firebase را باز کنید و از انتخابگر Client/Server ، Server را انتخاب کنید.
  2. پارامترهای Remote Config را با نام ها و نوع داده های مشابه پارامترهایی که در برنامه خود تعریف کرده اید تعریف کنید و مقادیر را ارائه دهید. وقتی الگو را واکشی و ارزیابی می‌کنید و این مقادیر را به متغیرهای خود اختصاص می‌دهید، این مقادیر defaultConfig که در پیکربندی برنامه سرور خود تنظیم کرده‌اید، لغو می‌کنند.
  3. به صورت اختیاری، شرایطی را برای اعمال مداوم مقادیر به نمونه تصادفی از نمونه ها یا سیگنال های سفارشی که تعریف می کنید، تنظیم کنید. برای اطلاعات بیشتر در مورد شرایط، انواع قانون شرط را ببینید.
  4. وقتی افزودن پارامترها تمام شد، روی انتشار تغییرات کلیک کنید.
  5. تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

مرحله 5: استقرار با Cloud Functions یا Cloud Run

اگر برنامه سرور شما سبک و مبتنی بر رویداد است، باید کد خود را با استفاده از Cloud Functions اجرا کنید. برای مثال، اگر برنامه‌ای دارید که شامل گفتگوی شخصیت‌ها می‌شود که توسط یک API مولد AI (به عنوان مثال، Google AI یا Vertex AI ) ارائه می‌شود. در این مورد، می‌توانید منطق سرویس دهی LLM خود را در تابعی میزبانی کنید که برنامه شما بر حسب تقاضا آن را فراخوانی می‌کند.

اگر قرار است برنامه شما طولانی‌مدت باشد (مثلاً یک برنامه وب با دارایی)، می‌توانید Cloud Run را در نظر بگیرید. برای استقرار برنامه سرور خود با Cloud Run، راهنمای Quickstart را دنبال کنید: یک سرویس Python را در Cloud Run مستقر کنید .

برای اطلاعات بیشتر در مورد بهترین موارد استفاده برای Cloud Run و Cloud Functions ، به Cloud Functions vs. Cloud Run مراجعه کنید: زمانی که از یکی بر دیگری استفاده شود .