Cloud Functions और Vertex AI के साथ सर्वर-साइड रिमोट कॉन्फ़िगरेशन का इस्तेमाल करें

इस गाइड में, Vertex AI Gemini API को सर्वर-साइड कॉल करने के लिए, सर्वर-साइड Remote Config के साथ दूसरी जनरेशन 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 प्रोजेक्ट में "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 और Vertex AI के साथ Cloud Functions की दूसरी जनरेशन बनाने, उसे टेस्ट करने, और डिप्लॉय करने के लिए, यह तरीका अपनाएं:

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

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

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

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

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

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

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

    const { onRequest } = require("firebase-functions/v2/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 क्लाइंट देखें.

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

    // 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. Vertex AI सेट अप करें और चैट और जवाब देने का लॉजिक जोड़ें:

      // 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 कंसोल खोलें. इसके बाद, नेविगेशन मेन्यू में जाकर चलाएं को बड़ा करें और Remote Config को चुनें.
  2. Remote Config पेज पर सबसे ऊपर मौजूद, क्लाइंट/सर्वर सिलेक्टर में जाकर, सर्वर को चुनें.

    • अगर आपने पहली बार 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 Vertex AI के लिए सुरक्षा सेटिंग. JSON [{"category": "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "HarmBlockThreshold.BLOCK_LOW_AND_ABOVE"}]
    location जगह की जानकारी Vertex AI सेवा और मॉडल को चलाने के लिए. स्ट्रिंग us-central1
    is_vertex_enabled यह एक ऐसा पैरामीटर है जिसे सेट करना ज़रूरी नहीं है. इससे यह कंट्रोल किया जाता है कि क्वेरी Vertex AI को भेजी जाएं या नहीं. बूलियन 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 सर्वर टेंप्लेट में कॉन्फ़िगर किया गया है. इसलिए, इसे Vertex AI Gemini API के ज़रिए 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 और Vertex AI Gemini API के साथ इंटरैक्ट करने के लिए, सभी ज़रूरी भूमिकाएं और अनुमतियां होती हैं. इसलिए, आपको अपने फ़ंक्शन को चलाने के लिए इसका इस्तेमाल करना होगा. इसके लिए, आपके पास अपने उपयोगकर्ता खाते से खाते के लिए टोकन बनाने की सुविधा होनी चाहिए.

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

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

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

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

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

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

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

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 सर्वर टेंप्लेट में बदलाव किए जा सकते हैं. साथ ही, उन बदलावों को पब्लिश किया जा सकता है और अलग-अलग विकल्पों को आज़माया जा सकता है.

अगले चरण