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

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

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

เมื่อใช้การกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์ คุณจะทำสิ่งต่อไปนี้ได้

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

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

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

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

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

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

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

// Initialize Firebase
const firebaseApp = initializeApp();

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

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

เช่น ถ้าคุณเขียนแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการ 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: กำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์

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

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

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

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

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

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

    // 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 เพื่อโหลดเทมเพลตซ้ำเป็นระยะๆ เพื่อให้ คุณจะดึงข้อมูลเทมเพลต ล่าสุดเป็นระยะๆ จาก เซิร์ฟเวอร์การกำหนดค่าระยะไกล

ขั้นตอนที่ 4: ตั้งค่าค่าพารามิเตอร์เฉพาะเซิร์ฟเวอร์ในการกำหนดค่าระยะไกล

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

วิธีสร้างเทมเพลตการกำหนดค่าระยะไกลเฉพาะเซิร์ฟเวอร์

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

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

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

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

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