सर्वर एनवायरमेंट में रिमोट कॉन्फ़िगरेशन का इस्तेमाल करना

Firebase रिमोट कॉन्फ़िगरेशन, अब Firebase एडमिन Node.js SDK टूल v12.1.0 के बाद का वर्शन. यह नई सुविधा, समाचार पब्लिशरों को की मदद से, सर्वर साइड के व्यवहार और कॉन्फ़िगरेशन को डाइनैमिक तौर पर मैनेज किया जा सकता है. रिमोट कॉन्फ़िगरेशन का उपयोग करने वाले ऐप्लिकेशन इसमें बिना सर्वर वाली सुविधाएं लागू करना शामिल है जैसे कि Cloud Functions.

Firebase क्लाइंट SDK टूल के उलट, जो क्लाइंट के हिसाब से कॉन्फ़िगरेशन फ़ेच करता है रिमोट कॉन्फ़िगरेशन टेंप्लेट, सर्वर-साइड से डिलीवर किया गया रिमोट कॉन्फ़िगरेशन SDK टूल, रिमोट कॉन्फ़िगरेशन के लिए पूरा टेंप्लेट डाउनलोड करता है को Firebase से हटाएं. इसके बाद, आपका सर्वर हर टेंप्लेट के साथ साथ ही, अपने नियम के हिसाब से लाइव स्ट्रीमिंग करने और उसके दिखने के बीच इंतज़ार का समय बहुत कम है.

सर्वर साइड रिमोट कॉन्फ़िगरेशन की मदद से ये काम किए जा सकते हैं:

  • जिन ऐप्लिकेशन पर चल रहे हैं या ऐक्सेस किए गए हैं उनके लिए कॉन्फ़िगरेशन पैरामीटर तय करें अपने सर्वर के ज़रिए, रिमोट तरीके से कॉन्फ़िगर करने जैसे एआई मॉडल के पैरामीटर, प्रॉम्प्ट, और अन्य इंटिग्रेशन से पक्का करें कि एपीआई पासकोड सुरक्षित रहते हैं.
  • अपने एनवायरमेंट में होने वाले बदलावों के हिसाब से पैरामीटर में डाइनैमिक तौर पर बदलाव करें या एलएलएम पैरामीटर और मॉडल एंडपॉइंट अपडेट करने जैसे ऐप्लिकेशन के अन्य बदलाव.
  • अपने सर्वर से कॉल किए जाने वाले एपीआई को रिमोट तरीके से अपडेट करके, खर्च कंट्रोल करें.
  • तुरंत कस्टम कॉन्फ़िगरेशन जनरेट करने के लिए, सर्वर.
  • रिकॉर्ड करें कि किन क्लाइंट को पैरामीटर वैल्यू मिली है और उसका इस्तेमाल एनटाइटलमेंट की पुष्टि करने वाले सिस्टम के हिस्से के तौर पर Cloud Functions.

Cloud Run पर सर्वर साइड रिमोट कॉन्फ़िगरेशन डिप्लॉय किया जा सकता है. Cloud Functions या खुद होस्ट किए गए सर्वर एनवायरमेंट.

शुरू करने से पहले

Firebase एडमिन SDK टूल को अपने सर्वर का इस्तेमाल करके Firebase प्रोजेक्ट बनाएं, सेवा खाता सेट अप करें, और Firebase एडमिन Node.js SDK टूल को आपका सर्वर.

पहला चरण: Firebase एडमिन Node.js SDK टूल शुरू करना और एपीआई अनुरोधों को अनुमति देना

जब किसी पैरामीटर के बिना 'एडमिन 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();

दूसरा चरण: अपने सर्वर ऐप्लिकेशन के लिए डिफ़ॉल्ट पैरामीटर वैल्यू की पहचान करना

अपने ऐप्लिकेशन में उन वैरिएबल की पहचान करें जिनके साथ आपको डाइनैमिक तौर पर अपडेट करना है रिमोट कॉन्फ़िगरेशन. इसके बाद, देखें कि कौनसे वैरिएबल, डिफ़ॉल्ट रूप से और उनके डिफ़ॉल्ट मान क्या होने चाहिए. इससे पक्का होता है कि आपका ऐप्लिकेशन सफलतापूर्वक चलता है, भले ही उसका कनेक्शन रिमोट कॉन्फ़िगरेशन बैकएंड सर्वर में गड़बड़ी हुई.

उदाहरण के लिए, अगर आप कोई ऐसा सर्वर ऐप्लिकेशन लिख रहे हैं जो जनरेटिव एआई फ़ंक्शन का इस्तेमाल किया जा सकता है. ऐसे में, मॉडल का डिफ़ॉल्ट नाम, प्रॉम्प्ट की प्रीएंबल, साथ ही, एक जनरेटिव एआई कॉन्फ़िगरेशन होगा. जैसे:

पैरामीटर का नाम जानकारी टाइप डिफ़ॉल्ट वैल्यू
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}

तीसरा चरण: अपना सर्वर ऐप्लिकेशन कॉन्फ़िगर करना

यह तय करने के बाद कि आपको किन पैरामीटर का इस्तेमाल करना है रिमोट कॉन्फ़िगरेशन, डिफ़ॉल्ट वैल्यू सेट करने, फ़ेच करने के लिए अपने ऐप्लिकेशन को कॉन्फ़िगर करें खास तौर पर सर्वर के लिए बना रिमोट कॉन्फ़िगरेशन टेंप्लेट इस्तेमाल करके, उसकी वैल्यू इस्तेमाल करेगा. कॉन्टेंट बनाने यहां दिए गए निर्देशों का पालन करके, Node.js ऐप्लिकेशन को कॉन्फ़िगर करने का तरीका बताया गया है.

  1. टेंप्लेट को ऐक्सेस और लोड करें.

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

    अगर Cloud Functions में 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 का इस्तेमाल करके, टेंप्लेट को समय-समय पर फिर से लोड करें. इससे यह पक्का किया जा सकेगा कि आप समय-समय पर रिमोट कॉन्फ़िगरेशन सर्वर.

चौथा चरण: रिमोट कॉन्फ़िगरेशन में, सर्वर के हिसाब से पैरामीटर वैल्यू सेट करना

इसके बाद, सर्वर रिमोट कॉन्फ़िगरेशन टेंप्लेट बनाकर पैरामीटर कॉन्फ़िगर करें और आपके ऐप्लिकेशन में इस्तेमाल करने के लिए मान हैं.

सर्वर के हिसाब से रिमोट कॉन्फ़िगरेशन टेंप्लेट बनाने के लिए:

  1. Firebase कंसोल रिमोट कॉन्फ़िगरेशन पैरामीटर खोलें पेज और क्लाइंट/सर्वर सिलेक्टर, सर्वर चुनें.
  2. रिमोट कॉन्फ़िगरेशन पैरामीटर को इनके नाम और डेटा टाइप से तय करें ऐसे पैरामीटर जिन्हें आपने अपने ऐप्लिकेशन में तय किया है और वैल्यू देते हैं. ये मान, उस defaultConfig को ओवरराइड कर देंगे जिसे आपने कॉन्फ़िगर करें सर्वर ऐप्लिकेशन को फ़ेच और उसका आकलन करने टेंप्लेट बनाकर इन वैल्यू को अपने वैरिएबल को असाइन करें.
  3. इसके अलावा, वैल्यू को लगातार लागू करने के लिए, प्रतिशत की शर्तें सेट करें: सैंपल की रैंडम संख्या. प्रतिशत के बारे में ज़्यादा जानकारी पाने के लिए शर्तों के तहत, किसी भी क्रम में प्रतिशत के आधार पर तय करें.
  4. पैरामीटर जोड़ने के बाद, बदलावों को पब्लिश करें पर क्लिक करें.
  5. बदलावों की समीक्षा करें और बदलावों को पब्लिश करें पर दोबारा क्लिक करें.

पांचवां चरण: Cloud Functions या Cloud Run के साथ डिप्लॉय करें

अगर आपका सर्वर ऐप्लिकेशन लाइटवेट और इवेंट-ड्रिवन है, तो आपको इसका इस्तेमाल करके अपना कोड Cloud के फ़ंक्शन. उदाहरण के लिए, मान लेते हैं कि आपके पास ऐसा ऐप्लिकेशन है जिसमें जनरेटिव एआई की मदद से काम करने वाले किरदार वाले डायलॉग शामिल हैं एपीआई (उदाहरण के लिए, Google का एआई या Vertex AI). इस स्थिति में, आपके पास होस्ट एलएलएम पेश करने वाला आपका लॉजिक, जिसे आपके ऐप्लिकेशन में मांग पर कॉल किया जाता है.

अगर आपका ऐप्लिकेशन लंबे समय तक चलने के लिए है (उदाहरण के लिए, ऐसा वेब ऐप्लिकेशन जिसमें ऐसेट), Cloud Run के बारे में विचार कर सकते हैं. डिप्लॉय करने के लिए अपने सर्वर ऐप्लिकेशन को Cloud Run के साथ चालू करने के लिए, Quickstart: Deploy a Node.js सेवा से Cloud चलाएं.

Cloud Run के सबसे सही इस्तेमाल के उदाहरण और Cloud Functions, Cloud Functions बनाम Cloud Run: कब इस्तेमाल करें एक के ऊपर एक अन्य.