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

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

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

सर्वर-साइड Remote Config की मदद से, ये काम किए जा सकते हैं:

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

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

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

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

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

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

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

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

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

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

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

यह तय करने के बाद कि आपको किन पैरामीटर का इस्तेमाल करना है 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();
    

    अगर Cloud Functions में Node.js का इस्तेमाल किया जा रहा है, तो को फ़ेच और लोड करने के लिए, एसिंक्रोनस getServerTemplate का इस्तेमाल कर सकता है टेंप्लेट का इस्तेमाल आसानी से किया जा सकता है:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. यह पक्का करने के लिए कि Remote Config बैकएंड सर्वर से आपके ऐप्लिकेशन के कनेक्शन में रुकावट आने पर भी, आपका ऐप्लिकेशन सही तरीके से काम करे, अपने ऐप्लिकेशन में हर पैरामीटर के लिए डिफ़ॉल्ट वैल्यू जोड़ें. इसके लिए, अपने initServerTemplate या getServerTemplate टेंप्लेट फ़ंक्शन में defaultConfig जोड़ें:

    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 इंस्टॉलेशन आईडी को randomizationId या यूज़र आईडी के तौर पर रिकॉर्ड कर सकता है, ताकि यह पक्का किया जा सके कि आपके सर्वर को सही रैंडमाइज़्ड ग्रुप में जोड़ दिया जाता है. कॉन्टेंट बनाने नीचे दिया गया उदाहरण एक बुनियादी उदाहरण है, लेकिन आप अलग-अलग क्लाइंट के लिए अलग-अलग randomizationIds जनरेट करने के लिए सर्वर ताकि यह पक्का किया जा सके कि उपयोगकर्ताओं को Remote Config प्रतिशत में पैसे चुकाकर ली गई सदस्यता के आधार पर ग्रुप.

    प्रतिशत की शर्तों के बारे में ज़्यादा जानकारी के लिए, उपयोगकर्ता को रैंडम प्रतिशत में देखें.

    // 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. इसके बाद, कॉन्फ़िगरेशन कॉन्स्टेंट से अपनी ज़रूरत के हिसाब से पैरामीटर वैल्यू निकालें. इस्तेमाल की जाने वाली चीज़ें Remote Config से वैल्यू को उम्मीद के मुताबिक कास्ट करने के लिए getters फ़ॉर्मैट. ये टाइप काम करते हैं:

    • बूलियन: 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 सर्वर.

चौथा चरण: Remote Config में, सर्वर के हिसाब से पैरामीटर वैल्यू सेट करना

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

सर्वर के हिसाब से Remote Config टेंप्लेट बनाने के लिए:

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

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

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

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

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