Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Node.js SDK v12.1.0 ขึ้นไป ความสามารถนี้ช่วยให้คุณจัดการลักษณะการทำงานและการกำหนดค่า ของแอปพลิเคชันฝั่งเซิร์ฟเวอร์แบบไดนามิกได้โดยใช้ Remote Config ซึ่งรวมถึงการใช้งานแบบไร้เซิร์ฟเวอร์ เช่น Cloud Functions
Firebase Client SDK จะดึงข้อมูลการกำหนดค่าเฉพาะไคลเอ็นต์ที่ได้จากเทมเพลต Remote Config แต่ Server-Side 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: เริ่มต้น Node.js SDK ของ Firebase Admin และให้สิทธิ์คำขอ 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-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 เฉพาะเซิร์ฟเวอร์ และใช้ค่าของเทมเพลต ขั้นตอนต่อไปนี้จะอธิบายวิธีกําหนดค่าแอปพลิเคชัน 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();
หากตั้งค่าเงื่อนไขในเทมเพลต Remote Config คุณสามารถกำหนดและระบุค่าที่ต้องการได้ (ไม่บังคับ)
- หากใช้เงื่อนไขเปอร์เซ็นต์
ให้เพิ่ม
randomizationId
ที่ต้องการใช้ประเมินเงื่อนไขภายในฟังก์ชันtemplate.evaluate()
- หากใช้สัญญาณที่กำหนดเอง ให้กำหนดแอตทริบิวต์และค่าของแอตทริบิวต์ สัญญาณที่กำหนดเองพร้อมใช้งานกับ Firebase Admin Node.js SDK 12.5.0 ขึ้นไป
เช่น คุณอาจตั้งค่ารหัสการติดตั้ง Firebase เป็น
randomizationId
หรือ User ID เพื่อให้มั่นใจว่าระบบจะเพิ่มผู้ใช้แต่ละรายที่ติดต่อเซิร์ฟเวอร์ของคุณไปยังกลุ่มแบบสุ่มที่เหมาะสม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" });
- หากใช้เงื่อนไขเปอร์เซ็นต์
ให้เพิ่ม
จากนั้น แยกค่าพารามิเตอร์ที่ต้องการจาก ค่าคงที่ของการกำหนดค่า ใช้
getters
เพื่อส่งค่าจาก Remote Config ไปยังรูปแบบที่คาดไว้ ระบบรองรับประเภทต่อไปนี้- บูลีน:
getBoolean
- ออบเจ็กต์:
getValue
- หมายเลข:
getNumber
- สตริง:
getString
เช่น หากคุณใช้ Vertex AI ในเซิร์ฟเวอร์ และต้องการเปลี่ยนโมเดลและพารามิเตอร์ของโมเดล คุณอาจต้องกำหนดค่าพารามิเตอร์สำหรับ
model_name
และgeneration_config
ตัวอย่างวิธีเข้าถึงค่าของ 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}`;
- บูลีน:
หากเซิร์ฟเวอร์ทำงานเป็นเวลานาน ซึ่งต่างจากสภาพแวดล้อมแบบไม่มีเซิร์ฟเวอร์ ให้ใช้
setInterval
เพื่อโหลดเทมเพลตซ้ำเป็นระยะๆ เพื่อยืนยันว่าคุณ ดึงเทมเพลตล่าสุดจากเซิร์ฟเวอร์ Remote Config
ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์เฉพาะเซิร์ฟเวอร์ใน Remote Config
จากนั้นสร้างRemote Configเทมเพลตเซิร์ฟเวอร์และกำหนดค่าพารามิเตอร์และค่าที่จะใช้ในแอป
วิธีสร้างRemote ConfigเทมเพลตRemote Configเฉพาะเซิร์ฟเวอร์
- เปิดหน้าพารามิเตอร์คอนโซล Firebase Remote Config แล้วเลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์
- กำหนดRemote Configพารามิเตอร์ที่มีชื่อและประเภทข้อมูลเดียวกันกับ
พารามิเตอร์ที่คุณกำหนดในแอปและระบุค่า ค่าเหล่านี้จะลบล้าง
defaultConfig
ที่คุณตั้งค่าไว้ในกำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์เมื่อคุณดึงและประเมินเทมเพลต รวมถึงกำหนดค่าเหล่านี้ให้กับตัวแปร - คุณเลือกตั้งค่าเงื่อนไขเพื่อใช้ค่ากับตัวอย่างแบบสุ่มของอินสแตนซ์หรือสัญญาณที่กำหนดเองที่คุณกำหนดได้อย่างถาวร ดูข้อมูลเพิ่มเติม เกี่ยวกับเงื่อนไขได้ที่ประเภทกฎเงื่อนไข
- เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง
- ตรวจสอบการเปลี่ยนแปลง แล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง
ขั้นตอนที่ 5: ทำให้ใช้งานได้ด้วย Cloud Functions หรือ Cloud Run
หากแอปพลิเคชันเซิร์ฟเวอร์มีขนาดเล็กและทำงานตามเหตุการณ์ คุณควรพิจารณา การติดตั้งใช้งานโค้ดโดยใช้ Cloud Functions เช่น สมมติว่าคุณมีแอปที่มีบทสนทนาของตัวละครซึ่งขับเคลื่อนโดย API ของ Generative AI (เช่น 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 ใช้งานได้ใน Cloud Run
ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่ดีที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: เมื่อใดควรใช้ อย่างใดอย่างหนึ่ง