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

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

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

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

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

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

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

ทำตามวิธีการในหัวข้อเพิ่ม Firebase Admin SDK ลงใน เซิร์ฟเวอร์เพื่อสร้าง Firebase ตั้งค่าบัญชีบริการ และเพิ่ม SDK Node.js ของผู้ดูแลระบบ Firebase ลงใน เซิร์ฟเวอร์ของคุณ

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

เมื่อคุณเริ่มต้น Admin SDK โดยไม่มีพารามิเตอร์ SDK จะใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน Google และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เช่น หากต้องการเริ่มต้น SDK และเพิ่ม Remote Config ให้ทำดังนี้

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

// Initialize Firebase
const firebaseApp = initializeApp();

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

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

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

ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
model_name ชื่อ API โมเดล สตริง gemini-1.5-pro
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 สําหรับเซิร์ฟเวอร์ที่เฉพาะเจาะจง และใช้ค่าของเทมเพลต ขั้นตอนต่อไปนี้จะอธิบายวิธีกำหนดค่าแอปพลิเคชัน Node.js

  1. เข้าถึงและโหลดเทมเพลต

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

    หากใช้ Node.js ภายใน Cloud Functions คุณจะใช้ getServerTemplate แบบอะซิงโครนัสเพื่อดึงข้อมูลและโหลดเทมเพลตในขั้นตอนเดียวได้ ดังนี้

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. โปรดเพิ่มค่าเริ่มต้นสำหรับพารามิเตอร์แต่ละรายการลงในแอปเพื่อให้แอปพลิเคชันทำงานได้สําเร็จแม้ว่าการเชื่อมต่อกับRemote Configเซิร์ฟเวอร์แบ็กเอนด์จะหยุดชะงักก็ตาม โดยให้เพิ่ม 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()
    
  3. หลังจากโหลดเทมเพลตแล้ว ให้ใช้ template.evaluate() เพื่อนําเข้าพารามิเตอร์และค่าจากเทมเพลต ดังนี้

    // Add template parameters to config
    const config = template.evaluate();
    
  4. (ไม่บังคับ) ถ้าคุณตั้งค่า สภาพสินค้า ในเทมเพลต Remote Config ให้ระบุและระบุ ค่าที่คุณต้องการ:

    • หากใช้ เปอร์เซ็นต์ ของ Google เพิ่ม randomizationId ที่ต้องการใช้เพื่อประเมิน ภายในฟังก์ชัน template.evaluate()
    • หากใช้ custom สัญญาณ กำหนดแอตทริบิวต์และค่าของแอตทริบิวต์ สัญญาณที่กำหนดเองใช้ได้กับ Firebase Admin Node.js SDK 12.5.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.
    const config = template.evaluate({
      randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04",
      version: "1.0",
      platform: "Android"
    });
    
    
  5. จากนั้นดึงค่าพารามิเตอร์ที่ต้องการจากค่าคงที่การกําหนดค่า ใช้ getters เพื่อแปลงค่าจาก Remote Config ให้เป็นรูปแบบที่คาดไว้ ประเภทดังต่อไปนี้ ที่รองรับมีดังนี้

    • บูลีน: getBoolean
    • วัตถุ: getValue
    • หมายเลข: getNumber
    • สตริง: getString

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

    // Replace defaults with values from Remote Config.
    const generationConfig =
      JSON.parse(
        config.getString('generation_config'));
    
    const is_ai_enabled = config.getBool('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}`;
    
  6. หากเซิร์ฟเวอร์ทำงานอยู่เป็นเวลานาน ซึ่งต่างจากสภาพแวดล้อมแบบเซิร์ฟเวอร์เสมือน ให้ใช้ setInterval เพื่อโหลดเทมเพลตซ้ำเป็นระยะๆ เพื่อให้แน่ใจว่าคุณดึงข้อมูลเทมเพลตล่าสุดจากเซิร์ฟเวอร์ Remote Config เป็นระยะๆ

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

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

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

  1. เปิดหน้าพารามิเตอร์คอนโซล Firebase Remote Config แล้วเลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์
  2. กําหนดพารามิเตอร์ Remote Config ที่มีชื่อและประเภทข้อมูลเดียวกับพารามิเตอร์ที่คุณกําหนดในแอป แล้วระบุค่า เหล่านี้ ค่าดังกล่าวจะลบล้าง defaultConfig ที่คุณตั้งไว้ใน กำหนดค่า แอปพลิเคชันเซิร์ฟเวอร์เมื่อคุณดึงข้อมูลและประเมิน เทมเพลตแล้วกำหนดค่าเหล่านี้ให้กับตัวแปรของคุณ
  3. กำหนดเงื่อนไขเพื่อใช้ค่าอย่างถาวรกับการสุ่ม (ไม่บังคับ) ตัวอย่างของอินสแตนซ์หรือสัญญาณที่กำหนดเองที่คุณกำหนด ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขได้ที่ประเภทกฎเงื่อนไข
  4. เมื่อคุณเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง
  5. ตรวจสอบการเปลี่ยนแปลงแล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง

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

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

หากแอปพลิเคชันของคุณมีไว้เพื่อใช้งานในระยะยาว (เช่น เว็บแอปที่มีชิ้นงาน) คุณอาจพิจารณาใช้ Cloud Run เพื่อทำให้ใช้งานได้ แอปเซิร์ฟเวอร์กับ Cloud Run ให้ทำตามคำแนะนำที่คู่มือเริ่มต้นฉบับย่อ: การติดตั้งใช้งาน บริการ Node.js ไปยังระบบคลาวด์ Run

ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่เหมาะสมที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: กรณีใดควรใช้แพลตฟอร์มใด