সার্ভার পরিবেশে দূরবর্তী কনফিগ ব্যবহার করুন


Firebase Remote Config Firebase Admin Node.js SDK v12.1.0+ ব্যবহার করে সার্ভার-সাইড কনফিগারেশন সমর্থন করে। এই ক্ষমতা আপনাকে Remote Config ব্যবহার করে সার্ভার-সাইড অ্যাপ্লিকেশনগুলির আচরণ এবং কনফিগারেশন গতিশীলভাবে পরিচালনা করতে সক্ষম করে। এর মধ্যে Cloud Functions এর মতো সার্ভারলেস বাস্তবায়ন অন্তর্ভুক্ত।

Firebase ক্লায়েন্ট SDK-এর বিপরীতে, যা Remote Config টেমপ্লেট থেকে প্রাপ্ত একটি ক্লায়েন্ট-নির্দিষ্ট কনফিগারেশন আনে, সার্ভার-সাইড Remote Config SDK Firebase থেকে একটি সম্পূর্ণ Remote Config টেমপ্লেট ডাউনলোড করে। এরপর আপনার সার্ভার প্রতিটি ইনকামিং অনুরোধের সাথে টেমপ্লেটটি মূল্যায়ন করতে পারে এবং খুব কম ল্যাটেন্সি সহ একটি কাস্টমাইজড প্রতিক্রিয়া পরিবেশন করতে নিজস্ব যুক্তি ব্যবহার করতে পারে। আপনি কাস্টম সিগন্যালে সংজ্ঞায়িত র্যান্ডম শতাংশ এবং ক্লায়েন্ট বৈশিষ্ট্যের উপর ভিত্তি করে প্রতিক্রিয়া নিয়ন্ত্রণ এবং কাস্টমাইজ করতে শর্তাবলী ব্যবহার করতে পারেন।

সার্ভার-সাইড Remote Config দিয়ে, আপনি যা করতে পারেন:

  • আপনার সার্ভারে চলমান বা অ্যাক্সেস করা অ্যাপ্লিকেশনগুলির জন্য কনফিগারেশন প্যারামিটারগুলি সংজ্ঞায়িত করুন, যাতে আপনার API কীগুলি সুরক্ষিত থাকে তা নিশ্চিত করার জন্য দূরবর্তীভাবে AI মডেল প্যারামিটার এবং প্রম্পট এবং অন্যান্য ইন্টিগ্রেশন কনফিগার করার মতো ব্যবহারের ক্ষেত্রে অনুমতি দেওয়া হয়।
  • আপনার পরিবেশের পরিবর্তন বা অন্যান্য অ্যাপ্লিকেশন পরিবর্তনের প্রতিক্রিয়ায়, যেমন LLM প্যারামিটার এবং মডেল এন্ডপয়েন্ট আপডেট করার সময় গতিশীলভাবে প্যারামিটারগুলি সামঞ্জস্য করুন।
  • আপনার সার্ভার যে API গুলিকে কল করে সেগুলি দূরবর্তীভাবে আপডেট করে খরচ নিয়ন্ত্রণ করুন।
  • আপনার সার্ভার অ্যাক্সেস করে এমন ক্লায়েন্টদের জন্য অন-দ্য-ফ্লাই কাস্টম কনফিগারেশন তৈরি করুন।
  • কোন ক্লায়েন্টরা প্যারামিটার মান পেয়েছে তা রেকর্ড করুন এবং এনটাইটেলমেন্ট যাচাইকরণ সিস্টেমের অংশ হিসাবে Cloud Functions এটি ব্যবহার করুন।

আপনি ক্লাউড রান, Cloud Functions , অথবা স্ব-হোস্টেড সার্ভার পরিবেশে সার্ভার-সাইড Remote Config স্থাপন করতে পারেন।

শুরু করার আগে

আপনার সার্ভারে Firebase Admin SDK যোগ করুন -এর নির্দেশাবলী অনুসরণ করে একটি Firebase প্রকল্প তৈরি করুন, একটি পরিষেবা অ্যাকাউন্ট সেট আপ করুন এবং আপনার সার্ভারে Firebase Admin Node.js SDK যোগ করুন।

ধাপ ১: Firebase Admin Node.js SDK আরম্ভ করুন এবং API অনুরোধ অনুমোদন করুন

যখন আপনি কোনও প্যারামিটার ছাড়াই অ্যাডমিন SDK চালু করেন, তখন SDK Google অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে এবং GOOGLE_APPLICATION_CREDENTIALS পরিবেশ ভেরিয়েবল থেকে বিকল্পগুলি পড়ে। SDK চালু করতে এবং Remote Config যোগ করতে:

import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";

// Initialize Firebase
const firebaseApp = initializeApp();

ধাপ ২: আপনার সার্ভার অ্যাপ্লিকেশনের জন্য ডিফল্ট প্যারামিটার মান সনাক্ত করুন

আপনার অ্যাপের কোন ভেরিয়েবলগুলি আপনি Remote Config ব্যবহার করে ডায়নামিকভাবে আপডেট করতে চান তা চিহ্নিত করুন। তারপর, আপনার অ্যাপ্লিকেশনে কোন ভেরিয়েবলগুলি ডিফল্টভাবে সেট করতে হবে এবং তাদের ডিফল্ট মানগুলি কী হওয়া উচিত তা বিবেচনা করুন। এটি নিশ্চিত করে যে আপনার অ্যাপ্লিকেশনটি Remote Config ব্যাকএন্ড সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হলেও সফলভাবে চলবে।

উদাহরণস্বরূপ, যদি আপনি এমন একটি সার্ভার অ্যাপ্লিকেশন লিখছেন যা একটি জেনারেটিভ এআই ফাংশন পরিচালনা করে, তাহলে আপনি একটি ডিফল্ট মডেল নাম, প্রম্পট প্রস্তাবনা এবং একটি জেনারেটিভ এআই কনফিগারেশন সেট করতে পারেন, যেমন নিম্নলিখিত:

প্যারামিটারের নাম বিবরণ আদর্শ ডিফল্ট মান
model_name মডেল এপিআই নাম স্ট্রিং gemini-2.0-flash
preamble_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}

ধাপ ৩: আপনার সার্ভার অ্যাপ্লিকেশন কনফিগার করুন

Remote Config সাথে আপনি যে প্যারামিটারগুলি ব্যবহার করতে চান তা নির্ধারণ করার পরে, আপনার অ্যাপ্লিকেশনটিকে ডিফল্ট মান সেট করার জন্য কনফিগার করুন, সার্ভার-নির্দিষ্ট Remote Config টেমপ্লেটটি আনুন এবং এর মানগুলি ব্যবহার করুন। নিম্নলিখিত পদক্ষেপগুলি আপনার Node.js অ্যাপ্লিকেশনটি কীভাবে কনফিগার করবেন তা বর্ণনা করে।

  1. টেমপ্লেটটি অ্যাক্সেস করুন এবং লোড করুন।

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = rc.initServerTemplate();
    
    // Load Remote Config
    await template.load();
    

    যদি আপনি Cloud Functions মধ্যে Node.js ব্যবহার করেন, তাহলে আপনি অ্যাসিঙ্ক্রোনাস getServerTemplate ব্যবহার করে একটি মাত্র ধাপে টেমপ্লেটটি আরম্ভ এবং লোড করতে পারেন:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Remote Config ব্যাকএন্ড সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হলেও আপনার অ্যাপ্লিকেশনটি সফলভাবে চলছে কিনা তা নিশ্চিত করতে, আপনার অ্যাপে প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান যোগ করুন। এটি করার জন্য, আপনার initServerTemplate বা getServerTemplate টেমপ্লেট ফাংশনের ভিতরে একটি defaultConfig যোগ করুন:

    const template = rc.initServerTemplate({
      defaultConfig: {
        model_name: "gemini-pro",
        generation_config: '{"stopSequences": [], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}',
        preamble_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!"
      },
    });
    
    // Load Remote Config
    await template.load()
    
  3. টেমপ্লেট লোড হওয়ার পর, টেমপ্লেট থেকে প্যারামিটার এবং মান আমদানি করতে template.evaluate() ব্যবহার করুন:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. ঐচ্ছিকভাবে, যদি আপনি আপনার Remote Config টেমপ্লেটে শর্তাবলী সেট করেন, তাহলে আপনার পছন্দসই মানগুলি সংজ্ঞায়িত করুন এবং প্রদান করুন:

    • যদি আপনি শতাংশ শর্ত ব্যবহার করেন, তাহলে template.evaluate() ফাংশনের মধ্যে আপনার শর্ত(গুলি) মূল্যায়ন করার জন্য যে randomizationId ব্যবহার করতে চান তা যোগ করুন।
    • যদি কাস্টম সিগন্যাল ব্যবহার করেন, তাহলে অ্যাট্রিবিউট এবং তাদের মান নির্ধারণ করুন। কাস্টম সিগন্যালগুলি Firebase Admin Node.js SDK 12.5.0 এবং উচ্চতর সংস্করণের সাথে উপলব্ধ।

    উদাহরণস্বরূপ, আপনি একটি Firebase ইনস্টলেশন আইডি randomizationId হিসেবে অথবা একটি ব্যবহারকারী আইডি হিসেবে সেট করতে পারেন, যাতে নিশ্চিত করা যায় যে আপনার সার্ভারের সাথে যোগাযোগকারী প্রতিটি ব্যবহারকারী সঠিক র্যান্ডমাইজড গ্রুপে যোগ করা হয়েছে, নির্দিষ্ট ক্লায়েন্ট সংস্করণগুলিকে লক্ষ্য করার জন্য version একটি কাস্টম সিগন্যাল হিসাবে এবং ক্লায়েন্ট প্ল্যাটফর্মকে লক্ষ্য করার জন্য platform একটি কাস্টম সিগন্যাল হিসাবে যুক্ত করা হয়েছে।

    শর্তাবলী সম্পর্কে আরও তথ্যের জন্য, শর্ত নিয়মের ধরণ দেখুন।

    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId} and version.
    const config = template.evaluate({
      randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04",
      version: "1.0",
      platform: "Android"
    });
    
    
  5. এরপর, কনফিগ ধ্রুবক থেকে আপনার প্রয়োজনীয় প্যারামিটার মানগুলি বের করুন। Remote Config থেকে প্রত্যাশিত বিন্যাসে মানগুলি কাস্ট করতে getters ব্যবহার করুন। নিম্নলিখিত প্রকারগুলি সমর্থিত:

    • বুলিয়ান: getBoolean
    • অবজেক্ট: getValue
    • নম্বর: getNumber
    • স্ট্রিং: getString

    উদাহরণস্বরূপ, যদি আপনি আপনার সার্ভারে Vertex AI প্রয়োগ করেন এবং মডেল এবং মডেল প্যারামিটার পরিবর্তন করতে চান, তাহলে আপনি model_name এবং generation_config এর জন্য প্যারামিটার কনফিগার করতে চাইতে পারেন। Remote Config এর মানগুলি কীভাবে অ্যাক্সেস করবেন তার একটি উদাহরণ এখানে দেওয়া হল:

    // Replace defaults with values from Remote Config.
    const generationConfig =
      JSON.parse(
        config.getString('generation_config'));
    
    const is_ai_enabled = config.getBool('is_ai_enabled');
    
    const model = config.getString('model_name');
    
    // Generates a prompt comprised of the Remote Config
    // parameter and prepends it to the user prompt
    const prompt = `${config.getString('preamble_prompt')} ${req.query.prompt}`;
    
  6. যদি আপনার সার্ভারটি দীর্ঘ সময় ধরে চলমান থাকে, সার্ভারলেস পরিবেশের বিপরীতে, তাহলে setInterval ব্যবহার করে পর্যায়ক্রমে টেমপ্লেটটি পুনরায় লোড করুন যাতে আপনি নিশ্চিত করতে পারেন যে আপনি Remote Config সার্ভার থেকে সবচেয়ে আপ-টু-ডেট টেমপ্লেটটি আনছেন।

ধাপ ৪: Remote Config সার্ভার-নির্দিষ্ট প্যারামিটার মান সেট করুন

এরপর, একটি সার্ভার Remote Config টেমপ্লেট তৈরি করুন এবং আপনার অ্যাপে ব্যবহারের জন্য প্যারামিটার এবং মান কনফিগার করুন।

একটি সার্ভার-নির্দিষ্ট Remote Config টেমপ্লেট তৈরি করতে:

  1. Firebase কনসোল Remote Config প্যারামিটার পৃষ্ঠাটি খুলুন এবং ক্লায়েন্ট/সার্ভার নির্বাচক থেকে, Server নির্বাচন করুন।
  2. আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারের মতো একই নাম এবং ডেটা টাইপ দিয়ে Remote Config প্যারামিটারগুলি সংজ্ঞায়িত করুন এবং মান প্রদান করুন। এই মানগুলি আপনার সার্ভার অ্যাপ্লিকেশন কনফিগারে সেট করা defaultConfig ওভাররাইড করবে যখন আপনি টেমপ্লেটটি আনবেন এবং মূল্যায়ন করবেন এবং আপনার ভেরিয়েবলগুলিতে এই মানগুলি নির্ধারণ করবেন।
  3. ঐচ্ছিকভাবে, আপনার সংজ্ঞায়িত দৃষ্টান্ত বা কাস্টম সংকেতের একটি র্যান্ডম নমুনায় মানগুলি স্থায়ীভাবে প্রয়োগ করার জন্য শর্তগুলি সেট করুন। শর্ত সম্পর্কে আরও তথ্যের জন্য, শর্তের নিয়মের ধরণগুলি দেখুন।
  4. প্যারামিটার যোগ করা শেষ হলে, পরিবর্তন প্রকাশ করুন এ ক্লিক করুন।
  5. পরিবর্তনগুলি পর্যালোচনা করুন এবং আবার পরিবর্তনগুলি প্রকাশ করুন-এ ক্লিক করুন।

ধাপ ৫: Cloud Functions বা ক্লাউড রান দিয়ে স্থাপন করুন

যদি আপনার সার্ভার অ্যাপ্লিকেশনটি হালকা এবং ইভেন্ট-চালিত হয়, তাহলে আপনার Cloud Functions ব্যবহার করে কোড স্থাপন করার কথা বিবেচনা করা উচিত। উদাহরণস্বরূপ, ধরুন আপনার একটি অ্যাপ আছে যাতে একটি জেনারেটিভ AI API (উদাহরণস্বরূপ, Google AI বা Vertex AI ) দ্বারা চালিত চরিত্র সংলাপ অন্তর্ভুক্ত রয়েছে। এই ক্ষেত্রে, আপনি আপনার LLM-সার্ভিং লজিককে এমন একটি ফাংশনে হোস্ট করতে পারেন যা আপনার অ্যাপটি অন-ডিমান্ড কল করে।

আপনি যদি একটি সার্ভার-রেন্ডার করা ওয়েব অ্যাপ তৈরি করেন, তাহলে App Hosting জনপ্রিয় ওয়েব ফ্রেমওয়ার্কগুলির জন্য সমর্থন করে।

অন্যথায়, আপনি ক্লাউড রান বিবেচনা করতে পারেন। ক্লাউড রানের সাথে আপনার সার্ভার অ্যাপ স্থাপন করতে, Quickstart: Deploy a Node.js service to Cloud Run -এ নির্দেশিকা অনুসরণ করুন।

ক্লাউড রান এবং Cloud Functions সর্বোত্তম ব্যবহারের ক্ষেত্রে আরও তথ্যের জন্য, Cloud Functions বনাম ক্লাউড রান দেখুন: কখন একটির উপর আরেকটি ব্যবহার করবেন