সার্ভার এনভায়রনমেন্টে রিমোট কনফিগ ব্যবহার করা

Firebase Remote Config, Node.js (v12.1.0+), Python (v6.7.0+), Java (v9.7.0+) এবং Go (v4.17.0+)-এর জন্য Firebase অ্যাডমিন SDK ব্যবহার করে সার্ভার-সাইড কনফিগারেশন সাপোর্ট করে।

এই ক্ষমতা আপনাকে Remote Config ব্যবহার করে সার্ভার-সাইড অ্যাপ্লিকেশনের আচরণ এবং কনফিগারেশন ডায়নামিকভাবে ম্যানেজ করতে দেয়। এর মধ্যে Cloud Functions for Firebase-এর মতো সার্ভারলেস ইমপ্লিমেন্টেশন এবং Cloud Run-এ কন্টেনারাইজড পরিষেবা অন্তর্ভুক্ত।

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

সার্ভার-সাইড Remote Config-এর মাধ্যমে আপনি এগুলি করতে পারবেন:

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

আপনি Cloud Run, Cloud Functions for Firebase বা সেল্ফ-হোস্টেড সার্ভার এনভায়রনমেন্টে সার্ভার-সাইড Remote Config ডেপ্লয় করতে পারবেন।

শুরু করার আগে

Firebase প্রোজেক্ট তৈরি করতে, পরিষেবা অ্যাকাউন্ট সেট-আপ করতে এবং আপনার সার্ভারে Firebase Admin SDK যোগ করতে আপনার সার্ভারে Firebase Admin SDK যোগ করুন লিঙ্কে দেওয়া নির্দেশাবলী অনুসরণ করুন। আপনার প্ল্যাটফর্মের জন্য Admin SDK-এর কাজ করে এমন ভার্সন ব্যবহার করছেন কিনা তা নিশ্চিত করুন:

  • Node.js: Firebase Admin Node.js SDK v12.1.0+
  • Python: Firebase Admin Python SDK v6.7.0+
  • Java: Firebase Admin Java SDK v9.7.0+
  • Go: Firebase Admin Go SDK v4.17.0+

ধাপ ১: Firebase অ্যাডমিন SDK শুরু করা এবং API অনুরোধ অনুমোদন করা

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

Node.js

initializeApp এবং getRemoteConfig ইম্পোর্ট করুন, তারপর আপনার Firebase অ্যাপ্লিকেশন ইনস্ট্যান্স ইনিশিয়ালাইজ করুন:

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

// Initialize Firebase
const firebaseApp = initializeApp();

Python

firebase_admin ইমপোর্ট করুন (অ্যাসিঙ্ক্রোনাস টেমপ্লেট লোডিং এবং JSON পার্সিংয়ের জন্য asyncio এবং json সহ), তারপর অ্যাপ্লিকেশনটি শুরু করুন:

import firebase_admin
import asyncio
import json

firebase_admin.initialize_app()

জাভা

FirebaseOptions এবং আপনার পরিষেবা অ্যাকাউন্ট ক্রেডেনশিয়াল ব্যবহার করে Firebase অ্যাডমিন SDK শুরু করুন:

// Initialize the Firebase Admin SDK
FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
    .build();
FirebaseApp.initializeApp(options);

Go

Firebase অ্যাপ্লিকেশন শুরু করুন এবং একটি RemoteConfig ক্লায়েন্ট ইনস্ট্যান্স তৈরি করুন:

ctx := context.Background()

// Initialize Firebase
app, err := firebase.NewApp(ctx, nil)
if err != nil {
    log.Fatalln("Error initializing app:", err)
}

remoteConfig, err := app.RemoteConfig(ctx)
if err != nil {
    log.Fatalln("Error initializing remote config client:", err)
}

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

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

যেমন, আপনি যদি কোনও সার্ভার অ্যাপ্লিকেশন লেখেন যা জেনারেটিভ AI ফাংশন ম্যানেজ করে, তাহলে আপনি ডিফল্ট মডেলের নাম, প্রম্পটের প্রারম্ভিক নির্দেশাবলী এবং জেনারেটিভ AI কনফিগারেশন সেট করতে পারেন, যেমন:

প্যারামিটারের নাম বিবরণ Type ডিফল্ট ভ্যালু
model_name মডেল API-এর নাম স্ট্রিং gemini-3.8-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"], "maxOutputTokens": 512}

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

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

  1. Remote Config সার্ভার টেমপ্লেট অ্যাক্সেস ও লোড করুন।

    Node.js

    initServerTemplate() ব্যবহার করে সার্ভার টেমপ্লেট শুরু করুন এবং ব্যাকএন্ড থেকে টেমপ্লেট আনতে load() কল করুন:

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

    আপনি Cloud Functions for Firebase-এর মধ্যে Node.js ব্যবহার করলে, একই ধাপে টেমপ্লেট শুরু ও লোড করতে অ্যাসিঙ্ক্রোনাস getServerTemplate() ফাংশন ব্যবহার করতে পারবেন:

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

    Python

    init_server_template() ব্যবহার করে সার্ভার টেমপ্লেট শুরু করুন এবং ব্যাকএন্ড থেকে টেমপ্লেট আনতে load() কল করুন:

    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 for Firebase-এর সাথে Python ব্যবহার করেন, তাহলে আপনি অ্যাসিঙ্ক্রোনাস get_server_template() ফাংশন ব্যবহার করে একই ধাপে টেমপ্লেট শুরু ও লোড করতে পারবেন:

    # Initialize server-side Remote Config
    template = await remote_config.get_server_template()
    

    জাভা

    FirebaseRemoteConfig.getInstance() ব্যবহার করে সার্ভার-সাইড Remote Config ক্লায়েন্ট শুরু করুন:

    // Initialize server-side Remote Config client
    FirebaseRemoteConfig rc = FirebaseRemoteConfig.getInstance();
    

    বিকল্প হিসেবে, আপনি যদি Cloud Functions for Firebase-এর সাথে Java ব্যবহার করেন, তাহলে আপনি getServerTemplate() ব্যবহার করে একটি ধাপে টেমপ্লেট শুরু ও লোড করতে পারবেন:

    ServerTemplate template = rc.getServerTemplate();
    

    Go

    InitServerTemplate() ব্যবহার করে সার্ভার টেমপ্লেট শুরু করুন এবং ব্যাকএন্ড থেকে টেমপ্লেট আনতে Load() কল করুন:

    // Initialize server-side Remote Config
    defaultConfig := make(map[string]any)
    templateDataJSON := ""
    template, err := remoteConfig.InitServerTemplate(defaultConfig, templateDataJSON)
    if err != nil {
        log.Fatalln("Error initializing server template:", err)
    }
    
    // Load Remote Config
    err = template.Load(ctx)
    if err != nil {
        log.Fatalln("Error fetching server template:", err)
    }
    

    প্রয়োজনীয় সার্ভার টেমপ্লেট ফিরিয়ে আনতে GetServerTemplate ফাংশন ব্যবহার করে আপনি অন্যভাবে টেমপ্লেট চালু করতে পারবেন। আপনি এই টেমপ্লেটকে JSON ফর্ম্যাটে কনভার্ট করতে পারবেন যা লোকালি স্টোর করা যাবে এবং তারপরে InitServerTemplate ফাংশন ব্যবহার করে এই JSON টেমপ্লেট ইনিশিয়ালাইজ করতে পারবেন।

  2. Remote Config ব্যাকএন্ড সার্ভারের সাথে কানেকশন বিঘ্নিত হলেও আপনার অ্যাপ্লিকেশন যাতে সফলভাবে চলে তা নিশ্চিত করতে, আপনার অ্যাপের প্রতিটি প্যারামিটারের জন্য ডিফল্ট ভ্যালু যোগ করুন।

    Node.js

    আপনার initServerTemplate বা getServerTemplate টেমপ্লেট ফাংশনের মধ্যে একটি defaultConfig অবজেক্ট যোগ করুন:

    const template = rc.initServerTemplate({
      defaultConfig: {
        model_name: "gemini-3.8-flash",
        generation_config: '{"stopSequences": [], "maxOutputTokens": 512}',
        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();
    

    Python

    আপনার init_server_template বা get_server_template টেমপ্লেট ফাংশনের মধ্যে একটি default_config ডিকশনারি যোগ করুন:

    template = remote_config.init_server_template({
      'default_config': {
        'model_name': "gemini-3.8-flash",
        'generation_config': '{"stopSequences": [], "maxOutputTokens": 512}',
        '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 টেমপ্লেট ইনিশিয়ালাইজ করতে পারবেন।

    জাভা

    আপনার getServerTemplate ফাংশনের মধ্যে KeysAndValues ব্যবহার করে একটি defaultConfig অবজেক্ট যোগ করুন:

    // Initialize default config using KeysAndValues
    KeysAndValues defaultConfig = new KeysAndValues.Builder()
                                      .put("rc_param_1", "default value 1")
                                      .put("rc_param_2", "default value 2")
                                      .build();
    ServerTemplate template = rc.getServerTemplate(defaultConfig);
    

    বিকল্প হিসেবে, আপনি শুরু করার সময় ডিফল্ট ক্যাশে করা টেমপ্লেট পাস করতে পারেন Remote Config, যা Remote Config সার্ভারের সাথে কানেকশন বিঘ্নিত হলেও ব্যবহার করা যেতে পারে:

    String templateDataJSON = "{}"; // add your default template as JSON
    ServerTemplate template = rc.serverTemplateBuilder()
                        .defaultConfig(defaultConfig)
                        .cachedTemplate(templateDataJSON)
                        .build();
    

    Go

    আপনার InitServerTemplate বা GetServerTemplate টেমপ্লেট ফাংশনের মধ্যে একটি defaultConfig ম্যাপ যোগ করুন:

    // Initialize server-side Remote Config
    defaultConfig := make(map[string]any)
    defaultConfig["model_name"] = "gemini-3.8-flash"
    
    // Assume the type generationConfig has been defined
    defaultConfig["generation_config"] = &generationConfig{
        StopSequences:   []string{"I hope this helps"},
        MaxOutputTokens: 512,
    }
    
    defaultConfig["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!"
    
    templateDataJSON := ""
    template, err := remoteConfig.InitServerTemplate(defaultConfig, templateDataJSON)
    if err != nil {
        log.Fatalln("Error initializing server template:", err)
    }
    
    // Load Remote Config
    err = template.Load(ctx)
    if err != nil {
        log.Fatalln("Error fetching server template:", err)
    }
    
  3. টেমপ্লেট লোড হওয়ার পরে, টেমপ্লেট থেকে প্যারামিটার ও ভ্যালু ইমপোর্ট করার জন্য টেমপ্লেট মূল্যায়ন করুন:

    Node.js

    template.evaluate() ব্যবহার করুন:

    // Add template parameters to config
    const config = template.evaluate();
    

    Python

    template.evaluate() ব্যবহার করুন:

    # Add template parameters to config
    config = template.evaluate()
    

    জাভা

    template.evaluate() ব্যবহার করুন:

    // Add template parameters to config
    ServerConfig config = template.evaluate();
    

    Go

    কোনও শর্ত প্রয়োগ করা না হলে, খালি মূল্যায়ন কন্টেক্সট সহ template.Evaluate() ব্যবহার করুন:

    // An empty evaluation context means no conditions are applied.
    evaluationContext := make(map[string]any)
    config, err := template.Evaluate(evaluationContext)
    if err != nil {
        log.Fatalln("Error evaluating template:", err)
    }
    
  4. ঐচ্ছিকভাবে, আপনি যদি নিজের Remote Config টেমপ্লেটে শর্ত সেট করেন, তাহলে আপনি যে কনটেক্সট ভ্যালু চান তা নির্ধারণ করুন এবং প্রদান করুন:

    • শতাংশ শর্ত ব্যবহার করলে, টেমপ্লেট মূল্যায়ন ফাংশনের মধ্যে আপনার শর্ত মূল্যায়ন করার জন্য যে র‍্যান্ডমাইজেশন আইডি (randomizationId, randomization_id, অথবা randomizationID) ব্যবহার করতে চান সেটি যোগ করুন।
    • কাস্টম সিগন্যাল ব্যবহার করলে, অ্যাট্রিবিউট ও সেগুলির ভ্যালু নির্ধারণ করুন। Firebase Admin Node.js SDK v12.5.0+, Python SDK v6.7.0+, Java SDK v9.7.0+ এবং Go SDK v4.17.0+-এর সাথে কাস্টম সিগন্যাল উপলভ্য।

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

    শর্ত সম্পর্কে আরও জানতে, শর্তের নিয়ম সংক্রান্ত প্রকার দেখুন।

    Node.js

    randomizationId এবং template.evaluate()-এ যেকোনও কাস্টম সিগন্যাল সহ মূল্যায়ন কনটেক্সট অবজেক্ট পাস করুন:

    // 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"
    });
    

    Python

    randomization_id এবং যেকোনও কাস্টম সিগন্যাল সহ একটি ডিকশনারি template.evaluate()-এ পাস করুন:

    # 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"
    })
    

    জাভা

    randomizationId এবং যেকোনও কাস্টম সিগন্যাল সহ একটি KeysAndValues কনটেক্সট তৈরি করুন এবং এটি template.evaluate()-এ পাস করুন:

    // Add custom signals and randomizationId
    KeysAndValues context = new KeysAndValues.Builder()
                                    .put("custom_signal_key", "99")
                                    .put("randomizationId", "2ac93c28")
                                    .build();
    
    // Evaluate the template with signals
    ServerConfig config = template.evaluate(context);
    

    Go

    randomizationID এবং template.Evaluate()-এ যেকোনও কাস্টম সিগন্যাল সহ একটি মূল্যায়ন প্রসঙ্গ ম্যাপ পাস করুন:

    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationID}, version, and platform.
    evaluationContext := make(map[string]any)
    evaluationContext["randomizationID"] = "2ac93c28-c459-4760-963d-a3974ec26c04"
    evaluationContext["version"] = "1.0"
    evaluationContext["platform"] = "Android"
    
    config, err := template.Evaluate(evaluationContext)
    if err != nil {
        log.Fatalln("Error evaluating template:", err)
    }
    
  5. এরপর, মূল্যায়ন করা কনফিগারেশন অবজেক্ট থেকে আপনার প্রয়োজনীয় প্যারামিটারের মান এক্সট্র্যাক্ট করুন। Remote Config থেকে প্রত্যাশিত ফর্ম্যাটে ভ্যালু কাস্ট করতে গেটার পদ্ধতি ব্যবহার করুন।

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

    Node.js

    যেসব গেটার পদ্ধতি কাজ করে:

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

    // Replace defaults with values from Remote Config.
    const generationConfig =
      JSON.parse(
        config.getString('generation_config'));
    
    const is_ai_enabled = config.getBoolean('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}`;
    

    Python

    যেসব গেটার পদ্ধতি কাজ করে:

    • বুলিয়ান: get_bool
    • পূর্ণসংখ্যা: get_int
    • ফ্লোট: get_float
    • স্ট্রিং: get_string
    • ভ্যালু সোর্স: get_value_source

    # 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')}"
    

    জাভা

    যেসব গেটার পদ্ধতি কাজ করে:

    • বুলিয়ান: getBoolean
    • স্ট্রিং: getString
    • ডবল: getDouble
    • লম্বা: getLong
    • ভ্যালু সোর্স: getValueSource

    // Get the model name
    String modelName = config.getString("model_name");
    // Get the origin of value assigned to param
    ValueSource modelNameSource = config.getValueSource("model_name");
    

    getValueSource পদ্ধতিটি একটি ValueSource রিটার্ন করে যা নির্দেশ করে যে প্যারামিটারের ভ্যালু সোর্স STATIC, REMOTE নাকি DEFAULT।

    Go

    যেসব গেটার পদ্ধতি কাজ করে:

    • বুলিয়ান: GetBoolean
    • পূর্ণসংখ্যা: GetInt
    • ফ্লোট: GetFloat
    • স্ট্রিং: GetString
    • ভ্যালু সোর্স: GetValueSource

    // Replace defaults with values from Remote Config.
    
    // Assume the type generationConfig has been defined
    var genConfig generationConfig
    err = json.Unmarshal([]byte(config.GetString("generation_config")), &genConfig)
    if err != nil {
        log.Fatalln("Error unmarshaling generation config:", err)
    }
    model := config.GetString("model_name")
    
    // Parameter created on the console
    isAIEnabled := config.GetBoolean("is_ai_enabled")
    
    // Generates a prompt comprised of the Remote Config
    // parameter and prepends it to the user prompt (assume it is extracted from the request body)
    userPrompt := "What is Remote Config?"
    prompt := fmt.Sprintf("%s %s", config.GetString("preamble_prompt"), userPrompt)
    
  6. আপনার সার্ভার যদি সার্ভারলেস এনভায়রনমেন্টের বিপরীতে দীর্ঘ সময় ধরে চলে, তাহলে আপনি Remote Config সার্ভার থেকে সবচেয়ে আপ-টু-ডেট টেমপ্লেট ফেচ করছেন কিনা তা কনফার্ম করতে, পর্যায়ক্রমে টেমপ্লেট রিলোড করুন (যেমন, Node.js-এ setInterval বা Java-তে java.util.Timer ব্যবহার করে)।

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

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

সার্ভার-নির্দিষ্ট Remote Config টেমপ্লেট কীভাবে তৈরি করবেন তা এখানে দেওয়া হল:

  1. Firebase কনসোলে, DevOps ও এনগেজমেন্ট > রিমোট কনফিগ > প্যারামিটার পৃষ্ঠায় যান।

  2. পৃষ্ঠার সবচেয়ে উপরে ক্লায়েন্ট/সার্ভার বেছে নেওয়ার বিকল্প থেকে সার্ভার বেছে নিন।

  3. আপনার অ্যাপে ডিফাইন করা প্যারামিটারের মতো একই নাম ও ডেটা টাইপ সহ Remote Configটি প্যারামিটার ডিফাইন করুন এবং ভ্যালু প্রদান করুন। এইসব ভ্যালু ডিফল্ট কনফিগারেশন (defaultConfig বা default_config) ওভাররাইড করবে যা আপনি আপনার সার্ভার অ্যাপ্লিকেশন কনফিগার করুন বিকল্পে সেট করেছেন, যখন আপনি টেমপ্লেট ফেচ ও মূল্যায়ন করেন এবং আপনার ভেরিয়েবলে এইসব ভ্যালু অ্যাসাইন করেন।

  4. বিকল্প হিসেবে, আপনার সংজ্ঞায়িত করা ইনস্ট্যান্স বা কাস্টম সিগন্যালের র‍্যান্ডম স্যাম্পেলে স্থায়ীভাবে ভ্যালু প্রয়োগ করার জন্য শর্ত সেট করুন। শর্ত সম্পর্কে আরও জানতে, শর্তের নিয়ম সংক্রান্ত ধরন দেখুন।

  5. প্যারামিটার যোগ করা হয়ে গেলে, পরিবর্তন প্রকাশ করুন বিকল্পে ক্লিক করুন।

  6. পরিবর্তনগুলি পর্যালোচনা করুন এবং আবার পরিবর্তনগুলি প্রকাশ করুন বিকল্পে ক্লিক করুন।

ধাপ ৫: Cloud Functions for Firebase বা Cloud Run-এর মাধ্যমে ডিপ্লয় করুন

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

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

অন্যথায়, আপনি Cloud Run বিবেচনা করতে পারেন। Cloud Run-এর সাথে আপনার সার্ভার অ্যাপ ডেপ্লয় করতে, আপনার ভাষার জন্য কুইকস্টার্ট গাইড অনুসরণ করুন:

পরবর্তী ধাপ