ตอนนี้ Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Node.js SDK เวอร์ชัน 12.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, ตั้งค่าบัญชีบริการ และเพิ่ม 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 จะหยุดชะงักก็ตาม
ตัวอย่างเช่น หากเขียนแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการฟังก์ชัน Generative AI คุณอาจตั้งชื่อโมเดลเริ่มต้น พรอมต์พรีแอมเบิล และการกำหนดค่า Generative AI ดังตัวอย่างต่อไปนี้
ชื่อพารามิเตอร์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น |
---|---|---|---|
model_name |
ชื่อ Model 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 (ไม่บังคับ) ให้กําหนดและระบุค่าที่ต้องการ ดังนี้
- หากใช้เงื่อนไขแบบเปอร์เซ็นต์ ให้เพิ่ม
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
และ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 ใช้งานได้ใน Cloud Run
ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่เหมาะสมที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: กรณีใดควรใช้แพลตฟอร์มใด