ক্লাউড ফাংশন এবং ভার্টেক্সের সাথে সার্ভার-সাইড রিমোট কনফিগ ব্যবহার করুন AI,ক্লাউড ফাংশন এবং ভার্টেক্সের সাথে সার্ভার-সাইড রিমোট কনফিগ ব্যবহার করুন AI

এই নির্দেশিকায় বর্ণনা করা হয়েছে কীভাবে সার্ভার-সাইড Remote Config সহ ২য় প্রজন্মের Cloud Functions ব্যবহার করে ভার্টেক্স এআই জেমিনি এপিআই -তে সার্ভার-সাইড কল করা শুরু করতে হয়।

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

পূর্বশর্ত

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

একটি ফায়ারবেস প্রজেক্ট সেট আপ করুন

যদি আপনার আগে থেকে কোনো Firebase প্রজেক্ট না থাকে:

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

  2. 'প্রজেক্ট তৈরি করুন'-এ ক্লিক করুন এবং তারপরে নিম্নলিখিত বিকল্পগুলির মধ্যে যেকোনো একটি ব্যবহার করুন:

    • বিকল্প ১ : "প্রজেক্ট তৈরি করুন" ওয়ার্কফ্লো-এর প্রথম ধাপে একটি নতুন প্রজেক্টের নাম লিখে একটি নতুন ফায়ারবেস প্রজেক্ট তৈরি করুন (এবং এর অন্তর্নিহিত Google Cloud প্রজেক্টটিও স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে)।
    • বিকল্প ২ : "প্রজেক্ট তৈরি করুন" ওয়ার্কফ্লো-এর প্রথম ধাপে ড্রপ-ডাউন মেনু থেকে আপনার Google Cloud প্রজেক্টের নাম নির্বাচন করে একটি বিদ্যমান 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 CLI ইনস্টল করুন । উদাহরণস্বরূপ, npm ব্যবহার করে CLI ইনস্টল করতে, এই কমান্ডটি চালান:

    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
    

আপনি এখন এই সমাধানটি বাস্তবায়নের জন্য প্রস্তুত।

বাস্তবায়ন

Remote Config এবং Vertex AI ব্যবহার করে আপনার ২য় প্রজন্মের Cloud Functions তৈরি, পরীক্ষা এবং স্থাপন করতে এই ধাপগুলো অনুসরণ করুন:

  1. Google Cloud কনসোলে Vertex AI দ্বারা প্রস্তাবিত API-গুলো সক্রিয় করুন
  2. আপনার প্রজেক্টটি শুরু করুন এবং নোড ডিপেন্ডেন্সিগুলো ইনস্টল করুন
  3. আপনার Admin SDK সার্ভিস অ্যাকাউন্টের জন্য IAM অনুমতি কনফিগার করুন এবং আপনার কী সংরক্ষণ করুন
  4. ফাংশনটি তৈরি করুন
  5. সার্ভার-নির্দিষ্ট একটি Remote Config টেমপ্লেট তৈরি করুন
  6. আপনার ফাংশনটি ডিপ্লয় করুন এবং Firebase Local Emulator Suite এ এটি পরীক্ষা করুন
  7. আপনার ফাংশনটি Google Cloud স্থাপন করুন

ধাপ ১: Google Cloud কনসোলে Vertex AI-এর প্রস্তাবিত API-গুলো সক্রিয় করুন।

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

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

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

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

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

    firebase login
    
  3. Cloud Functions for Firebase চালু করতে নিম্নলিখিত কমান্ডটি চালান:

    firebase init functions
    
  4. 'Use an existing project' নির্বাচন করুন এবং আপনার প্রজেক্ট আইডি উল্লেখ করুন।

  5. ভাষা নির্বাচনের জন্য বলা হলে, জাভাস্ক্রিপ্ট বেছে নিন এবং এন্টার চাপুন।

  6. অন্যান্য সকল বিকল্পের জন্য পূর্বনির্ধারিত মানগুলোই নির্বাচন করুন।

    বর্তমান ডিরেক্টরিতে একটি functions ডিরেক্টরি তৈরি করা হয়। এর ভেতরে আপনি একটি index.js ফাইল পাবেন যা আপনার ফাংশন তৈরি করতে ব্যবহার করবেন, একটি node_modules ডিরেক্টরি যেখানে আপনার ফাংশনের জন্য প্রয়োজনীয় ডিপেন্ডেন্সিগুলো থাকে, এবং একটি package.json ফাইল যেখানে প্যাকেজ ডিপেন্ডেন্সিগুলো থাকে।

  7. নিম্নলিখিত কমান্ডগুলি চালিয়ে Admin SDK এবং Vertex AI প্যাকেজগুলি যোগ করুন এবং এটি আপনার package.json ফাইলে সংরক্ষিত হয়েছে তা নিশ্চিত করতে --save ব্যবহার করুন:

    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. অ্যাকাউন্টটি নির্বাচন করুন এবং 'Edit principal'-এ ক্লিক করুন। 'Edit access' পৃষ্ঠাটি প্রদর্শিত হবে।
  3. Add another role-এ ক্লিক করুন, Remote Config Viewer নির্বাচন করুন।
  4. 'Add another role'- এ ক্লিক করুন, 'AI platform developer' নির্বাচন করুন।
  5. 'Add another role'- এ ক্লিক করুন, Vertex AI ব্যবহারকারীকে নির্বাচন করুন।
  6. Add another role-এ ক্লিক করুন, Cloud Run Invoker নির্বাচন করুন।
  7. সংরক্ষণ করুন- এ ক্লিক করুন।

এরপর, Admin SDK সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়ালগুলো এক্সপোর্ট করুন এবং আপনার GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলে সেগুলো সেভ করুন।

  1. Google Cloud কনসোলে, ক্রেডেনশিয়ালস পৃষ্ঠাটি খুলুন।
  2. বিস্তারিত পৃষ্ঠাটি খুলতে Admin SDK পরিষেবা অ্যাকাউন্টে ক্লিক করুন।
  3. কীগুলো ক্লিক করুন।
  4. অ্যাড কী > ক্রিয়েট নিউ কী-তে ক্লিক করুন।
  5. কী টাইপ হিসেবে JSON নির্বাচিত আছে কিনা তা নিশ্চিত করুন, তারপর Create-এ ক্লিক করুন।
  6. আপনার কম্পিউটারের একটি নিরাপদ স্থানে কী-টি ডাউনলোড করুন।
  7. আপনার টার্মিনাল থেকে, কী-টি একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে এক্সপোর্ট করুন:

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

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

এই ধাপে, আপনি এমন একটি ফাংশন তৈরি করবেন যা ব্যবহারকারীর ইনপুট গ্রহণ করে এবং এআই-চালিত প্রতিক্রিয়া তৈরি করে। আপনি একাধিক কোড স্নিপেট একত্রিত করে একটি পূর্ণাঙ্গ ফাংশন তৈরি করবেন যা Admin SDK এবং ভার্টেক্স এআই জেমিনি এপিআই (Vertex AI Gemini API) ইনিশিয়ালাইজ করে, Remote Config ব্যবহার করে ডিফল্ট প্যারামিটার কনফিগার করে, সর্বশেষ Remote Config প্যারামিটারগুলো সংগ্রহ করে, ব্যবহারকারীর ইনপুট প্রসেস করে এবং ব্যবহারকারীর কাছে একটি প্রতিক্রিয়া স্ট্রিম করে ফেরত পাঠায়।

  1. আপনার কোডবেসে, একটি টেক্সট এডিটর বা IDE-তে functions/index.js খুলুন।
  2. বিদ্যমান কন্টেন্ট মুছে ফেলুন এবং তারপরে Admin SDK , Remote Config , এবং ভার্টেক্স এআই এসডিকে যোগ করুন এবং ফাইলটিতে নিম্নলিখিত কোডটি পেস্ট করে অ্যাপটি ইনিশিয়ালাইজ করুন:

    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 ক্লায়েন্ট দেখুন।

    ঐচ্ছিকভাবে, আপনি 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 কনসোলটি খুলুন এবং নেভিগেশন মেনু থেকে Run প্রসারিত করে Remote Config নির্বাচন করুন।
  2. Remote Config পেজের শীর্ষে থাকা ক্লায়েন্ট/সার্ভার সিলেক্টর থেকে সার্ভার নির্বাচন করুন।

    • আপনি যদি প্রথমবারের মতো Remote Config বা সার্ভার টেমপ্লেট ব্যবহার করেন, তাহলে 'Create Configuration'-এ ক্লিক করুন। ' Create your first server-side parameter' প্যানেলটি প্রদর্শিত হবে।
    • আপনি যদি প্রথমবারের মতো 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 ঐচ্ছিক প্যারামিটার যা নিয়ন্ত্রণ করে কোয়েরিগুলো ভার্টেক্স এআই- তে পাঠানো হবে কিনা। বুলিয়ান true
  4. প্যারামিটার যোগ করা শেষ হলে, আপনার প্যারামিটারগুলো এবং সেগুলোর ডেটা টাইপ সঠিক আছে কিনা তা পুনরায় যাচাই করুন, তারপর 'পরিবর্তন প্রকাশ করুন' (Publish changes) বোতামে ক্লিক করুন।

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

এখন আপনি Firebase Local Emulator Suite ব্যবহার করে আপনার ফাংশনটি স্থানীয়ভাবে ডেপ্লয় এবং টেস্ট করার জন্য প্রস্তুত।

  1. ধাপ ৩: আপনার অ্যাডমিন SDK সার্ভিস অ্যাকাউন্টের জন্য IAM পারমিশন কনফিগার করুন-এ বর্ণিত পদ্ধতি অনুযায়ী, আপনি GOOGLE_APPLICATION_CREDENTIALS একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করেছেন কিনা তা নিশ্চিত করুন Admin SDK আপনার কী (key) সংরক্ষণ করুন । এরপর, আপনার 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 কনফিগার করা আছে, তাই এটি Vertex AI Gemini API-এর মাধ্যমে Gemini মডেলটি অ্যাক্সেস করবে এবং এর জন্য চার্জ লাগতে পারে:

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
    
  6. Firebase কনসোলে আপনার Remote Config সার্ভার টেমপ্লেটে পরিবর্তন করুন, তারপর পরিবর্তনগুলো পর্যবেক্ষণ করতে আপনার ফাংশনটি পুনরায় অ্যাক্সেস করুন।

ধাপ ৭: আপনার ফাংশনটি Google Cloud স্থাপন করুন।

আপনার ফাংশনটি পরীক্ষা ও যাচাই করার পর, আপনি Google Cloud এটি স্থাপন করতে এবং লাইভ ফাংশনটি পরীক্ষা করতে প্রস্তুত।

আপনার ফাংশনটি স্থাপন করুন

Firebase CLI ব্যবহার করে আপনার ফাংশনটি ডিপ্লয় করুন:

firebase deploy --only functions

ফাংশনটিতে অননুমোদিত প্রবেশ ব্লক করুন

যখন Firebase ব্যবহার করে ফাংশনগুলো ডেপ্লয় করা হয়, তখন আপনার প্রতিষ্ঠানের পলিসিতে কোনো বিধিনিষেধ না থাকলে ডিফল্টরূপে প্রমাণীকরণবিহীন ইনভোকেশনের অনুমতি দেওয়া হয়। টেস্টিংয়ের সময় এবং App Check দিয়ে সুরক্ষিত করার আগে, আমরা প্রমাণীকরণবিহীন অ্যাক্সেস ব্লক করার পরামর্শ দিই।

ফাংশনটিতে অননুমোদিত প্রবেশ আটকাতে:

  1. Google Cloud কনসোলে, ক্লাউড রান খুলুন।

  2. generateWithVertex ক্লিক করুন, তারপর Security ট্যাবে ক্লিক করুন।

  3. প্রমাণীকরণ আবশ্যক বিকল্পটি সক্রিয় করুন এবং তারপর সংরক্ষণ করুন-এ ক্লিক করুন।

Admin SDK সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করার জন্য আপনার ইউজার অ্যাকাউন্টটি কনফিগার করুন।

যেহেতু Admin SDK সার্ভিস অ্যাকাউন্টের কাছে ফাংশনটি চালানো এবং Remote Configভার্টেক্স এআই জেমিনি এপিআই-এর সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় সমস্ত রোল ও পারমিশন রয়েছে, তাই আপনার ফাংশনটি চালানোর জন্য আপনি এটি ব্যবহার করতে চাইবেন। এটি করার জন্য, আপনাকে অবশ্যই আপনার ইউজার অ্যাকাউন্ট থেকে অ্যাকাউন্টটির জন্য টোকেন তৈরি করতে সক্ষম হতে হবে।

নিম্নলিখিত ধাপগুলিতে আপনার ব্যবহারকারী অ্যাকাউন্ট কনফিগার করার পদ্ধতি এবং Admin SDK পরিষেবা অ্যাকাউন্টের বিশেষাধিকার সহ ফাংশনটি চালানোর উপায় বর্ণনা করা হয়েছে।

  1. Google Cloud কনসোলে, IAM Service Account Credentials API সক্রিয় করুন।
  2. আপনার ইউজার অ্যাকাউন্টকে সার্ভিস অ্যাকাউন্ট টোকেন ক্রিয়েটর (Service Account Token Creator) রোলটি দিন: Google Cloud কনসোল থেকে, IAM & Admin > IAM খুলুন, আপনার ইউজার অ্যাকাউন্টটি নির্বাচন করুন, এবং তারপরে Edit principal > Add another role-এ ক্লিক করুন।
  3. সার্ভিস অ্যাকাউন্ট টোকেন ক্রিয়েটর নির্বাচন করুন, তারপর সেভ-এ ক্লিক করুন।

    সার্ভিস অ্যাকাউন্ট ইমপার্সোনেশন সম্পর্কে আরও বিস্তারিত তথ্যের জন্য, Google Cloud ডকুমেন্টেশনের 'সার্ভিস অ্যাকাউন্ট ইমপার্সোনেশন' অংশটি দেখুন।

  4. Google Cloud কনসোলের Cloud Functions পৃষ্ঠাটি খুলুন এবং ফাংশন তালিকা থেকে generateWithVertex ফাংশনটিতে ক্লিক করুন।

  5. ট্রিগার > সম্পাদনা নির্বাচন করুন এবং রানটাইম, বিল্ড, সংযোগ ও নিরাপত্তা সেটিংস প্রসারিত করুন।

  6. রানটাইম ট্যাব থেকে, রানটাইম সার্ভিস অ্যাকাউন্টটি পরিবর্তন করে অ্যাডমিন এসডিকে অ্যাকাউন্ট করুন।

  7. Next-এ ক্লিক করুন, তারপর Deploy-তে ক্লিক করুন।

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

পরবর্তী পদক্ষেপ