Cloud Functions और एजेंट प्लैटफ़ॉर्म के साथ, सर्वर-साइड रिमोट कॉन्फ़िगरेशन का इस्तेमाल करना

इस गाइड में, Agent Platform Gemini API (formerly Vertex AI) को सर्वर-साइड कॉल करने के लिए, सर्वर-साइड Remote Config के साथ 2nd gen Cloud Functions का इस्तेमाल शुरू करने का तरीका बताया गया है.

इस ट्यूटोरियल में, आपको चैटबॉट जैसे फ़ंक्शन में Remote Config जोड़ने का तरीका बताया जाएगा. यह फ़ंक्शन, उपयोगकर्ता के सवालों के जवाब देने के लिए Gemini मॉडल का इस्तेमाल करता है. Remote Config, Gemini API इनपुट मैनेज करेगा. इनमें ऐसा प्रॉम्प्ट भी शामिल है जिसे आपको उपयोगकर्ता की क्वेरी से पहले जोड़ना होगा. साथ ही, Firebase कंसोल से इन इनपुट को अपनी ज़रूरत के हिसाब से अपडेट किया जा सकता है. Firebase Local Emulator Suite का इस्तेमाल, फ़ंक्शन को टेस्ट करने और उसमें मौजूद गड़बड़ियों को ठीक करने के लिए भी किया जाएगा. इसके बाद, यह पुष्टि करने के बाद कि फ़ंक्शन काम कर रहा है, इसे Google Cloud पर डिप्लॉय और टेस्ट किया जाएगा.

ज़रूरी शर्तें

इस गाइड में यह माना गया है कि आपको JavaScript का इस्तेमाल करके ऐप्लिकेशन डेवलप करने के बारे में जानकारी है.

Firebase प्रोजेक्ट सेट अप करना

अगर आपके पास पहले से कोई Firebase प्रोजेक्ट नहीं है, तो:

  1. Firebase console में साइन इन करें.

  2. प्रोजेक्ट बनाएं पर क्लिक करें. इसके बाद, इनमें से कोई एक विकल्प चुनें:

    • पहला विकल्प: "प्रोजेक्ट बनाएं" वर्कफ़्लो के पहले चरण में, प्रोजेक्ट का नया नाम डालकर एक नया Firebase प्रोजेक्ट बनाएं. इससे, Google Cloud प्रोजेक्ट अपने-आप बन जाएगा.
    • दूसरा विकल्प: "Firebase जोड़ें" का इस्तेमाल करके, किसी मौजूदा Google Cloud प्रोजेक्ट में Firebase जोड़ें. इसके लिए, "प्रोजेक्ट बनाएं" वर्कफ़्लो के पहले चरण में, ड्रॉप-डाउन मेन्यू से अपना Google Cloud प्रोजेक्ट का नाम चुनें.
  3. जब आपसे कहा जाए, तब आपको इस समाधान का इस्तेमाल करने के लिए Google Analytics सेट अप करने की ज़रूरत नहीं है.

  4. प्रोजेक्ट बनाने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.

अगर आपके पास पहले से ही कोई Firebase प्रोजेक्ट है, तो:

अपना डेवलपमेंट एनवायरमेंट कॉन्फ़िगर करें पर जाएं.

डेवलपमेंट एनवायरमेंट को कॉन्फ़िगर करना

फ़ंक्शन लिखने के लिए, आपको Node.js एनवायरमेंट की ज़रूरत होगी. साथ ही, फ़ंक्शन को Cloud Functions रनटाइम में डिप्लॉय करने के लिए, आपको Firebase CLI की ज़रूरत होगी.

  1. Node.js और npm इंस्टॉल करें.

    Node.js और npm इंस्टॉल करने के लिए, हम Node Version Manager का इस्तेमाल करने का सुझाव देते हैं.

  2. अपने पसंदीदा तरीके का इस्तेमाल करके, Firebase सीएलआई इंस्टॉल करें. उदाहरण के लिए, npm का इस्तेमाल करके सीएलआई इंस्टॉल करने के लिए, यह निर्देश चलाएं:

    npm install -g firebase-tools@latest
    

    इस कमांड से, दुनिया भर में उपलब्ध firebase कमांड इंस्टॉल हो जाती है. अगर यह कमांड काम नहीं करती है, तो आपको npm की अनुमतियां बदलनी पड़ सकती हैं.

    firebase-tools के नए वर्शन पर अपडेट करने के लिए, उसी निर्देश को फिर से चलाएं.

  3. firebase-functions और firebase-admin इंस्टॉल करें. इसके बाद, --save का इस्तेमाल करके उन्हें अपने package.json में सेव करें:

    npm install firebase-functions@latest firebase-admin@latest --save
    

अब इस समाधान को लागू किया जा सकता है.

लागू करना

Remote Config और Agent Platform के साथ 2nd gen Cloud Functions को बनाने, टेस्ट करने, और डिप्लॉय करने के लिए, यह तरीका अपनाएं:

  1. Google Cloud कंसोल में, Agent Platform सुझाए गए एपीआई चालू करें.
  2. अपने प्रोजेक्ट को शुरू करें और Node की डिपेंडेंसी इंस्टॉल करें.
  3. अपने Admin SDK सेवा खाते के लिए, आईएएम अनुमतियां कॉन्फ़िगर करें और अपनी कुंजी सेव करें.
  4. फ़ंक्शन बनाएं.
  5. सर्वर के हिसाब से Remote Config टेंप्लेट बनाएं.
  6. अपने फ़ंक्शन को डिप्लॉय करें और Firebase Local Emulator Suite में उसकी जांच करें.
  7. अपने फ़ंक्शन को Google Cloud पर डिप्लॉय करें.

पहला चरण: Google Cloud कंसोल में, Agent Platform के सुझाए गए एपीआई चालू करना

  1. Google Cloud कंसोल खोलें. इसके बाद, जब आपसे कहा जाए, तब अपना प्रोजेक्ट चुनें.
  2. कंसोल में सबसे ऊपर मौजूद खोजें फ़ील्ड में, Agent Platform डालें. इसके बाद, Agent Platform के नतीजे के तौर पर दिखने का इंतज़ार करें.
  3. Agent Platform को चुनें. Agent Platform डैशबोर्ड दिखेगा.
  4. सुझाए गए सभी एपीआई चालू करें पर क्लिक करें.

    एपीआई चालू होने में कुछ समय लग सकता है. सुविधा चालू होने तक, पेज को खुला रखें और उस पर काम करते रहें.

  5. अगर बिलिंग की सुविधा चालू नहीं है, तो आपको Cloud Billing खाता जोड़ने या लिंक करने के लिए कहा जाएगा. बिलिंग खाता चालू करने के बाद, Agent Platformडैशबोर्ड पर वापस जाएं और पुष्टि करें कि सुझाए गए सभी एपीआई चालू हैं.

दूसरा चरण: अपने प्रोजेक्ट को शुरू करें और Node की डिपेंडेंसी इंस्टॉल करें

  1. अपने कंप्यूटर पर एक टर्मिनल खोलें और उस डायरेक्ट्री पर जाएं जहां आपको फ़ंक्शन बनाना है.
  2. Firebase में लॉग इन करें:

    firebase login
    
  3. Cloud Functions for Firebase को शुरू करने के लिए, यह कमांड चलाएं:

    firebase init functions
    
  4. किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें को चुनें और अपना प्रोजेक्ट आईडी डालें.

  5. जब आपसे इस्तेमाल की जाने वाली भाषा चुनने के लिए कहा जाए, तो JavaScript चुनें और Enter दबाएं.

  6. अन्य सभी विकल्पों के लिए, डिफ़ॉल्ट सेटिंग चुनें.

    मौजूदा डायरेक्ट्री में एक functions डायरेक्ट्री बनाई जाती है. इसके अंदर, आपको ये चीज़ें मिलेंगी: index.js फ़ाइल, जिसका इस्तेमाल फ़ंक्शन बनाने के लिए किया जाएगा, node_modules डायरेक्ट्री, जिसमें आपके फ़ंक्शन के लिए ज़रूरी डिपेंडेंसी शामिल हैं, और package.json फ़ाइल, जिसमें पैकेज डिपेंडेंसी शामिल हैं.

  7. Admin SDK और Agent Platform पैकेज जोड़ने के लिए, यहां दिए गए निर्देश चलाएं. साथ ही, --save का इस्तेमाल करके यह पक्का करें कि यह आपकी package.json फ़ाइल में सेव हो गया है:

    cd functions
    npm install firebase-admin@latest @google-cloud/vertexai --save
    

अब आपकी functions/package.json फ़ाइल ऐसी दिखनी चाहिए. इसमें सबसे नए वर्शन दिए गए हैं:

  {
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
      "serve": "firebase emulators:start --only functions",
      "shell": "firebase functions:shell",
      "start": "npm run shell",
      "deploy": "firebase deploy --only functions",
      "logs": "firebase functions:log"
    },
    "engines": {
      "node": "20"
    },
    "main": "index.js",
    "dependencies": {
      "@google-cloud/vertexai": "^1.1.0",
      "firebase-admin": "^12.1.0",
      "firebase-functions": "^5.0.0"
    },
    "devDependencies": {
      "firebase-functions-test": "^3.1.0"
    },
    "private": true
  }

ध्यान दें कि ESLint का इस्तेमाल करने पर, आपको एक ऐसा स्टैंज़ा दिखेगा जिसमें यह शामिल होगा. इसके अलावा, यह भी पक्का करें कि नोड इंजन का वर्शन, Node.js के इंस्टॉल किए गए वर्शन और Google Cloud पर चलाए जा रहे वर्शन से मेल खाता हो. उदाहरण के लिए, अगर आपके package.json में मौजूद engines स्टैंज़ा को Node के वर्शन 18 के तौर पर कॉन्फ़िगर किया गया है और Node.js 20 का इस्तेमाल किया जा रहा है, तो फ़ाइल को अपडेट करके 20 का इस्तेमाल करें:

  "engines": {
    "node": "20"
  },

तीसरा चरण: अपने Admin SDK सेवा खाते के लिए IAM अनुमतियां कॉन्फ़िगर करें और अपनी कुंजी सेव करें

इस समाधान में, आपको Firebase Admin SDK सेवा खाते का इस्तेमाल करके अपना फ़ंक्शन चलाना होगा.

  1. Google Cloud console में, IAM और एडमिन पेज खोलें. इसके बाद, Admin SDK सेवा खाता (firebase-adminsdk नाम वाला) ढूंढें.
  2. खाता चुनें और मुख्य उपयोगकर्ता की भूमिका में बदलाव करें पर क्लिक करें. 'बदलाव करने का ऐक्सेस' पेज दिखेगा.
  3. कोई दूसरी भूमिका जोड़ें पर क्लिक करें. इसके बाद, Remote Config व्यूअर को चुनें.
  4. दूसरी भूमिका जोड़ें पर क्लिक करें. इसके बाद, एआई प्लैटफ़ॉर्म डेवलपर चुनें.
  5. दूसरी भूमिका जोड़ें पर क्लिक करें. इसके बाद, Agent Platform उपयोगकर्ता को चुनें.
  6. दूसरी भूमिका जोड़ें पर क्लिक करें. इसके बाद, Cloud Run Invoker को चुनें.
  7. सेव करें पर क्लिक करें.

इसके बाद, Admin SDK सेवा खाते के क्रेडेंशियल एक्सपोर्ट करें और उन्हें अपने GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल में सेव करें.

  1. Google Cloud कंसोल में, क्रेडेंशियल पेज खोलें.
  2. ज़्यादा जानकारी पेज खोलने के लिए, Admin SDK सेवा खाते पर क्लिक करें.
  3. कुंजियां पर क्लिक करें.
  4. कुंजी जोड़ें > नई कुंजी बनाएं पर क्लिक करें.
  5. पक्का करें कि JSON को की टाइप के तौर पर चुना गया हो. इसके बाद, बनाएं पर क्लिक करें.
  6. कुंजी को अपने कंप्यूटर पर किसी सुरक्षित जगह पर डाउनलोड करें.
  7. अपने टर्मिनल से, कुंजी को एनवायरमेंट वैरिएबल के तौर पर एक्सपोर्ट करें:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
    

चौथा चरण: फ़ंक्शन बनाना

इस चरण में, आपको एक ऐसा फ़ंक्शन बनाना होगा जो उपयोगकर्ता के इनपुट को हैंडल करे और एआई की मदद से जवाब जनरेट करे. आपको कई कोड स्निपेट को मिलाकर एक ऐसा फ़ंक्शन बनाना होगा जो Admin SDK और Agent Platform Gemini API (formerly Vertex AI) को शुरू करता है. साथ ही, Remote Config का इस्तेमाल करके डिफ़ॉल्ट पैरामीटर कॉन्फ़िगर करता है, Remote Config के नए पैरामीटर फ़ेच करता है, उपयोगकर्ता के इनपुट को प्रोसेस करता है, और उपयोगकर्ता को जवाब वापस स्ट्रीम करता है.

  1. अपने कोडबेस में, टेक्स्ट एडिटर या IDE में functions/index.js खोलें.
  2. मौजूदा कॉन्टेंट मिटाएं. इसके बाद, Admin SDK, Remote Config, और Agent Platform SDK टूल जोड़ें. साथ ही, ऐप्लिकेशन को शुरू करने के लिए, फ़ाइल में यह कोड चिपकाएं:

    const { onRequest } = require("firebase-functions/https");
    const logger = require("firebase-functions/logger");
    
    const { initializeApp } = require("firebase-admin/app");
    const { VertexAI } = require('@google-cloud/vertexai');
    const { getRemoteConfig } = require("firebase-admin/remote-config");
    
    // Set and check environment variables.
    const project = process.env.GCLOUD_PROJECT;
    
    // Initialize Firebase.
    const app = initializeApp();
    
  3. डिफ़ॉल्ट वैल्यू कॉन्फ़िगर करें. अगर आपका फ़ंक्शन Remote Config सर्वर से कनेक्ट नहीं हो पाता है, तो वह इन वैल्यू का इस्तेमाल करेगा. यह समाधान, textModel, generationConfig, safetySettings, textPrompt, और location को Remote Config पैरामीटर के तौर पर कॉन्फ़िगर करता है. ये Remote Config पैरामीटर, उन Remote Config पैरामीटर से मेल खाते हैं जिन्हें आपको इस गाइड में आगे कॉन्फ़िगर करना है. इन पैरामीटर के बारे में ज़्यादा जानकारी के लिए, Vertex AI Node.js क्लाइंट देखें.

    इसके अलावा, आपके पास यह कंट्रोल करने के लिए पैरामीटर को कॉन्फ़िगर करने का विकल्प भी होता है कि आपको Agent Platform Gemini API (formerly Vertex AI) को ऐक्सेस करना है या नहीं. इस उदाहरण में, vertex_enabled नाम का पैरामीटर है. यह सेटअप, फ़ंक्शन की जांच करते समय काम आ सकता है. नीचे दिए गए कोड स्निपेट में, इस वैल्यू को false पर सेट किया गया है. इससे बुनियादी फ़ंक्शन डिप्लॉयमेंट की जांच करते समय, Agent Platform का इस्तेमाल नहीं किया जाएगा. इसे true पर सेट करने से, Agent Platform Gemini API (formerly Vertex AI) चालू हो जाएगा.

    // Define default (fallback) parameter values for Remote Config.
    const defaultConfig = {
    
      // Default values for Vertex AI.
      model_name: "gemini-1.5-flash-002",
      generation_config: [{
        "stopSequences": [], "temperature": 0.7,
        "maxOutputTokens": 64, "topP": 0.1, "topK": 20
      }],
      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!",
      safety_settings: [{
        "category":
          "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE"
      }],
      location: 'us-central1',
    
      // Disable Vertex AI Gemini API access for testing.
      vertex_enabled: false
    };
    
  4. फ़ंक्शन बनाएं और सर्वर-साइड Remote Config सेट अप करें:

    // Export the function.
    exports.generateWithVertex = onRequest(async (request, response) => {
    
      try {
    
        // Set up Remote Config.
        const rc = getRemoteConfig(app);
    
        // Get the Remote Config template and assign default values.
        const template = await rc.getServerTemplate({
          defaultConfig: defaultConfig
        });
    
        // Add the template evaluation to a constant.
        const config = template.evaluate();
    
        // Obtain values from Remote Config.
        const textModel = config.getString("model_name") ||
            defaultConfig.model_name;
        const textPrompt = config.getString("prompt") || defaultConfig.prompt;
        const generationConfig = config.getString("generation_config") ||
            defaultConfig.generation_config;
        const safetySettings = config.getString("safety_settings") ||
            defaultConfig.safety_settings;
        const location = config.getString("location") ||
            defaultConfig.location;
        const vertexEnabled = config.getBoolean("is_vertex_enabled") ||
            defaultConfig.vertex_enabled;
    
  5. Agent Platform को सेट अप करें और चैट और जवाब देने का लॉजिक जोड़ें:

      // Allow user input.
      const userInput = request.query.prompt || '';
    
      // Instantiate Vertex AI.
        const vertex_ai = new VertexAI({ project: project, location: location });
        const generativeModel = vertex_ai.getGenerativeModel({
          model: textModel,
          safety_settings: safetySettings,
          generation_config: generationConfig,
        });
    
        // Combine prompt from Remote Config with optional user input.
        const chatInput = textPrompt + " " + userInput;
    
        if (!chatInput) {
          return res.status(400).send('Missing text prompt');
        }
        // If vertexEnabled isn't true, do not send queries to Vertex AI.
        if (vertexEnabled !== true) {
          response.status(200).send({
            message: "Vertex AI call skipped. Vertex is not enabled."
          });
          return;
        }
    
        logger.log("\nRunning with model ", textModel, ", prompt: ", textPrompt,
          ", generationConfig: ", generationConfig, ", safetySettings: ",
          safetySettings, " in ", location, "\n");
    
        const result = await generativeModel.generateContentStream(chatInput); 
        response.writeHead(200, { 'Content-Type': 'text/plain' });
    
        for await (const item of result.stream) {
          const chunk = item.candidates[0].content.parts[0].text;
          logger.log("Received chunk:", chunk);
          response.write(chunk);
        }
    
        response.end();
    
      } catch (error) {
        logger.error(error);
        response.status(500).send('Internal server error');
      }
    });
    
  6. फ़ाइल को सेव करें और बंद करें.

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

इसके बाद, सर्वर-साइड Remote Config टेंप्लेट बनाएं. साथ ही, अपने फ़ंक्शन में इस्तेमाल करने के लिए पैरामीटर और वैल्यू कॉन्फ़िगर करें. सर्वर के लिए Remote Config टेंप्लेट बनाने के लिए:

  1. Firebase console में, DevOps & Engagement > रिमोट कॉन्फ़िगरेशन पर जाएं.

  2. पेज के सबसे ऊपर मौजूद, क्लाइंट/सर्वर सिलेक्टर से, सर्वर चुनें.

    • अगर Remote Config या सर्वर टेंप्लेट का इस्तेमाल पहली बार किया जा रहा है, तो कॉन्फ़िगरेशन बनाएं पर क्लिक करें. आपको अपना पहला सर्वर-साइड पैरामीटर बनाएं पैनल दिखेगा.
    • अगर आपने Remote Config सर्वर टेंप्लेट का इस्तेमाल पहले भी किया है, तो पैरामीटर जोड़ें पर क्लिक करें.
  3. यहां दिए गए Remote Config पैरामीटर तय करें:

    पैरामीटर का नाम ब्यौरा टाइप डिफ़ॉल्ट वैल्यू
    model_name मॉडल का नाम
    अपने कोड में इस्तेमाल करने के लिए, मॉडल के नामों की अप-टू-डेट सूचियां देखने के लिए, मॉडल के वर्शन और लाइफ़साइकल या उपलब्ध मॉडल के नाम देखें.
    स्ट्रिंग gemini-2.0-flash
    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}]
    safety_settings Agent Platform के लिए सुरक्षा सेटिंग JSON [{"category": "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "HarmBlockThreshold.BLOCK_LOW_AND_ABOVE"}]
    location Agent Platform सेवा और मॉडल को चलाने की जगह की जानकारी स्ट्रिंग global
    is_vertex_enabled यह एक ऐसा पैरामीटर है जिसे सेट करना ज़रूरी नहीं है. इससे यह कंट्रोल होता है कि क्वेरी Agent Platform को भेजी जाएं या नहीं. बूलियन true
  4. पैरामीटर जोड़ने के बाद, उनकी दोबारा जांच करें. साथ ही, यह भी देखें कि उनके डेटा टाइप सही हों. इसके बाद, बदलाव पब्लिश करें पर क्लिक करें.

छठा चरण: फ़ंक्शन को डिप्लॉय करें और Firebase Local Emulator Suite में उसकी जांच करें

अब Firebase Local Emulator Suite की मदद से, अपने फ़ंक्शन को स्थानीय तौर पर डिप्लॉय और टेस्ट किया जा सकता है.

  1. पक्का करें कि आपने GOOGLE_APPLICATION_CREDENTIALS को एनवायरमेंट वैरिएबल के तौर पर सेट किया हो. इसके लिए, तीसरा चरण: अपने Admin SDK सेवा खाते के लिए IAM अनुमतियां कॉन्फ़िगर करें और अपनी कुंजी सेव करें में दिया गया तरीका अपनाएं. इसके बाद, अपनी functions डायरेक्ट्री की पैरंट डायरेक्ट्री से, अपने फ़ंक्शन को Firebase Emulator में डिप्लॉय करें:

    firebase emulators:start --project PROJECT_ID --only functions
    
  2. एम्युलेटर के लॉग पेज को खोलें. इससे पता चलना चाहिए कि आपका फ़ंक्शन लोड हो गया है.

  3. नीचे दी गई कमांड चलाकर, अपने फ़ंक्शन को ऐक्सेस करें. यहां PROJECT_ID आपका प्रोजेक्ट आईडी है और LOCATION वह क्षेत्र है जहां आपने फ़ंक्शन को डिप्लॉय किया है. उदाहरण के लिए, us-central1:

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex
    
  4. जवाब मिलने का इंतज़ार करें. इसके बाद, Firebase Emulator के लॉग पेज या अपने कंसोल पर वापस जाएं और देखें कि कोई गड़बड़ी या चेतावनी तो नहीं है.

  5. उपयोगकर्ता से मिले कुछ इनपुट भेजकर देखें. ध्यान दें कि is_vertex_enabled को आपके Remote Config सर्वर टेंप्लेट में कॉन्फ़िगर किया गया है. इसलिए, इसे Agent Platform Gemini API (formerly Vertex AI) के ज़रिए Gemini मॉडल को ऐक्सेस करना चाहिए. साथ ही, इस पर शुल्क लग सकता है:

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
    
  6. Remote Config कंसोल में जाकर, अपने Remote Config सर्वर टेंप्लेट में बदलाव करें. इसके बाद, बदलाव देखने के लिए अपने फ़ंक्शन को फिर से ऐक्सेस करें.Firebase

सातवां चरण: अपने फ़ंक्शन को Google Cloud पर डिप्लॉय करना

फ़ंक्शन की जांच करने और उसकी पुष्टि करने के बाद, उसे Google Cloud पर डिप्लॉय किया जा सकता है. इसके बाद, लाइव फ़ंक्शन की जांच की जा सकती है.

अपने फ़ंक्शन को डिप्लॉय करना

Firebase सीएलआई का इस्तेमाल करके, फ़ंक्शन डिप्लॉय करें:

firebase deploy --only functions

फ़ंक्शन को बिना पुष्टि किए ऐक्सेस करने की सुविधा ब्लॉक करना

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

फ़ंक्शन को बिना पुष्टि किए ऐक्सेस करने से रोकने के लिए:

  1. Google Cloud कंसोल में, Cloud Run खोलें.

  2. generateWithVertex पर क्लिक करें. इसके बाद, सुरक्षा टैब पर क्लिक करें.

  3. पुष्टि करना ज़रूरी है को चालू करें. इसके बाद, सेव करें पर क्लिक करें.

Admin SDK सेवा खाते के क्रेडेंशियल का इस्तेमाल करने के लिए, अपना उपयोगकर्ता खाता कॉन्फ़िगर करना

Admin SDK सेवा खाते के पास फ़ंक्शन को चलाने और Remote Config और Agent Platform Gemini API (formerly Vertex AI) के साथ इंटरैक्ट करने के लिए, सभी ज़रूरी भूमिकाएं और अनुमतियां होती हैं. इसलिए, आपको अपने फ़ंक्शन को चलाने के लिए इसका इस्तेमाल करना चाहिए. इसके लिए, आपके पास अपने उपयोगकर्ता खाते से खाते के लिए टोकन बनाने की अनुमति होनी चाहिए.

यहां बताया गया है कि उपयोगकर्ता खाते को कैसे कॉन्फ़िगर करें और Admin SDK सेवा खाते के विशेषाधिकारों के साथ फ़ंक्शन को कैसे चलाएं.

  1. Google Cloud कंसोल में, IAM सर्विस अकाउंट क्रेडेंशियल एपीआई चालू करें.
  2. अपने उपयोगकर्ता खाते को सेवा खाता टोकन क्रिएटर की भूमिका असाइन करें: Google Cloud कंसोल में, IAM और एडमिन > IAM खोलें. इसके बाद, अपना उपयोगकर्ता खाता चुनें और मुख्य खाता में बदलाव करें > कोई दूसरी भूमिका जोड़ें पर क्लिक करें.
  3. सेवा खाता टोकन क्रिएटर को चुनें. इसके बाद, सेव करें पर क्लिक करें.

    सेवा खाते के डुप्लीकेट के बारे में ज़्यादा जानकारी के लिए, Google Cloud के दस्तावेज़ में सेवा खाते का डुप्लीकेट लेख पढ़ें.

  4. Google Cloud कंसोल Cloud Functions पेज खोलें और Functions सूची में मौजूद generateWithVertex फ़ंक्शन पर क्लिक करें.

  5. ट्रिगर करें > बदलाव करें चुनें. इसके बाद, रनटाइम, बिल्ड, कनेक्शन, और सुरक्षा से जुड़ी सेटिंग को बड़ा करें.

  6. रनटाइम टैब में जाकर, रनटाइम सेवा खाते को Admin SDK खाते में बदलें.

  7. आगे बढ़ें पर क्लिक करें. इसके बाद, Deploy पर क्लिक करें.

gcloud सीएलआई सेट अप करना

कमांड लाइन से अपने फ़ंक्शन को सुरक्षित तरीके से चलाने और उसकी जांच करने के लिए, आपको Cloud Functions सेवा के साथ पुष्टि करनी होगी और पुष्टि करने वाला मान्य टोकन पाना होगा.

टोकन जनरेट करने की सुविधा चालू करने के लिए, gcloud सीएलआई इंस्टॉल करें और उसे कॉन्फ़िगर करें:

  1. अगर आपके कंप्यूटर पर gcloud सीएलआई पहले से इंस्टॉल नहीं है, तो इसे इंस्टॉल करें. इसके लिए, gcloud सीएलआई इंस्टॉल करें में दिया गया तरीका अपनाएं.

  2. अपने Google Cloud खाते के ऐक्सेस क्रेडेंशियल पाएं:

    gcloud auth login
    
  3. gcloud में अपना प्रोजेक्ट आईडी सेट करें:

    gcloud config set project PROJECT_ID
    

अपने फ़ंक्शन की जांच करना

अब Google Cloud में अपने फ़ंक्शन की जांच की जा सकती है. फ़ंक्शन की जांच करने के लिए, यह कमांड चलाएं:

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex \
  -H "Authorization: bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json"

उपयोगकर्ता से मिले डेटा का इस्तेमाल करके फिर से कोशिश करें:

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20dogs \
 -H "Authorization: bearer $(gcloud auth print-identity-token)" \
 -H "Content-Type: application/json"

अब Remote Config सर्वर टेंप्लेट में बदलाव किए जा सकते हैं. साथ ही, उन बदलावों को पब्लिश किया जा सकता है और अलग-अलग विकल्पों को आज़माया जा सकता है.

अगले चरण