Firebase Remote Config รองรับการกำหนดค่าฝั่งเซิร์ฟเวอร์โดยใช้ Firebase Admin Python SDK v6.7.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, ตั้งค่าบัญชีบริการ และเพิ่ม Firebase Python SDK ลงในเซิร์ฟเวอร์
ขั้นตอนที่ 1: เริ่มต้น Firebase Admin Python SDK และอนุญาตคําขอ API
เมื่อคุณเริ่มต้นใช้งาน Admin SDK โดยไม่มีพารามิเตอร์ SDK จะใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน Google และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS
วิธีเริ่มต้น SDK และเพิ่ม Remote Config
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
ขั้นตอนที่ 2: ระบุค่าพารามิเตอร์เริ่มต้นสําหรับแอปพลิเคชันเซิร์ฟเวอร์
ระบุตัวแปรในแอปที่ต้องการอัปเดตแบบไดนามิกด้วย Remote Config จากนั้นพิจารณาว่าต้องตั้งค่าตัวแปรใดเป็นค่าเริ่มต้นในแอปพลิเคชันของคุณ และค่าเริ่มต้นของตัวแปรเหล่านั้นควรเป็นอย่างไร วิธีนี้ช่วยให้มั่นใจได้ว่าแอปพลิเคชันจะทํางานได้สําเร็จแม้ว่าการเชื่อมต่อกับRemote Configเซิร์ฟเวอร์แบ็กเอนด์จะหยุดชะงัก
เช่น หากคุณเขียนแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการฟังก์ชัน Generative AI คุณอาจตั้งชื่อโมเดลเริ่มต้น พรอมต์นำหน้า และการกําหนดค่า Generative AI ดังนี้
ชื่อพารามิเตอร์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น |
---|---|---|---|
model_name |
ชื่อ Model 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 สําหรับเซิร์ฟเวอร์ที่เฉพาะเจาะจง และใช้ค่าของเทมเพลต ขั้นตอนต่อไปนี้จะอธิบายวิธีกำหนดค่าแอปพลิเคชัน Python
เข้าถึงและโหลดเทมเพลต
from firebase_admin import remote_config # Initialize server-side Remote Config template = remote_config.init_server_template() # Load the template from the backend asyncio.run(template.load())
หากใช้ Python กับ Cloud Functions คุณจะใช้
get_server_template
แบบอะซิงโครนัสเพื่อดึงข้อมูลและโหลดเทมเพลตในขั้นตอนเดียวได้ ดังนี้# Initialize server-side Remote Config template = remote_config.get_server_template()
โปรดเพิ่มค่าเริ่มต้นสำหรับพารามิเตอร์แต่ละรายการลงในแอปเพื่อให้แอปพลิเคชันทำงานได้สําเร็จแม้ว่าการเชื่อมต่อกับRemote Configเซิร์ฟเวอร์แบ็กเอนด์จะหยุดชะงักก็ตาม โดยให้เพิ่ม
defaultConfig
ไว้ในฟังก์ชันเทมเพลตinit_server_template
หรือget_server_template
ดังนี้template = remote_config.init_server_template({ 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 asyncio.run(template.load())
อีกวิธีในการเริ่มต้นเทมเพลตคือการใช้ฟังก์ชัน
get_server_template
เพื่อเรียกข้อมูลเทมเพลตเซิร์ฟเวอร์ที่ต้องการ คุณแปลงเทมเพลตนี้เป็นรูปแบบ JSON ได้โดยใช้ฟังก์ชันtemplate.to_json
เทมเพลต JSON นี้จัดเก็บไว้ในเครื่องได้ จากนั้นคุณสามารถเริ่มต้นเทมเพลต JSON นี้โดยใช้ฟังก์ชันinit_server_template
หลังจากโหลดเทมเพลตแล้ว ให้ใช้
template.evaluate()
เพื่อนําเข้าพารามิเตอร์และค่าจากเทมเพลต ดังนี้# Add template parameters to config config = template.evaluate()
หากตั้งค่าเงื่อนไขในเทมเพลต Remote Config (ไม่บังคับ) ให้กําหนดและระบุค่าที่ต้องการ ดังนี้
- หากใช้เงื่อนไขแบบเปอร์เซ็นต์ ให้เพิ่ม
randomizationId
ที่ต้องการใช้ประเมินเงื่อนไขภายในฟังก์ชันtemplate.evaluate()
- หากใช้สัญญาณที่กำหนดเอง ให้กําหนดแอตทริบิวต์และค่าของแอตทริบิวต์ สัญญาณที่กําหนดเองพร้อมใช้งานใน Firebase Admin Python SDK v6.7.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. config = template.evaluate({ 'randomizationId': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })
- หากใช้เงื่อนไขแบบเปอร์เซ็นต์ ให้เพิ่ม
จากนั้นดึงค่าพารามิเตอร์ที่ต้องการจากค่าคงที่การกําหนดค่า ใช้
getters
เพื่อแคสต์ค่าจาก Remote Config ให้เป็นรูปแบบที่คาดไว้ ระบบรองรับประเภทต่อไปนี้- บูลีน:
get_bool
- ออบเจ็กต์:
get_value
- หมายเลข:
get_number
- สตริง:
get_string
ตัวอย่างเช่น หากคุณติดตั้งใช้งาน Vertex AI ในเซิร์ฟเวอร์และต้องการเปลี่ยนแปลงโมเดลและพารามิเตอร์ของโมเดล คุณอาจต้องกำหนดค่าพารามิเตอร์สำหรับ
model_name
และgeneration_config
ตัวอย่างวิธีเข้าถึงค่าของ Remote Config มีดังนี้# Replace defaults with values from Remote Config. generation_config = json.loads(config.get_string('generation_config')) is_ai_enabled = config.get_bool('is_ai_enabled') model = config.get_string('model_name') # Generates a prompt comprised of the Remote Config # parameter and prepends it to the user prompt. prompt = f"{config.get_string('preamble_prompt')}{req.args.get('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 ได้ที่เริ่มต้นใช้งาน: เขียน ทดสอบ และทำให้ฟังก์ชันแรกใช้งานได้
หากแอปพลิเคชันของคุณมีไว้เพื่อใช้งานในระยะยาว (เช่น เว็บแอปที่มีชิ้นงาน) คุณอาจพิจารณาใช้ Cloud Run หากต้องการทำให้แอปเซิร์ฟเวอร์ใช้งานได้ด้วย Cloud Run ให้ทำตามคำแนะนำในหัวข้อเริ่มต้นใช้งานอย่างรวดเร็ว: ทำให้บริการ Python ใช้งานได้ใน Cloud Run
ดูข้อมูลเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่เหมาะสมที่สุดสำหรับ Cloud Run และ Cloud Functions ได้ที่ Cloud Functions กับ Cloud Run: กรณีใดควรใช้แพลตฟอร์มใด