استخدام ميزة "الإعداد عن بُعد" في بيئات الخادم

تتوافق ميزة "الإعداد عن بُعد في Firebase" الآن مع عملية الإعداد من جهة الخادم باستخدام الإصدار 12.1.0 أو الإصدارات الأحدث من حزمة SDK Admin Node.js. وتتيح لك هذه الميزة الجديدة إدارة سلوك التطبيقات من جهة الخادم وإعدادها بشكل ديناميكي باستخدام ميزة "الإعداد عن بُعد". ويشمل ذلك عمليات التنفيذ بدون خادم مثل دوال Cloud.

على عكس حزم تطوير البرامج (SDK) لعملاء Firebase التي تجلب إعدادات خاصة بالعميل مستمدة من نموذج "الإعداد عن بُعد"، تعمل حزمة تطوير البرامج (SDK) لميزة "الإعداد عن بُعد" من جهة الخادم على تنزيل نموذج "الإعداد عن بُعد" الكامل من Firebase. يمكن للخادم بعد ذلك تقييم النموذج مع كل طلب وارد واستخدام منطقه الخاص لتقديم استجابة مخصصة بوقت استجابة سريع جدًا.

باستخدام ميزة "الإعداد عن بُعد من جهة الخادم"، يمكنك إجراء ما يلي:

  • يمكنك تحديد مَعلمات الضبط للتطبيقات التي تعمل على خادمك أو التي يتم الوصول إليها من خلاله، ما يسمح بحالات الاستخدام عن بُعد، مثل ضبط مَعلمات نموذج الذكاء الاصطناعي والطلبات وعمليات الدمج الأخرى عن بُعد، لضمان الحفاظ على أمان مفاتيح واجهة برمجة التطبيقات.
  • يمكنك تعديل المَعلمات ديناميكيًا استجابةً للتغيّرات في بيئتك أو التغييرات الأخرى في التطبيقات، مثل تعديل المَعلمات اللغوية الكبيرة ونقاط نهاية النماذج.
  • يمكنك التحكم في التكاليف من خلال تحديث واجهات برمجة التطبيقات التي يطلبها الخادم عن بُعد.
  • إنشاء عمليات تهيئة مخصّصة بشكلٍ فوري للعملاء الذين يمكنهم الوصول إلى خادمك

يمكنك تفعيل "الإعداد عن بُعد" من جهة الخادم في نظام التشغيل Cloud Run أو Cloud Functions أو بيئات الخوادم المستضافة ذاتيًا.

قبل البدء

اتّبِع التعليمات الواردة في إضافة حزمة تطوير البرامج (SDK) لمشرف Firebase إلى خادمك لإنشاء مشروع على Firebase وإعداد حساب خدمة وإضافة SDK لـ Node.js للمشرف في Firebase إلى الخادم.

الخطوة 1: إعداد حزمة SDK Node.js للمشرف في Firebase وتفويض طلبات واجهة برمجة التطبيقات

عند إعداد SDK للمشرف بدون معلَمات، تستخدم حزمة SDK بيانات الاعتماد التلقائية لتطبيقات Google وتقرأ الخيارات من متغير بيئة GOOGLE_APPLICATION_CREDENTIALS. على سبيل المثال، لإعداد حزمة تطوير البرامج (SDK) وإضافة "الإعداد عن بُعد":

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

// Initialize Firebase
const firebaseApp = initializeApp();

الخطوة 2: تحديد قيم المَعلمات التلقائية لتطبيق الخادم

حدد المتغيرات في تطبيقك التي تريد تحديثها ديناميكيًا باستخدام "الإعداد عن بُعد". بعد ذلك، ضع في اعتبارك المتغيرات التي يجب تعيينها افتراضيًا في تطبيقك وقيمها الافتراضية. ويضمن ذلك تشغيل تطبيقك بنجاح حتى في حال انقطاع اتصاله بخادم الخلفية لميزة "الإعداد عن بُعد".

على سبيل المثال، إذا كنت تكتب تطبيق خادم يدير إحدى وظائف الذكاء الاصطناعي التوليدي، يمكنك ضبط اسم نموذج تلقائي ومقدّمة طلب وإعداد إعدادات للذكاء الاصطناعي التوليدي، على النحو التالي:

اسم المَعلمة الوصف النوع القيمة التلقائية
model_name اسم واجهة برمجة التطبيقات للنموذج String gemini-1.5-pro
preamble_prompt مطالبة بإضافة طلب استعلام المستخدم String 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: ضبط تطبيق الخادم

بعد تحديد المعلمات التي تريد استخدامها مع "الإعداد عن بُعد"، يمكنك ضبط تطبيقك لضبط القيم التلقائية واسترجاع نموذج "الإعداد عن بُعد" الخاص بالخادم واستخدام قيمه. توضّح الخطوات التالية كيفية ضبط تطبيق 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، يمكنك استخدام getServerTemplate غير المتزامن لجلب النموذج وتحميله في خطوة واحدة:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. لضمان تشغيل تطبيقك بنجاح حتى في حال انقطاع اتصاله بخادم الخلفية لميزة "الإعداد عن بُعد"، أضِف قيمًا تلقائية لكل مَعلمة إلى تطبيقك. ولإجراء ذلك، أضِف 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. اختياريًا، في حال ضبط النسبة المئوية للشروط في نموذج "الإعداد عن بُعد"، يمكنك تحديد وتقديم randomizationId الذي تريد استخدامه لتقييم الشروط ضمن دالة template.evaluate().

    على سبيل المثال، يمكنك ضبط رقم تعريف تثبيت Firebase على أنّه randomizationId، أو رقم تعريف مستخدم، لضمان إضافة كل مستخدم يتواصل مع خادمك إلى المجموعة العشوائية المناسبة. والمثال التالي هو مثال أساسي، ولكن يمكنك ضبط خادمك لإنشاء randomizationIds مختلفة لطلبات العملاء المختلفة، لضمان عرض قيم متسقة للمستخدمين من ميزة "الإعداد عن بُعد" بناءً على عضويتهم في مجموعات شروط النسبة المئوية.

    لمزيد من المعلومات عن شروط النسبة المئوية، راجِع المستخدِم بالنسبة المئوية العشوائية.

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  5. بعد ذلك، استخرِج قيم المَعلمة التي تحتاج إليها من ثابت الإعدادات. استخدِم getters لتحويل القيم من ميزة "الإعداد عن بُعد" إلى التنسيق المتوقع. الأنواع التالية متاحة:

    • قيمة منطقية: getBoolean
    • الكائن: getValue
    • الرقم: getNumber
    • السلسلة: getString

    على سبيل المثال، إذا كنت تنفّذ Vertex AI على خادمك وتريد تغيير معلَمات النموذج والنموذج، يمكنك ضبط المعلَمات من أجل model_name وgenerationConfig. في ما يلي مثال على كيفية الوصول إلى قيم "الإعداد عن بُعد":

    // 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 لإعادة تحميل النموذج بشكل دوري لضمان جلب أحدث نموذج من خادم "الإعداد عن بُعد" بشكل دوري.

الخطوة 4: ضبط قيم المَعلمات الخاصة بالخادم في ميزة "الإعداد عن بُعد"

بعد ذلك، يمكنك إنشاء نموذج "الإعداد عن بُعد للخادم" وضبط المعلمات والقيم لاستخدامها في تطبيقك.

لإنشاء نموذج لميزة "الإعداد عن بُعد" خاص بالخادم:

  1. افتح صفحة مَعلمات "الإعداد عن بُعد في وحدة تحكّم Firebase"، ومن أداة الاختيار العميل/الخادم، اختَر الخادم.
  2. حدِّد معلمات "الإعداد عن بُعد" باستخدام الأسماء وأنواع البيانات نفسها مثل المعلَمات التي حدّدتها في تطبيقك وقدِّم القيم. ستلغي هذه القيم defaultConfig التي ضبطتها في ضبط تطبيق الخادم عند استرجاع النموذج وتقييمه وتحديد هذه القيم للمتغيّرات.
  3. يمكنك اختياريًا ضبط شروط النسبة المئوية لتطبيق قيمة باستمرار على عيّنة عشوائية من المثيلات. لمزيد من المعلومات حول شروط النسبة المئوية، راجِع المستخدمون بالنسبة المئوية العشوائية.
  4. عند الانتهاء من إضافة المَعلمات، انقر على نشر التغييرات.
  5. راجِع التغييرات وانقر على نشر التغييرات مرّة أخرى.

الخطوة 5: النشر كدالة Cloud أو استخدام Cloud Run

إذا كان تطبيق الخادم خفيفًا ويستند إلى الأحداث، ننصحك بنشر الرمز باعتباره دالة Cloud. على سبيل المثال، لنفترض أنّ لديك تطبيقًا يتضمّن حوارًا حول الشخصيات استنادًا إلى واجهات برمجة تطبيقات الذكاء الاصطناعي التوليدي، مثل Google AI وVertex AI. في هذه الحالة، يمكنك استضافة منطق عرض النموذج اللغوي الكبير (LLM) في دالة Cloud يستدعيها عند الطلب. للتعرّف على كيفية نشر تطبيقك كوظيفة في السحابة الإلكترونية، انتقِل إلى البدء: كتابة الدوال الأولى واختبارها ونشرها.

إذا كان الغرض من التطبيق هو أن يكون طويل الأمد (على سبيل المثال، تطبيق ويب يحتوي على مواد عرض)، ننصحك باستخدام Cloud Run. لنشر تطبيق الخادم باستخدام Cloud Run، يُرجى اتّباع الدليل الوارد في دليل البدء السريع: نشر خدمة Node.js على نظام التشغيل Cloud.

لمزيد من المعلومات حول أفضل حالات استخدام Cloud Run وCloud Functions، يمكنك الرجوع إلى مقالة Cloud Functions مقابل Cloud Run: متى تستخدم واحدة بدلاً من الأخرى.