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

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

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

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

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

يمكنك تفعيل ميزة "الإعداد عن بُعد من جهة الخادم" على Cloud Run، أو وظائف السحابة الإلكترونية أو بيئات الخادم ذاتية الاستضافة.

قبل البدء

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

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

عند إعداد "SDK للمشرف" بدون معلَمات، تستخدم حزمة SDK أدوات الإعداد التلقائي للتطبيق بيانات الاعتماد وتقرأ الخيارات من بيئة 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 اسم واجهة برمجة تطبيقات النموذج سلسلة 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: ضبط تطبيق الخادم

بعد تحديد المعلمات التي تريد استخدامها مع في ميزة "الإعداد عن بُعد"، يمكنك ضبط تطبيقك على ضبط القيم التلقائية واسترجاع نموذج "الإعداد عن بُعد" الخاص بالخادم، واستخدام قيمه. تشير رسالة الأشكال البيانية توضِّح الخطوات التالية كيفية ضبط تطبيق Node.js.

  1. انتقِل إلى النموذج وحمِّله.

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

    إذا كنت تستخدم Node.js ضمن دوال السحابة، يجب يمكن استخدام 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

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

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

لمزيد من المعلومات حول أفضل حالات استخدام Cloud Run عند استخدام دوال Cloud، يمكنك الاطّلاع على الوظائف السحابية مقابل التشغيل بالسحاب. واحد خلال غير ذلك.