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 ตั้งค่าบัญชีบริการ และเพิ่ม SDK Node.js ของผู้ดูแลระบบ Firebase ลงใน เซิร์ฟเวอร์ของคุณ
ขั้นตอนที่ 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
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Use Case ที่ดีที่สุดสำหรับ Cloud Run และ Cloud Functions โปรดดู Cloud Functions เทียบกับ Cloud Run: กรณีที่ควรใช้ หนึ่งในช่วง other