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 স্থাপন করতে পারেন।
শুরু করার আগে
আপনার সার্ভারে "ফায়ারবেস অ্যাডমিন SDK যোগ করুন" এর নির্দেশাবলী অনুসরণ করুন, একটি Firebase প্রকল্প তৈরি করুন, একটি পরিষেবা অ্যাকাউন্ট সেট আপ করুন এবং আপনার সার্ভারে Firebase Python SDK যোগ করুন।
ধাপ ১: ফায়ারবেস অ্যাডমিন পাইথন SDK আরম্ভ করুন এবং API অনুরোধ অনুমোদন করুন
যখন আপনি কোনও প্যারামিটার ছাড়াই অ্যাডমিন SDK চালু করেন, তখন SDK Google অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে এবং GOOGLE_APPLICATION_CREDENTIALS পরিবেশ ভেরিয়েবল থেকে বিকল্পগুলি পড়ে। SDK চালু করতে এবং Remote Config যোগ করতে:
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
ধাপ ২: আপনার সার্ভার অ্যাপ্লিকেশনের জন্য ডিফল্ট প্যারামিটার মান সনাক্ত করুন
আপনার অ্যাপের কোন ভেরিয়েবলগুলি আপনি 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 টেমপ্লেটটি আনুন এবং এর মানগুলি ব্যবহার করুন। নিম্নলিখিত পদক্ষেপগুলি আপনার পাইথন অ্যাপ্লিকেশনটি কীভাবে কনফিগার করবেন তা বর্ণনা করে।
টেমপ্লেটটি অ্যাক্সেস করুন এবং লোড করুন।
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 = await remote_config.get_server_template()Remote Config ব্যাকএন্ড সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হলেও আপনার অ্যাপ্লিকেশনটি সফলভাবে চলছে কিনা তা নিশ্চিত করতে, আপনার অ্যাপে প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান যোগ করুন। এটি করার জন্য, আপনার
init_server_templateঅথবাget_server_templateটেমপ্লেট ফাংশনের ভিতরে একটিdefault_configযোগ করুন:template = remote_config.init_server_template({ default_config: { '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 টেমপ্লেটটি শুরু করতে পারেন।টেমপ্লেট লোড হওয়ার পর, টেমপ্লেট থেকে প্যারামিটার এবং মান আমদানি করতে
template.evaluate()ব্যবহার করুন:# Add template parameters to config config = template.evaluate()ঐচ্ছিকভাবে, যদি আপনি আপনার Remote Config টেমপ্লেটে শর্তাবলী সেট করেন, তাহলে আপনার পছন্দসই মানগুলি সংজ্ঞায়িত করুন এবং প্রদান করুন:
- যদি আপনি শতাংশ শর্ত ব্যবহার করেন, তাহলে
template.evaluate()ফাংশনের মধ্যে আপনার শর্ত(গুলি) মূল্যায়ন করার জন্য যেrandomization_idব্যবহার করতে চান তা যোগ করুন। - যদি কাস্টম সিগন্যাল ব্যবহার করেন, তাহলে অ্যাট্রিবিউট এবং তাদের মান নির্ধারণ করুন। কাস্টম সিগন্যালগুলি Firebase Admin Python SDK v6.7.0 এবং উচ্চতর সংস্করণের সাথে উপলব্ধ।
উদাহরণস্বরূপ, আপনি একটি Firebase ইনস্টলেশন আইডি
randomization_idহিসেবে অথবা একটি ব্যবহারকারী আইডি হিসেবে সেট করতে পারেন, যাতে নিশ্চিত করা যায় যে আপনার সার্ভারের সাথে যোগাযোগকারী প্রতিটি ব্যবহারকারী সঠিক র্যান্ডমাইজড গ্রুপে যোগ করা হয়েছে, নির্দিষ্ট ক্লায়েন্ট সংস্করণগুলিকে লক্ষ্য করার জন্যversionএকটি কাস্টম সিগন্যাল হিসাবে এবং ক্লায়েন্ট প্ল্যাটফর্মকে লক্ষ্য করার জন্যplatformএকটি কাস্টম সিগন্যাল হিসাবে যুক্ত করা হয়েছে।শর্তাবলী সম্পর্কে আরও তথ্যের জন্য, শর্ত নিয়মের ধরণ দেখুন।
# Add template parameters to `config`. Evaluates the # template and returns the parameter value assigned to # the group assigned to the {randomization_id} and version. config = template.evaluate({ 'randomization_id': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })- যদি আপনি শতাংশ শর্ত ব্যবহার করেন, তাহলে
এরপর, কনফিগ ধ্রুবক থেকে আপনার প্রয়োজনীয় প্যারামিটার মানগুলি বের করুন। Remote Config থেকে প্রত্যাশিত বিন্যাসে মানগুলি কাস্ট করতে
gettersব্যবহার করুন। নিম্নলিখিত প্রকারগুলি সমর্থিত:- বুলিয়ান:
get_bool - পূর্ণসংখ্যা:
get_int - ভাসমান:
get_float - স্ট্রিং:
get_string - মূল্য উৎস:
get_value_source
উদাহরণস্বরূপ, যদি আপনি আপনার সার্ভারে 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')}"- বুলিয়ান:
যদি আপনার সার্ভারটি দীর্ঘ সময় ধরে কাজ করে, সার্ভারলেস পরিবেশের বিপরীতে, তাহলে Remote Config সার্ভার থেকে সবচেয়ে আপ-টু-ডেট টেমপ্লেটটি আনতে পর্যায়ক্রমে টেমপ্লেটটি পুনরায় লোড করুন।
ধাপ ৪: Remote Config সার্ভার-নির্দিষ্ট প্যারামিটার মান সেট করুন
এরপর, একটি সার্ভার Remote Config টেমপ্লেট তৈরি করুন এবং আপনার অ্যাপে ব্যবহারের জন্য প্যারামিটার এবং মান কনফিগার করুন।
একটি সার্ভার-নির্দিষ্ট Remote Config টেমপ্লেট তৈরি করতে:
- Firebase কনসোল Remote Config প্যারামিটার পৃষ্ঠাটি খুলুন এবং ক্লায়েন্ট/সার্ভার নির্বাচক থেকে, Server নির্বাচন করুন।
- আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারের মতো একই নাম এবং ডেটা টাইপ দিয়ে Remote Config প্যারামিটারগুলি সংজ্ঞায়িত করুন এবং মান প্রদান করুন। এই মানগুলি আপনার কনফিগার আপনার সার্ভার অ্যাপ্লিকেশনে সেট করা
default_configওভাররাইড করবে যখন আপনি টেমপ্লেটটি আনবেন এবং মূল্যায়ন করবেন এবং আপনার ভেরিয়েবলগুলিতে এই মানগুলি নির্ধারণ করবেন। - ঐচ্ছিকভাবে, আপনার সংজ্ঞায়িত দৃষ্টান্ত বা কাস্টম সংকেতের একটি র্যান্ডম নমুনায় মানগুলি স্থায়ীভাবে প্রয়োগ করার জন্য শর্তগুলি সেট করুন। শর্ত সম্পর্কে আরও তথ্যের জন্য, শর্তের নিয়মের ধরণগুলি দেখুন।
- প্যারামিটার যোগ করা শেষ হলে, পরিবর্তন প্রকাশ করুন এ ক্লিক করুন।
- পরিবর্তনগুলি পর্যালোচনা করুন এবং আবার পরিবর্তনগুলি প্রকাশ করুন-এ ক্লিক করুন।
ধাপ ৫: Cloud Functions বা ক্লাউড রান দিয়ে স্থাপন করুন
যদি আপনার সার্ভার অ্যাপ্লিকেশনটি হালকা এবং ইভেন্ট-চালিত হয়, তাহলে আপনার Cloud Functions ব্যবহার করে আপনার কোড স্থাপন করার কথা বিবেচনা করা উচিত। উদাহরণস্বরূপ, যদি আপনার এমন একটি অ্যাপ থাকে যাতে একটি জেনারেটিভ AI API (উদাহরণস্বরূপ, Google AI বা Vertex AI ) দ্বারা চালিত চরিত্র সংলাপ অন্তর্ভুক্ত থাকে। এই ক্ষেত্রে, আপনি আপনার LLM-সার্ভিং লজিককে এমন একটি ফাংশনে হোস্ট করতে পারেন যা আপনার অ্যাপটি অন-ডিমান্ড কল করে।
সার্ভার-সাইড Remote Config সহ দ্বিতীয় প্রজন্মের Cloud Functions ব্যবহার করে এমন একটি সমাধানের মাধ্যমে কাজ করতে, Cloud Functions এবং ভার্টেক্স এআই সহ সার্ভার-সাইড Remote Config ব্যবহার করুন দেখুন।
Cloud Functions ব্যবহার করে আপনার অ্যাপ স্থাপন সম্পর্কে আরও জানতে, শুরু করুন: আপনার প্রথম ফাংশনগুলি লিখুন, পরীক্ষা করুন এবং স্থাপন করুন দেখুন।
অন্যথায়, আপনি ক্লাউড রান বিবেচনা করতে পারেন। ক্লাউড রান দিয়ে আপনার সার্ভার অ্যাপ স্থাপন করতে, Quickstart: Deploy a Python service to Cloud Run -এ নির্দেশিকা অনুসরণ করুন।
ক্লাউড রান এবং Cloud Functions সর্বোত্তম ব্যবহারের ক্ষেত্রে আরও তথ্যের জন্য, Cloud Functions বনাম ক্লাউড রান দেখুন: কখন একটির উপর আরেকটি ব্যবহার করবেন ।