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: เริ่มต้น Firebase Admin Node.js SDK และให้สิทธิ์คำขอ 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 เซิร์ฟเวอร์แบ็กเอนด์จะถูกขัดจังหวะก็ตาม
ตัวอย่างเช่น หากคุณกำลังเขียนแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการฟังก์ชัน 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 ขึ้นไป
เช่น คุณอาจตั้งค่ารหัสการติดตั้ง Firebase เป็น
randomizationIdหรือรหัสผู้ใช้ เพื่อให้มั่นใจว่าระบบจะเพิ่มผู้ใช้แต่ละรายที่ติดต่อเซิร์ฟเวอร์ของคุณไปยังกลุ่มแบบสุ่มที่เหมาะสม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}`;- บูลีน:
หากเซิร์ฟเวอร์ทำงานเป็นเวลานาน ซึ่งต่างจากสภาพแวดล้อมแบบ Serverless ให้ใช้
setIntervalเพื่อโหลดเทมเพลตซ้ำเป็นระยะๆ เพื่อยืนยันว่าคุณ ดึงเทมเพลตล่าสุดจากเซิร์ฟเวอร์ Remote Config
ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์เฉพาะเซิร์ฟเวอร์ใน Remote Config
จากนั้นสร้างRemote Configเทมเพลตเซิร์ฟเวอร์และกำหนดค่าพารามิเตอร์และ ค่าที่จะใช้ในแอป
วิธีสร้างเทมเพลต Remote Config เฉพาะเซิร์ฟเวอร์มีดังนี้
ในคอนโซล Firebase ให้ไปที่หน้า DevOps และความผูกพัน > การกำหนดค่าระยะไกล > พารามิเตอร์
จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า ให้เลือก เซิร์ฟเวอร์
กำหนด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: เมื่อใดควรใช้ อย่างใดอย่างหนึ่ง