از 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 سمت سرور ، می توانید:

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

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

قبل از شروع

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

مرحله 1: 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 قطع شود.

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

نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
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 خاص سرور را واکشی کنید و از مقادیر آن استفاده کنید. مراحل زیر نحوه پیکربندی برنامه 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 استفاده می کنید ، می توانید از Anynchronous getServerTemplate برای اولیه سازی و بارگیری الگو در یک مرحله استفاده کنید:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. برای اطمینان از اینکه برنامه شما با موفقیت اجرا می شود حتی اگر اتصال آن به سرور Backend 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() اضافه کنید.
    • در صورت استفاده از سیگنال های سفارشی ، ویژگی ها و مقادیر آنها را تعریف کنید. سیگنال های سفارشی با Node.js SDK 12.5.0 و بالاتر با Nodebase Admin در دسترس هستند.

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

    • بولی: getBoolean
    • شی: getValue
    • شماره: getNumber
    • رشته: getString

    به عنوان مثال ، اگر در حال اجرای Vertex AI در سرور خود هستید و می خواهید پارامترهای مدل و مدل را تغییر دهید ، ممکن است بخواهید پارامترهایی را برای model_name و generation_config پیکربندی کنید. در اینجا نمونه ای از چگونگی دسترسی به مقادیر 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 Console Firebase را باز کنید و از انتخاب کننده مشتری/سرور ، سرور را انتخاب کنید.
  2. پارامترهای Remote Config با همان نام ها و انواع داده ها به عنوان پارامترهایی که در برنامه خود تعریف کرده اید تعریف کنید و مقادیر خود را ارائه دهید. این مقادیر defaultConfig که در پیکربندی برنامه سرور خود تنظیم کرده اید ، هنگام واکشی و ارزیابی الگوی و ارزیابی این مقادیر به متغیرهای خود ، غلبه می کند.
  3. به صورت اختیاری ، شرایط را تنظیم کنید تا مقادیر را در یک نمونه تصادفی از نمونه ها یا سیگنال های سفارشی که تعریف می کنید اعمال کنید. برای کسب اطلاعات بیشتر در مورد شرایط ، به انواع قانون شرایط مراجعه کنید.
  4. هنگامی که اضافه کردن پارامترها را تمام کردید ، روی Publish Changes کلیک کنید.
  5. تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

مرحله 5: با Cloud Functions یا اجرای ابر مستقر شوید

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

اگر در حال ساختن یک برنامه وب با سرور هستید ، App Hosting از چارچوب های وب محبوب پشتیبانی می کند.

در غیر این صورت ، شما ممکن است ابر را اجرا کنید . برای استقرار برنامه سرور خود با Cloud Run ، راهنما را در QuickStart دنبال کنید: یک سرویس Node.js را به Cloud Run مستقر کنید .

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