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

इस गाइड में बताया गया है कि Vertex AI Gemini API को सर्वर-साइड कॉल करने के लिए, सर्वर-साइड रिमोट कॉन्फ़िगरेशन के साथ 2nd gen Cloud Functions का इस्तेमाल कैसे करें.

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

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

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

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

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

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

  2. प्रोजेक्ट बनाएं पर क्लिक करें और इसके बाद इनमें से किसी विकल्प का इस्तेमाल करें:

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

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

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

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

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

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

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

    Node.js और npm को इंस्टॉल करने के लिए, हमारा सुझाव है कि आप नोड वर्शन मैनेजर का इस्तेमाल करें.

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

    npm install -g firebase-tools@latest
    

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

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

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

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

अब आप इस समाधान को लागू करने के लिए तैयार हैं.

लागू करने का तरीका

दूसरी पीढ़ी के Cloud फ़ंक्शन बनाने, टेस्ट करने, और डिप्लॉय करने के लिए यह तरीका अपनाएं. रिमोट कॉन्फ़िगरेशन और Vertex AI की मदद से यह तरीका अपनाएं:

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

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

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

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

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

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

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

    firebase login
    
  3. 'Firebase के लिए Cloud Functions' शुरू करने के लिए, नीचे दिया गया कमांड चलाएं:

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

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

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

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

  7. एडमिन 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 चरण को नोड वर्शन 18 के तौर पर कॉन्फ़िगर किया गया है और Node.js 20 का इस्तेमाल किया जा रहा है, तो फ़ाइल को अपडेट करके 20 का इस्तेमाल करें:

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

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

इस समाधान में, अपना फ़ंक्शन चलाने के लिए, Firebase एडमिन SDK टूल सेवा खाते का इस्तेमाल किया जाएगा.

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

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

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

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

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

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

  1. अपने कोड बेस में, functions/index.js को टेक्स्ट एडिटर या IDE में खोलें.
  2. मौजूदा कॉन्टेंट मिटाएं और फिर एडमिन SDK टूल, रिमोट कॉन्फ़िगरेशन, और 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. वे डिफ़ॉल्ट वैल्यू कॉन्फ़िगर करें जिनका इस्तेमाल आपका फ़ंक्शन, रिमोट कॉन्फ़िगरेशन सर्वर से कनेक्ट न कर पाने पर करेगा. यह समाधान, textModel, generationConfig, safetySettings, textPrompt, और location को रिमोट कॉन्फ़िगरेशन पैरामीटर के तौर पर कॉन्फ़िगर करता है. यह उन रिमोट कॉन्फ़िगरेशन पैरामीटर के साथ होता है जिन्हें इस गाइड में कॉन्फ़िगर किया जाएगा. इन पैरामीटर के बारे में ज़्यादा जानकारी के लिए, 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-preview-0514",
      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. फ़ंक्शन बनाएं और सर्वर-साइड रिमोट कॉन्फ़िगरेशन सेट अप करें:

    // 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. फ़ाइल सेव करें और बंद करें.

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

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

  1. Firebase कंसोल खोलें और नेविगेशन मेन्यू से, Run सेक्शन को बड़ा करें और रिमोट कॉन्फ़िगरेशन चुनें.
  2. रिमोट कॉन्फ़िगरेशन पेज पर सबसे ऊपर दिए गए क्लाइंट/सर्वर सिलेक्टर से सर्वर चुनें.

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

    पैरामीटर का नाम जानकारी टाइप डिफ़ॉल्ट वैल्यू
    model_name मॉडल का नाम
    अपने कोड में मॉडल के नाम की अप-टू-डेट सूचियां इस्तेमाल करने के लिए, मॉडल वर्शन और लाइफ़साइकल या उपलब्ध मॉडल के नाम देखें.
    स्ट्रिंग gemini-1.5-pro-preview-0514
    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 लोकल एम्युलेटर सुइट में उसकी जांच करें

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

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

    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 एम्युलेटर लॉग' पेज या अपने कंसोल पर वापस जाएं और किसी भी गड़बड़ी या चेतावनी की जांच करें.

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

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

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

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

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

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

firebase deploy --only functions

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

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

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

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

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

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

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

'एडमिन SDK' सेवा खाते के पास फ़ंक्शन चलाने और रिमोट कॉन्फ़िगरेशन और Vertex AI Gemini API से इंटरैक्ट करने के लिए, सभी ज़रूरी भूमिकाएं और अनुमतियां होती हैं. इसलिए, इसका इस्तेमाल अपने फ़ंक्शन को चलाने के लिए किया जा सकता है. इसके लिए, आपके पास अपने उपयोगकर्ता खाते से खाते के लिए टोकन बनाने की सुविधा होनी चाहिए.

यहां उस उपयोगकर्ता खाते को कॉन्फ़िगर करने का तरीका बताया गया है जिसे एडमिन SDK सेवा खाते के खास अधिकारों के साथ चलाया जा सकता है.

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

    सेवा खाते को झूठी पहचान का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Google Cloud के दस्तावेज़ में सेवा खाते के नाम पर काम करना देखें.

  4. Google Cloud Console का Cloud 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"

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

अगले चरण