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

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 প্রকল্প তৈরি করতে, একটি পরিষেবা অ্যাকাউন্ট সেট আপ করতে এবং আপনার সার্ভারে Firebase অ্যাডমিন Node.js SDK যোগ করতে আপনার সার্ভারে Firebase অ্যাডমিন SDK যোগ করুন -এর নির্দেশাবলী অনুসরণ করুন৷

ধাপ 1: 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();

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

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

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

পরামিতি নাম বর্ণনা টাইপ ডিফল্ট মান
model_name মডেল API নাম স্ট্রিং gemini-1.5-pro
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}

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

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 এবং generationConfig এর জন্য প্যারামিটারগুলি কনফিগার করতে চাইতে পারেন। আপনি কীভাবে 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. সার্ভারবিহীন পরিবেশের বিপরীতে যদি আপনার সার্ভার দীর্ঘ সময় ধরে চলে, তাহলে আপনি Remote Config সার্ভার থেকে পর্যায়ক্রমে সর্বাধিক আপ-টু-ডেট টেমপ্লেট আনছেন তা নিশ্চিত করতে পর্যায়ক্রমে টেমপ্লেটটি পুনরায় লোড করতে setInterval ব্যবহার করুন।

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

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

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

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

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

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

যদি আপনার অ্যাপ্লিকেশনটি দীর্ঘস্থায়ী হওয়ার উদ্দেশ্যে হয় (উদাহরণস্বরূপ, সম্পদ সহ একটি ওয়েব অ্যাপ), আপনি ক্লাউড রান বিবেচনা করতে পারেন। ক্লাউড রানের সাথে আপনার সার্ভার অ্যাপ স্থাপন করতে, Quickstart-এ নির্দেশিকা অনুসরণ করুন: Cloud Run-এ Node.js পরিষেবা স্থাপন করুন

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