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

Firebase Remote Config اکنون از پیکربندی سمت سرور با استفاده از Firebase Admin Node.js SDK v12.1.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 Admin Node.js SDK را به سرور خود اضافه کنید.

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

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

import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";

// Initialize Firebase
const firebaseApp = initializeApp();

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

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

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

نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
model_name نام API مدل رشته gemini-1.5-pro
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 مخصوص سرور را واکشی کنید و از مقادیر آن استفاده کنید. مراحل زیر نحوه پیکربندی برنامه Node.js را شرح می دهد.

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

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = rc.initServerTemplate();
    
    // Load Remote Config
    await template.load();
    

    اگر از Node.js در یک Cloud Functions استفاده می کنید، می توانید از getServerTemplate ناهمزمان برای واکشی و بارگیری الگو در یک مرحله استفاده کنید:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. برای اطمینان از اینکه برنامه شما با موفقیت اجرا می شود حتی اگر اتصال آن به سرور باطن Remote Config قطع شود، مقادیر پیش فرض را برای هر پارامتر به برنامه خود اضافه کنید. برای انجام این کار، یک defaultConfig در تابع initServerTemplate یا getServerTemplate خود اضافه کنید:

    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()
    
  3. پس از بارگیری قالب، از template.evaluate() برای وارد کردن پارامترها و مقادیر از قالب استفاده کنید:

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

    • اگر از شرایط درصد استفاده می کنید، randomizationId را که می خواهید برای ارزیابی شرایط خود در تابع template.evaluate() استفاده کنید، اضافه کنید.
    • اگر از سیگنال های سفارشی استفاده می کنید، ویژگی ها و مقادیر آنها را تعریف کنید. سیگنال های سفارشی با Firebase Admin Node.js SDK 12.5.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.
    const config = template.evaluate({
      randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04",
      version: "1.0",
      platform: "Android"
    });
    
    
  5. در مرحله بعد، مقادیر پارامتر مورد نیاز خود را از ثابت پیکربندی استخراج کنید. getters برای فرستادن مقادیر از Remote Config به قالب مورد انتظار استفاده کنید. انواع زیر پشتیبانی می شوند:

    • Boolean: getBoolean
    • شی: getValue
    • شماره: getNumber
    • رشته: getString

    برای مثال، اگر Vertex AI را روی سرور خود پیاده‌سازی می‌کنید و می‌خواهید پارامترهای مدل و مدل را تغییر دهید، ممکن است بخواهید پارامترهایی را برای model_name و generationConfig پیکربندی کنید. در اینجا مثالی از نحوه دسترسی به مقادیر Remote Config آورده شده است:

    // 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}`;
    
  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 را دنبال کنید: سرویس Node.js را در Cloud Run مستقر کنید .

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