ตอนนี้ Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Node.js SDK เวอร์ชัน 12.1.0 ขึ้นไป ความสามารถใหม่นี้ช่วยให้คุณจัดการลักษณะการทำงานและการกำหนดค่าแอปพลิเคชันฝั่งเซิร์ฟเวอร์แบบไดนามิกได้โดยใช้ Remote Config ซึ่งรวมถึงการใช้งานแบบเซิร์ฟเวอร์เสมือน เช่น 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 และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม 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();
(ไม่บังคับ) ถ้าคุณตั้งค่า สภาพสินค้า ในเทมเพลต Remote Config ให้ระบุและระบุ ค่าที่คุณต้องการ:
- หากใช้ เปอร์เซ็นต์
ของ Google
เพิ่ม
randomizationId
ที่ต้องการใช้เพื่อประเมิน ภายในฟังก์ชันtemplate.evaluate()
- หากใช้ custom สัญญาณ กำหนดแอตทริบิวต์และค่าของแอตทริบิวต์ สัญญาณที่กำหนดเองใช้ได้กับ 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" });
- หากใช้ เปอร์เซ็นต์
ของ Google
เพิ่ม
จากนั้นดึงค่าพารามิเตอร์ที่ต้องการจากค่าคงที่การกําหนดค่า ใช้
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}`;
- บูลีน:
หากเซิร์ฟเวอร์ทำงานอยู่เป็นเวลานาน ซึ่งต่างจากสภาพแวดล้อมแบบเซิร์ฟเวอร์เสมือน ให้ใช้
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: กรณีใดควรใช้แพลตฟอร์มใด