ใช้การกำหนดค่าระยะไกลในสภาพแวดล้อมของเซิร์ฟเวอร์

Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin SDK สำหรับ Node.js (v12.1.0 ขึ้นไป), Python (v6.7.0 ขึ้นไป), Java (v9.7.0 ขึ้นไป) และ Go (v4.17.0 ขึ้นไป)

ความสามารถนี้ช่วยให้คุณจัดการลักษณะการทำงานและการกำหนดค่าของแอปพลิเคชันฝั่งเซิร์ฟเวอร์แบบไดนามิกได้โดยใช้ Remote Config ซึ่งรวมถึงการติดตั้งใช้งานแบบไม่ใช้เซิร์ฟเวอร์ เช่น Cloud Functions for Firebase และบริการที่ใช้คอนเทนเนอร์ใน Cloud Run

ซึ่งแตกต่างจาก Firebase Client SDK ที่ดึงข้อมูลการกำหนดค่าเฉพาะไคลเอ็นต์ซึ่งได้มาจากเทมเพลต Remote Config, Remote Config SDK ฝั่งเซิร์ฟเวอร์จะดาวน์โหลดหรือดึงข้อมูลเทมเพลต Remote Configที่สมบูรณ์จาก Firebase จากนั้นเซิร์ฟเวอร์จะประเมินเทมเพลตกับคำขอขาเข้าแต่ละรายการ และใช้ตรรกะของตัวเองเพื่อแสดงการตอบกลับที่ปรับแต่งแล้วโดยมีเวลาในการตอบสนองต่ำมาก คุณใช้เงื่อนไขเพื่อควบคุมและปรับแต่งการตอบกลับตามเปอร์เซ็นต์แบบสุ่มและแอตทริบิวต์ของไคลเอ็นต์ที่กําหนดไว้ในสัญญาณที่กําหนดเองได้

Remote Configฝั่งเซิร์ฟเวอร์ช่วยให้คุณทำสิ่งต่อไปนี้ได้

  • กําหนดพารามิเตอร์การกําหนดค่าสําหรับแอปพลิเคชันที่ทํางานหรือเข้าถึงผ่านเซิร์ฟเวอร์ของคุณ เพื่อให้ใช้กรณีการใช้งานต่างๆ ได้ เช่น การกําหนดค่าพารามิเตอร์ของโมเดล AI และพรอมต์ รวมถึงการผสานรวมอื่นๆ จากระยะไกล เพื่อให้มั่นใจว่าคีย์ API ของคุณจะปลอดภัยอยู่เสมอ
  • ปรับพารามิเตอร์แบบไดนามิกเพื่อตอบสนองต่อการเปลี่ยนแปลงในสภาพแวดล้อมหรือ การเปลี่ยนแปลงแอปพลิเคชันอื่นๆ เช่น การอัปเดตพารามิเตอร์ LLM และปลายทางของโมเดล
  • ควบคุมค่าใช้จ่ายโดยการอัปเดต API ที่เซิร์ฟเวอร์เรียกใช้จากระยะไกล
  • สร้างการกำหนดค่าที่กำหนดเองได้ทันทีสำหรับไคลเอ็นต์ที่เข้าถึงเซิร์ฟเวอร์ของคุณ
  • บันทึกว่าไคลเอ็นต์ใดได้รับค่าพารามิเตอร์และใช้ค่านี้ใน Cloud Functions for Firebase เป็นส่วนหนึ่งของระบบการยืนยันสิทธิ์

คุณสามารถติดตั้งใช้งาน Remote Config ฝั่งเซิร์ฟเวอร์ในสภาพแวดล้อมเซิร์ฟเวอร์ Cloud Run, Cloud Functions for Firebase หรือเซิร์ฟเวอร์ที่โฮสต์ด้วยตนเอง

ก่อนเริ่มต้น

ทําตามวิธีการใน เพิ่ม Firebase Admin SDK ลงในเซิร์ฟเวอร์ เพื่อสร้างโปรเจ็กต์ Firebase, ตั้งค่าบัญชีบริการ และเพิ่ม 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 ขึ้นไป

ขั้นตอนที่ 1: เริ่มต้นใช้งาน Firebase Admin SDK และให้สิทธิ์คำขอ API

เมื่อเริ่มต้น Admin 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 (พร้อมกับ asyncio และ json สำหรับการโหลดเทมเพลตแบบไม่พร้อมกันและการแยกวิเคราะห์ JSON) จากนั้นเริ่มต้นแอปพลิเคชัน

import firebase_admin
import asyncio
import json

firebase_admin.initialize_app()

Java

เริ่มต้นใช้งาน Firebase Admin SDK โดยใช้ FirebaseOptions และข้อมูลเข้าสู่ระบบของบัญชีบริการ

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

ขั้นตอนที่ 2: ระบุค่าพารามิเตอร์เริ่มต้นสำหรับแอปพลิเคชันเซิร์ฟเวอร์

ระบุตัวแปรในแอปที่ต้องการอัปเดตแบบไดนามิกด้วย Remote Config จากนั้นพิจารณาว่าตัวแปรใดที่ต้องตั้งค่าเริ่มต้นในแอปพลิเคชัน และค่าเริ่มต้นของตัวแปรเหล่านั้นควรเป็นเท่าใด วิธีนี้ช่วยให้มั่นใจได้ว่า แอปพลิเคชันจะทํางานได้สําเร็จแม้ว่าการเชื่อมต่อกับRemote Config เซิร์ฟเวอร์แบ็กเอนด์จะถูกขัดจังหวะก็ตาม

เช่น หากคุณกำลังเขียนแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการฟังก์ชัน AI คุณอาจตั้งชื่อโมเดลเริ่มต้น คำนำของพรอมต์ และการกำหนดค่า Generative AI ดังนี้

ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
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. เข้าถึงและโหลดเทมเพลตเซิร์ฟเวอร์ 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();
    

    หากคุณใช้ Node.js ภายใน Cloud Functions for Firebase คุณสามารถใช้ฟังก์ชัน 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())
    

    หรือหากคุณใช้ Python กับ Cloud Functions for Firebase คุณสามารถใช้ฟังก์ชัน get_server_template() แบบอะซิงโครนัสเพื่อ เริ่มต้นและโหลดเทมเพลตได้ในขั้นตอนเดียว

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

    Java

    เริ่มต้นRemote Configไคลเอ็นต์ฝั่งเซิร์ฟเวอร์โดยใช้ FirebaseRemoteConfig.getInstance()

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

    หรือหากใช้ Java กับ Cloud Functions for Firebase คุณสามารถใช้ 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 ที่จัดเก็บไว้ในเครื่องได้ และ จากนั้นก็เริ่มต้นเทมเพลต JSON นี้โดยใช้ฟังก์ชัน InitServerTemplate

  2. โปรดเพิ่มค่าเริ่มต้นสำหรับแต่ละพารามิเตอร์ในแอปเพื่อให้แอปพลิเคชันทำงานได้สำเร็จแม้ว่าการเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ Remote Config จะถูกขัดจังหวะ

    Node.js

    เพิ่มออบเจ็กต์ defaultConfig ภายในฟังก์ชันเทมเพลต initServerTemplate หรือ getServerTemplate ดังนี้

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

    Python

    เพิ่มdefault_configพจนานุกรมภายในinit_server_templateหรือ ฟังก์ชันเทมเพลต get_server_template

    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 เพื่อดึงเทมเพลตเซิร์ฟเวอร์ที่จำเป็น คุณแปลงเทมเพลตนี้เป็นรูปแบบ JSON ได้โดยใช้ฟังก์ชัน template.to_json คุณจัดเก็บเทมเพลต JSON นี้ไว้ในเครื่องได้ และ ต่อมาคุณจะเริ่มต้นเทมเพลต JSON นี้ได้โดยใช้ฟังก์ชัน init_server_template

    Java

    เพิ่มออบเจ็กต์ defaultConfig โดยใช้ KeysAndValues ภายในฟังก์ชัน getServerTemplate

    // 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

    เพิ่มdefaultConfigแผนที่ภายในInitServerTemplateหรือ GetServerTemplateฟังก์ชันเทมเพลต:

    // 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. หลังจากโหลดเทมเพลตแล้ว ให้ประเมินเทมเพลตเพื่อนำเข้าพารามิเตอร์และค่าจากเทมเพลตโดยทำดังนี้

    Node.js

    ใช้ template.evaluate()

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

    Python

    ใช้ template.evaluate()

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

    Java

    ใช้ 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 เวอร์ชัน 12.5.0 ขึ้นไป, Python SDK เวอร์ชัน 6.7.0 ขึ้นไป, Java SDK เวอร์ชัน 9.7.0 ขึ้นไป และ Go SDK เวอร์ชัน 4.17.0 ขึ้นไป

    เช่น คุณอาจตั้งค่า Firebaseรหัสการติดตั้ง หรือ User-ID เป็นรหัสการสุ่มเพื่อให้มั่นใจว่าระบบจะเพิ่มผู้ใช้แต่ละรายที่ติดต่อเซิร์ฟเวอร์ของคุณลงในกลุ่มที่สุ่มอย่างเหมาะสม 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"
    })
    

    Java

    สร้างบริบท KeysAndValues ที่มี randomizationId และสัญญาณที่กำหนดเอง แล้วส่งไปยัง 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. จากนั้นดึงค่าพารามิเตอร์ที่ต้องการจาก ออบเจ็กต์การกำหนดค่าที่ประเมินแล้ว ใช้วิธีการ Getter เพื่อส่งค่าจาก Remote Config ไปยังรูปแบบที่คาดไว้

    เช่น หากคุณใช้ Agent Platform ในเซิร์ฟเวอร์ และต้องการเปลี่ยนโมเดลและพารามิเตอร์ของโมเดล คุณอาจกำหนดค่า พารามิเตอร์สำหรับ model_name และ generation_config ต่อไปนี้คือเมธอด Getter ที่รองรับและตัวอย่างวิธีเข้าถึงค่า Remote Config สำหรับแต่ละแพลตฟอร์ม

    Node.js

    วิธีการ Getter ที่รองรับมีดังนี้

    • บูลีน: 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

    วิธีการ Getter ที่รองรับมีดังนี้

    • บูลีน: 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')}"
    

    Java

    วิธีการ Getter ที่รองรับมีดังนี้

    • บูลีน: 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

    วิธีการ Getter ที่รองรับมีดังนี้

    • บูลีน: 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. หากเซิร์ฟเวอร์ของคุณทำงานเป็นเวลานาน ซึ่งต่างจากสภาพแวดล้อมแบบ Serverless ให้โหลดเทมเพลตซ้ำเป็นระยะๆ (เช่น ใช้ setInterval ใน Node.js หรือ java.util.Timer ใน Java) เพื่อยืนยันว่าคุณกำลังดึงเทมเพลตล่าสุดจากเซิร์ฟเวอร์ Remote Config

ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์เฉพาะเซิร์ฟเวอร์ใน Remote Config

จากนั้นสร้างRemote Configเทมเพลตเซิร์ฟเวอร์และกำหนดค่าพารามิเตอร์และ ค่าที่จะใช้ในแอป

วิธีสร้างRemote Configเทมเพลตเฉพาะเซิร์ฟเวอร์มีดังนี้

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และความผูกพัน > การกำหนดค่าระยะไกล > พารามิเตอร์

  2. จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า ให้เลือก เซิร์ฟเวอร์

  3. กําหนดRemote Configพารามิเตอร์ที่มีชื่อและประเภทข้อมูลเดียวกันกับ พารามิเตอร์ที่คุณกําหนดในแอปและระบุค่า ค่าเหล่านี้ จะลบล้างการกำหนดค่าเริ่มต้น (defaultConfig หรือ default_config) ที่คุณตั้งค่าไว้ใน กำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์ เมื่อดึงและประเมินเทมเพลต รวมถึงกำหนดค่าเหล่านี้ให้กับตัวแปร

  4. คุณเลือกตั้งค่าเงื่อนไขเพื่อใช้ค่ากับตัวอย่างแบบสุ่ม ของอินสแตนซ์หรือสัญญาณที่กำหนดเองที่คุณกำหนดได้อย่างต่อเนื่อง ดูข้อมูลเพิ่มเติมเกี่ยวกับ เงื่อนไขได้ที่ ประเภทกฎเงื่อนไข

  5. เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง

  6. ตรวจสอบการเปลี่ยนแปลง แล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง

ขั้นตอนที่ 5: ติดตั้งใช้งานด้วย Cloud Functions for Firebase หรือ Cloud Run

หากแอปพลิเคชันเซิร์ฟเวอร์มีขนาดเล็กและทำงานตามเหตุการณ์ คุณควรพิจารณา การติดตั้งใช้งานโค้ดโดยใช้ Cloud Functions for Firebase ตัวอย่างเช่น สมมติว่าคุณมีแอปที่มีบทสนทนาของตัวละครซึ่งขับเคลื่อนโดย Generative AI API (เช่น Google AI หรือ Agent Platform) ในกรณีนี้ คุณ สามารถโฮสต์ตรรกะการแสดงผล LLM ในฟังก์ชันที่แอปเรียกใช้ตามต้องการได้

หากคุณกำลังสร้างเว็บแอปที่แสดงผลฝั่งเซิร์ฟเวอร์ App Hosting รองรับเฟรมเวิร์กเว็บยอดนิยม

หรือคุณอาจพิจารณา Cloud Run หากต้องการติดตั้งใช้งานแอปเซิร์ฟเวอร์ด้วย Cloud Run ให้ทำตามคู่มือเริ่มใช้งานฉบับย่อ สำหรับภาษาของคุณ

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Use Case ที่ดีที่สุดสำหรับ Cloud Run และ Cloud Functions for Firebase ได้ที่ Cloud Functions for Firebase เทียบกับ Cloud Run: เมื่อใดควรใช้ตัวใดตัวหนึ่ง

ขั้นตอนถัดไป