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 ของคุณ
เข้าถึงและโหลดเทมเพลต
// 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();
เพื่อให้แอปพลิเคชันของคุณทำงานสำเร็จ แม้ว่าจะเชื่อมต่อกับ เซิร์ฟเวอร์แบ็กเอนด์ 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();
หลังจากเทมเพลตโหลดแล้ว ให้ใช้
template.evaluate()
เพื่อนําเข้าพารามิเตอร์และ จากเทมเพลต:// Add template parameters to config const config = template.evaluate();
(ไม่บังคับ) ถ้าคุณตั้งค่า เปอร์เซ็นต์ ของ 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 });
จากนั้นให้แยกค่าพารามิเตอร์ที่คุณต้องการจากค่าคงที่ของการกำหนดค่า ใช้
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}`;
- บูลีน:
หากเซิร์ฟเวอร์ทำงานเป็นเวลานาน ซึ่งตรงข้ามกับสภาพแวดล้อมแบบ Serverless ใช้
setInterval
เพื่อโหลดเทมเพลตซ้ำเป็นระยะๆ เพื่อให้ คุณจะดึงข้อมูลเทมเพลต ล่าสุดเป็นระยะๆ จาก เซิร์ฟเวอร์ Remote Config
ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์เฉพาะเซิร์ฟเวอร์ใน Remote Config
ถัดไป ให้สร้างเทมเพลต Remote Config ของเซิร์ฟเวอร์และกำหนดค่าพารามิเตอร์และ มูลค่าที่จะใช้ในแอปของคุณ
วิธีสร้างเทมเพลต Remote Config เฉพาะเซิร์ฟเวอร์
- เปิดพารามิเตอร์คอนโซล Firebase Remote Config และจาก ตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ ให้เลือกเซิร์ฟเวอร์
- กําหนดพารามิเตอร์ Remote Config ที่มีชื่อและประเภทข้อมูลเดียวกับพารามิเตอร์ที่คุณกําหนดในแอป แล้วระบุค่า ค่าเหล่านี้จะลบล้าง
defaultConfig
ที่คุณตั้งค่าไว้ในกําหนดค่าแอปพลิเคชันเซิร์ฟเวอร์เมื่อคุณดึงข้อมูลและประเมินเทมเพลต รวมถึงกําหนดค่าเหล่านี้ให้กับตัวแปร - (ไม่บังคับ) กำหนดเงื่อนไขเปอร์เซ็นต์เพื่อใช้ค่าแบบถาวรกับ อินสแตนซ์แบบสุ่ม ดูข้อมูลเพิ่มเติมเกี่ยวกับเปอร์เซ็นต์ โปรดดูที่ผู้ใช้ในแบบสุ่ม เปอร์เซ็นต์
- เมื่อคุณเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง
- ตรวจสอบการเปลี่ยนแปลงแล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง
ขั้นตอนที่ 5: ทำให้ใช้งานได้ด้วย Cloud Functions หรือ Cloud Run
หากแอปพลิเคชันเซิร์ฟเวอร์มีน้ำหนักเบาและทำงานตามเหตุการณ์ คุณควรพิจารณาทำให้โค้ดใช้งานได้โดยใช้ Cloud Functions ตัวอย่างเช่น สมมติว่าคุณมีแอปที่มีบทสนทนาของตัวละครซึ่งทำงานด้วย Generative AI API (เช่น Google AI หรือ Vertex AI) ในกรณีนี้ คุณสามารถโฮสต์ ตรรกะการให้บริการ LLM ในฟังก์ชันที่แอปเรียกใช้แบบออนดีมานด์
วิธีแก้ปัญหาที่ใช้ Cloud Functions รุ่นที่ 2 กับ Remote Config ฝั่งเซิร์ฟเวอร์ โปรดดู ใช้ Remote Config ฝั่งเซิร์ฟเวอร์กับ Cloud Functions และ Vertex AI
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการทำให้แอปใช้งานได้ด้วย Cloud Functions โปรดดูที่ดาวน์โหลด เริ่มต้น: เขียน ทดสอบ และใช้งาน
ลองใช้ตัวอย่างฟังก์ชันที่เรียกใช้ได้ที่มี Remote Config ฝั่งเซิร์ฟเวอร์และ ที่ App Check โทรหา Vertex AI Gemini API กับ Remote Config และ App Check
หากแอปพลิเคชันของคุณมีไว้เพื่อใช้งานในระยะยาว (เช่น เว็บแอปที่มีชิ้นงาน) คุณอาจพิจารณาใช้ Cloud Run เพื่อทำให้ใช้งานได้ แอปเซิร์ฟเวอร์ของคุณด้วย Cloud Run ให้ทำตามคำแนะนำที่ คู่มือเริ่มต้นฉบับย่อ: การติดตั้งใช้งาน บริการ Node.js ไปยังระบบคลาวด์ Run
ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่เหมาะสมที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: กรณีใดควรใช้แพลตฟอร์มใด