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

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

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

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

সার্ভার-সাইড Remote Config ব্যবহার করে আপনি যা করতে পারেন:

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

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

শুরু করার আগে

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

  • নোড.জেএস : ফায়ারবেস অ্যাডমিন নোড.জেএস এসডিকে ভি১২.১.০+
  • পাইথন : ফায়ারবেস অ্যাডমিন পাইথন SDK v6.7.0+
  • জাভা : ফায়ারবেস অ্যাডমিন জাভা এসডিকে ভি৯.৭.০+
  • গো : ফায়ারবেস অ্যাডমিন গো এসডিকে ভি৪.১৭.০+

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

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

নোড.জেএস

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

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

// Initialize Firebase
const firebaseApp = initializeApp();

পাইথন

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);

যান

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 ব্যাকএন্ড সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হয়ে গেলেও আপনার অ্যাপ্লিকেশনটি সফলভাবে চলতে থাকবে।

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

প্যারামিটার নাম বর্ণনা প্রকার ডিফল্ট মান
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 টেমপ্লেটটি ফেচ করতে এবং এর মানগুলো মূল্যায়ন করতে কনফিগার করুন।

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

    নোড.জেএস

    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();
    

    পাইথন

    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 সাথে জাভা ব্যবহার করেন, তাহলে আপনি getServerTemplate() ব্যবহার করে এক ধাপেই টেমপ্লেটটি ইনিশিয়ালাইজ এবং লোড করতে পারেন:

    ServerTemplate template = rc.getServerTemplate();
    

    যান

    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 ব্যাকএন্ড সার্ভারের সাথে আপনার অ্যাপ্লিকেশনের সংযোগ বিচ্ছিন্ন হলেও যেন এটি সফলভাবে চলতে পারে, তা নিশ্চিত করতে আপনার অ্যাপের প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান যোগ করুন।

    নোড.জেএস

    আপনার 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();
    

    পাইথন

    আপনার 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 ফাংশন ব্যবহার করে এটিকে ইনিশিয়ালাইজ করা যায়।

    জাভা

    আপনার 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();
    

    যান

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

    // Initialize server-side Remote Config
    defaultConfig := make(map[string]any)
    defaultConfig["model_name"] = "gemini-2.0-flash"
    
    // Assume the type generationConfig has been defined
    defaultConfig["generation_config"] = &generationConfig{
        StopSequences:   []string{"I hope this helps"},
        Temperature:     0.7,
        MaxOutputTokens: 512,
        TopP:            0.9,
        TopK:            30,
    }
    
    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. টেমপ্লেটটি লোড হওয়ার পরে, টেমপ্লেট থেকে প্যারামিটার এবং মান ইম্পোর্ট করার জন্য টেমপ্লেটটি মূল্যায়ন করুন:

    নোড.জেএস

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

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

    পাইথন

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

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

    জাভা

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

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

    যান

    যখন কোনো শর্ত প্রয়োগ করা হয় না, তখন একটি খালি ইভ্যালুয়েশন কনটেক্সট সহ 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 ' সেট করতে পারেন।

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

    নোড.জেএস

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

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

    পাইথন

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

    # 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);
    

    যান

    template.Evaluate() এ randomizationID এবং যেকোনো কাস্টম সিগন্যাল সম্বলিত একটি ইভ্যালুয়েশন কনটেক্সট ম্যাপ পাস করুন:

    // 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 থেকে ভ্যালুগুলোকে প্রত্যাশিত ফরম্যাটে কাস্ট করতে গেটার মেথড ব্যবহার করুন।

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

    নোড.জেএস

    সমর্থিত গেটার মেথডসমূহ:

    • বুলিয়ান: 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}`;
    

    পাইথন

    সমর্থিত গেটার মেথডসমূহ:

    • বুলিয়ান: 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 ।

    যান

    সমর্থিত গেটার মেথডসমূহ:

    • বুলিয়ান: 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 & Engagement > Remote Config > Parameters পৃষ্ঠায় যান।

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

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

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

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

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

ধাপ ৫: Cloud Functions for Firebase অথবা Cloud Run ব্যবহার করে ডেপ্লয় করুন

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

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

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

Cloud Run এবং Cloud Functions for Firebase এর সর্বোত্তম ব্যবহার সম্পর্কে আরও তথ্যের জন্য, Cloud Functions for Firebase vs. Cloud Run : when to use one over the other দেখুন।

পরবর্তী পদক্ষেপ