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 प्रोजेक्ट अपने-आप) बनाएं.
    • दूसरा तरीका: "प्रोजेक्ट बनाएं" वर्कफ़्लो के पहले चरण में, ड्रॉप-डाउन मेन्यू से अपने Google Cloud प्रोजेक्ट का नाम चुनकर, मौजूदा Google Cloud प्रोजेक्ट में "Firebase जोड़ें".
  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 सेवा खाते के लिए, IAM अनुमतियां कॉन्फ़िगर करें और अपनी कुंजी सेव करें.
  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 एसडीके जोड़ें. साथ ही, ऐप्लिकेशन को शुरू करने के लिए, फ़ाइल में यह कोड चिपकाएं:

    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 पैरामीटर से मेल खाते हैं जिन्हें आपको इस गाइड में आगे कॉन्फ़िगर करना है. इन पैरामीटर के बारे में ज़्यादा जानकारी के लिए, 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 कंसोल में अपने 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 Service Account Credentials API को चालू करें.
  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 सर्वर टेंप्लेट में बदलाव किए जा सकते हैं. साथ ही, उन बदलावों को पब्लिश किया जा सकता है और अलग-अलग विकल्पों को आज़माया जा सकता है.

अगले चरण