Cloud Functions ও Agent Platform-এর সাথে সার্ভার-সাইড রিমোট কনফিগ ব্যবহার করা

এই গাইড থেকে আপনি জানতে পারবেন যে কীভাবে ২য় জেনারেশন Cloud Functions ব্যবহার করে সার্ভার-সাইড Remote Config থেকে সার্ভার-সাইড কল করা যায় Agent Platform Gemini API (formerly Vertex AI)।

এই টিউটোরিয়ালে, আপনি চ্যাটবটের মতো ফাংশনে Remote Config যোগ করবেন যা ব্যবহারকারীর প্রশ্নের উত্তর দিতে Gemini মডেল ব্যবহার করে। Remote Config ইনপুট ম্যানেজ করবে Gemini API (এর মধ্যে এমন প্রম্পট অন্তর্ভুক্ত যা আপনি আগত ব্যবহারকারীর কোয়েরির আগে যোগ করবেন) এবং আপনি Firebase কনসোল থেকে চাহিদা অনুযায়ী এইসব ইনপুট আপডেট করতে পারবেন। এছাড়াও, ফাংশনটি পরীক্ষা ও ডিবাগ করার জন্য আপনি Firebase Local Emulator Suite ব্যবহার করবেন এবং এটি কাজ করছে কিনা তা যাচাই করার পরে, আপনি Google Cloud-এ এটি ডেপ্লয় ও পরীক্ষা করবেন।

পূর্বশর্ত

এই নির্দেশিকায় ধরে নেওয়া হয়েছে যে আপনি অ্যাপ্লিকেশন ডেভেলপ করার জন্য জাভাস্ক্রিপ্ট ব্যবহার করার ব্যাপারে পরিচিত।

Firebase প্রোজেক্ট সেট-আপ করা

আপনার আগে থেকে Firebase প্রোজেক্ট না থাকলে:

  1. Firebase কনসোলে সাইন-ইন করুন।

  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 CLI ইনস্টল করুন। যেমন, npm ব্যবহার করে CLI ইনস্টল করতে, এই কমান্ডটি রান করুন:

    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 সাজেস্ট করা API চালু করুন।
  2. আপনার প্রোজেক্ট ইনিশিয়ালাইজ করুন এবং Node ডিপেন্ডেন্সি ইনস্টল করুন।
  3. আপনার Admin SDK সার্ভিস অ্যাকাউন্টের জন্য IAM অনুমতি কনফিগার করুন এবং আপনার কী সেভ করুন।
  4. ফাংশন তৈরি করুন।
  5. সার্ভার-নির্দিষ্ট Remote Config টেমপ্লেট তৈরি করুন।
  6. আপনার ফাংশন ডেপ্লয় করুন এবং Firebase Local Emulator Suite-এ এটি টেস্ট করুন।
  7. Google Cloud-এ আপনার ফাংশন ডেপ্লয় করুন।

ধাপ ১: Google Cloud কনসোলে Agent Platform সাজেস্ট করা API চালু করুন

  1. Google Cloud কনসোল খুলুন এবং প্রম্পট করা হলে, আপনার প্রোজেক্ট বেছে নিন।
  2. কনসোলের সবচেয়ে উপরে সার্চ ফিল্ডে Agent Platform লিখুন এবং ফলাফল হিসেবে Agent Platform না দেখা পর্যন্ত অপেক্ষা করুন।
  3. Agent Platform বিকল্প বেছে নিন। Agent Platform ড্যাশবোর্ড দেখা যাবে।
  4. সাজেস্ট করা সব API চালু করুন বিকল্পে ক্লিক করুন।

    API চালু করার প্রসেস সম্পূর্ণ হতে কয়েক মুহূর্ত সময় লাগতে পারে। চালু করার প্রসেস শেষ না হওয়া পর্যন্ত পৃষ্ঠাটি খোলা ও অ্যাক্টিভ রাখুন।

  5. বিলিং চালু করা না থাকলে, আপনাকে একটি Cloud Billing অ্যাকাউন্ট যোগ করতে বা লিঙ্ক করতে বলা হবে। বিলিং অ্যাকাউন্ট চালু করার পরে, Agent Platform ড্যাশবোর্ডে ফিরে যান এবং যাচাই করুন যে সমস্ত সাজেস্ট করা API চালু আছে।

ধাপ ২: আপনার প্রোজেক্ট শুরু করুন এবং Node ডিপেন্ডেন্সি ইনস্টল করুন

  1. আপনার কম্পিউটারে একটি টার্মিনাল খুলুন এবং সেই ডিরেক্টরিতে নেভিগেট করুন যেখানে আপনি ফাংশন তৈরি করার পরিকল্পনা করেছেন।
  2. Firebase-এ লগ-ইন করুন:

    firebase login
    
  3. Cloud Functions for Firebase ইনিশিয়ালাইজ করতে এই কমান্ড রান করুন:

    firebase init functions
    
  4. আগে থেকে থাকা প্রোজেক্ট ব্যবহার করুন বিকল্প বেছে নিন এবং আপনার প্রোজেক্ট আইডি উল্লেখ করুন।

  5. ব্যবহার করার জন্য ভাষা বেছে নিতে প্রম্পট করা হলে, জাভাস্ক্রিপ্ট বেছে নিয়ে 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 কনসোলে, IAM ও অ্যাডমিন পৃষ্ঠাটি খুলুন, এবং Admin SDK পরিষেবা অ্যাকাউন্টটি (firebase-adminsdk নামে পরিচিত) খুঁজে বের করুন।
  2. অ্যাকাউন্ট বেছে নিয়ে প্রিন্সিপাল এডিট করুন বিকল্পে ক্লিক করুন। 'অ্যাক্সেস এডিট করুন' পৃষ্ঠাটি দেখানো হয়।
  3. আরেকটি ভূমিকা যোগ করুন বিকল্পে ক্লিক করে Remote Config দর্শক বিকল্প বেছে নিন।
  4. অন্য ভূমিকা যোগ করুন বিকল্পে ক্লিক করে AI প্ল্যাটফর্ম ডেভেলপার বিকল্প বেছে নিন।
  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"
    

ধাপ ৪: ফাংশন তৈরি করা

এই ধাপে, আপনি এমন একটি ফাংশন তৈরি করবেন যা ব্যবহারকারীর ইনপুট ম্যানেজ করে এবং AI-চালিত উত্তর তৈরি করে। 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 { requiresRole, requiresAPI } = require("firebase-functions");
    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");
    
    requiresRole("roles/aiplatform.user");
    requiresRole("roles/cloudconfig.viewer");
    requiresAPI("aiplatform.googleapis.com", "Needed to query Vertex AI Gemini models");
    requiresAPI("firebaseremoteconfig.googleapis.com", "Needed to fetch server-side Remote Config templates");
    
    // 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 কনসোলে, DevOps ও এনগেজমেন্ট > রিমোট কনফিগ বিকল্পে যান।

  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-এ পাঠানো হবে কিনা তা নিয়ন্ত্রণ করে। Boolean true
  4. প্যারামিটার যোগ করা হয়ে গেলে, আপনার প্যারামিটার ও সেগুলির ডেটা টাইপ সঠিক আছে কিনা তা ডবল-চেক করে নিন, তারপর পরিবর্তন প্রকাশ করুন বিকল্পে ক্লিক করুন।

ধাপ ৬: আপনার ফাংশন ডেপ্লয় করুন এবং Firebase Local Emulator Suite-এ এটি পরীক্ষা করুন

এখন আপনি Firebase Local Emulator Suite-এর মাধ্যমে আপনার ফাংশন লোকালি ডেপ্লয় ও পরীক্ষা করার জন্য রেডি।

  1. ধাপ ৩: আপনার Admin SDKপরিষেবা অ্যাকাউন্টের জন্য IAM অনুমতি কনফিগার করুন এবং আপনার কী সেভ করুন-এ বর্ণিত GOOGLE_APPLICATION_CREDENTIALS-কে এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করেছেন কিনা তা নিশ্চিত করুন। তারপরে, আপনার 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 Emulator লগ পৃষ্ঠায় বা আপনার কনসোলে ফিরে যান এবং কোনও সমস্যা বা সতর্কতা আছে কিনা তা চেক করুন।

  5. কিছু ব্যবহারকারীর ইনপুট পাঠানোর চেষ্টা করুন, মনে রাখবেন যে আপনার Remote Config সার্ভার টেমপ্লেটে is_vertex_enabled কনফিগার করা আছে, তাই এটি 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 CLI ব্যবহার করে আপনার ফাংশন ডিপ্লয় করুন:

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. রানটাইম ট্যাব থেকে, রানটাইম পরিষেবা অ্যাকাউন্ট পরিবর্তন করে অ্যাডমিন SDK অ্যাকাউন্ট করুন।

  7. পরবর্তী বিকল্পে ক্লিক করুন, তারপর ডেপ্লয় করুন বিকল্পে ক্লিক করুন।

gcloud CLI সেট-আপ করা

কমান্ড লাইন থেকে নিরাপদে আপনার ফাংশন রান ও টেস্ট করতে, আপনাকে Cloud Functions পরিষেবার মাধ্যমে যাচাই করিয়ে নিতে হবে এবং একটি বৈধ যাচাইকরণ টোকেন পেতে হবে।

টোকেন জেনারেশন চালু করতে, gcloud CLI ইনস্টল ও কনফিগার করুন:

  1. আপনার কম্পিউটারে আগে থেকে ইনস্টল করা না থাকলে, gcloud CLI ইনস্টল করুন লিঙ্কে গিয়ে বর্ণিত পদ্ধতি অনুযায়ী gcloud CLI ইনস্টল করুন।

  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 সার্ভার টেমপ্লেটে পরিবর্তন করতে, সেইসব পরিবর্তন প্রকাশ করতে এবং বিভিন্ন বিকল্প পরীক্ষা করতে পারবেন।

পরবর্তী ধাপ