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

Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Node.js SDK v12.1.0 ขึ้นไป ความสามารถใหม่นี้ช่วยให้ คุณสามารถจัดการพฤติกรรมและการกำหนดค่าของฝั่งเซิร์ฟเวอร์ได้แบบไดนามิก แอปพลิเคชันที่ใช้ Remote Config ซึ่งรวมถึงการติดตั้งใช้งานแบบ Serverless เช่น 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, ตั้งค่าบัญชีบริการ และเพิ่ม Firebase Admin Node.js SDK ลงในเซิร์ฟเวอร์

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

เมื่อคุณเริ่มต้น Admin SDK โดยไม่มีพารามิเตอร์ SDK จะใช้ ค่าเริ่มต้นของแอปพลิเคชัน ข้อมูลเข้าสู่ระบบ และอ่านตัวเลือกจากสภาพแวดล้อม 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. (ไม่บังคับ) ถ้าคุณตั้งค่า เปอร์เซ็นต์ ของ Google ในเทมเพลต Remote Config ของคุณ ให้กำหนดและระบุ randomizationId ที่คุณต้องการใช้ในการประเมินเงื่อนไขภายใน template.evaluate()

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

    สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขเปอร์เซ็นต์ โปรดดูที่ผู้ใช้ในแบบสุ่ม เปอร์เซ็นต์

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  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. หากเซิร์ฟเวอร์ทำงานเป็นเวลานาน ซึ่งตรงข้ามกับสภาพแวดล้อมแบบ Serverless ใช้ 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: กรณีใดควรใช้แพลตฟอร์มใด