Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Node.js SDK เวอร์ชัน 12.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: เริ่มต้นใช้งาน Firebase Admin Node.js SDK และให้สิทธิ์คำขอ API
เมื่อคุณเริ่มต้น Admin SDK โดยไม่มีพารามิเตอร์ SDK จะใช้ Google Application Default Credentials และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม 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หรือgetServerTemplateconst 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 ขึ้นไป
ตัวอย่างเช่น คุณอาจกำหนดID การติดตั้งของ Firebase เป็น
randomizationIdหรือ 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
หากคุณกำลังสร้างเว็บแอปที่แสดงผลฝั่งเซิร์ฟเวอร์ App Hosting รองรับเฟรมเวิร์กเว็บยอดนิยม
หรือคุณอาจพิจารณาใช้ Cloud Run หากต้องการทําให้แอปเซิร์ฟเวอร์ใช้งานได้ด้วย Cloud Run โปรดทําตามคําแนะนําในการเริ่มต้นอย่างรวดเร็ว: ทําให้บริการ Node.js ใช้งานได้ใน Cloud Run
ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่ดีที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: เมื่อใดควรใช้ อย่างใดอย่างหนึ่ง