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


Firebase Remote Config Firebase Admin Python SDK v6.7.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 Python SDK যোগ করতে আপনার সার্ভারে Firebase অ্যাডমিন SDK যোগ করুন- এর নির্দেশাবলী অনুসরণ করুন৷

ধাপ 1: ফায়ারবেস অ্যাডমিন পাইথন SDK শুরু করুন এবং API অনুরোধ অনুমোদন করুন

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

import firebase_admin
import asyncio
import json

firebase_admin.initialize_app()

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

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

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

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

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

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

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

    from firebase_admin import remote_config
    
    # Initialize server-side Remote Config
    template = remote_config.init_server_template()
    
    # Load the template from the backend
     asyncio.run(template.load())
    
    

    আপনি যদি Cloud Functions সাথে পাইথন ব্যবহার করেন তবে আপনি একটি একক ধাপে টেমপ্লেটটি আনতে এবং লোড করতে অ্যাসিঙ্ক্রোনাস get_server_template ব্যবহার করতে পারেন:

    # Initialize server-side Remote Config
    template = remote_config.get_server_template()
    
  2. Remote Config ব্যাকএন্ড সার্ভারের সাথে সংযোগ বিঘ্নিত হলেও আপনার অ্যাপ্লিকেশনটি সফলভাবে চলে তা নিশ্চিত করতে, আপনার অ্যাপে প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান যোগ করুন। এটি করার জন্য, আপনার init_server_template বা get_server_template টেমপ্লেট ফাংশনের ভিতরে একটি defaultConfig যোগ করুন:

    template = remote_config.init_server_template({
      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
    asyncio.run(template.load())
    
    

    প্রয়োজনীয় সার্ভার টেমপ্লেট পুনরুদ্ধার করার জন্য get_server_template ফাংশন ব্যবহার করে আপনি একটি টেমপ্লেট আরম্ভ করতে পারেন। আপনি template.to_json ফাংশন ব্যবহার করে এই টেমপ্লেটটিকে JSON ফর্ম্যাটে রূপান্তর করতে পারেন। এই JSON টেমপ্লেট স্থানীয়ভাবে সংরক্ষণ করা যেতে পারে. আপনি পরবর্তীতে init_server_template ফাংশন ব্যবহার করে এই JSON টেমপ্লেটটি শুরু করতে পারেন।

  3. টেমপ্লেট লোড হওয়ার পরে, টেমপ্লেট থেকে প্যারামিটার এবং মান আমদানি করতে template.evaluate() ব্যবহার করুন:

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

    • শতাংশ শর্ত ব্যবহার করলে, template.evaluate() ফাংশনের মধ্যে আপনার শর্ত(গুলি) মূল্যায়ন করতে আপনি যে randomizationId ব্যবহার করতে চান তা যোগ করুন।
    • কাস্টম সংকেত ব্যবহার করলে, গুণাবলী এবং তাদের মানগুলি সংজ্ঞায়িত করুন। Firebase Admin Python SDK v6.7.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.
    config = template.evaluate({
      'randomizationId': "2ac93c28-c459-4760-963d-a3974ec26c04",
      'version': "1.0",
      'platform': "Android"
    })
    
    
  5. এর পরে, কনফিগার ধ্রুবক থেকে আপনার প্রয়োজনীয় প্যারামিটার মানগুলি বের করুন। Remote Config থেকে প্রত্যাশিত বিন্যাসে মানগুলি কাস্ট করতে getters ব্যবহার করুন। নিম্নলিখিত ধরনের সমর্থিত:

    • বুলিয়ান: get_bool
    • বস্তু: get_value
    • নম্বর: get_number
    • স্ট্রিং: get_string

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

    # Replace defaults with values from Remote Config.
    generation_config = json.loads(config.get_string('generation_config'))
    is_ai_enabled = config.get_bool('is_ai_enabled')
    model = config.get_string('model_name')
    
    # Generates a prompt comprised of the Remote Config
    # parameter and prepends it to the user prompt.
    prompt = f"{config.get_string('preamble_prompt')}{req.args.get('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 ) দ্বারা চালিত অক্ষর সংলাপ অন্তর্ভুক্ত থাকে। এই ক্ষেত্রে, আপনি একটি ফাংশনে আপনার এলএলএম-সার্ভিং লজিক হোস্ট করতে পারেন যা আপনার অ্যাপ অন-ডিমান্ড বলে।

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

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