Firebase Remote Config תומך עכשיו בהגדרה בצד השרת באמצעות Firebase Admin Node.js SDK בגרסה 12.1.0 ואילך. היכולת החדשה הזו מאפשרת לכם לנהל באופן דינמי את ההתנהגות וההגדרה של אפליקציות בצד השרת באמצעות Remote Config. הדבר כולל הטמעות ללא שרת, כמו Cloud Functions.
בניגוד לערכות SDK של לקוחות Firebase, שמאחזרות הגדרות ספציפיות ללקוח נגזר מהתבנית Remote Config, בצד השרת ערכת ה-SDK של Remote Config מורידה תבנית מלאה של 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: מאתחלים את ה-SDK של Firebase Admin עבור Node.js ומעניקים הרשאה לבקשות API
כשמאתחלים את Admin SDK ללא פרמטרים, ה-SDK משתמש ב-Google Application Default Credentials וקורא אפשרויות משתנה הסביבה 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.
לדוגמה, אם אתם כותבים אפליקציית שרת שמנהלת אפשר להגדיר שם למודל שמוגדר כברירת מחדל, הנחיה פרומפט, קידומת והגדרות אישיות של בינה מלאכותית גנרטיבית, כמו:
שם הפרמטר | תיאור | סוג | ערך ברירת המחדל |
---|---|---|---|
model_name |
שם ה-API של המודל | String | gemini-1.5-pro |
preamble_prompt
|
הנחיה להוספת תו לפני השאילתה של המשתמש | String | 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}`;
- ערך בוליאני:
אם השרת שלכם פועל לאורך זמן, בניגוד לסביבה ללא שרת, תוכלו להשתמש ב-
setInterval
כדי לטעון מחדש את התבנית מדי פעם, כדי לוודא שאתם מאחזרים מדי פעם את התבנית העדכנית ביותר מהשרת Remote Config.
שלב 4: מגדירים ערכים של פרמטרים ספציפיים לשרת ב-Remote Config
בשלב הבא יוצרים תבנית של שרת Remote Config ומגדירים פרמטרים שכדאי להשתמש בהם באפליקציה.
כדי ליצור תבנית Remote Config ספציפית לשרת:
- פותחים את הפרמטרים Remote Config במסוף Firebase ומדף הבורר לקוח/שרת, בוחרים באפשרות שרת.
- מגדירים פרמטרים מסוג Remote Config עם אותם שמות וסוגים של נתונים כמו הפרמטרים שהגדרתם באפליקציה, ומספקים ערכים. האלה
הערכים יבטלו את
defaultConfig
שהגדרת בהגדרת לשרת כשמאחזרים ומעריכים את ומקצים את הערכים האלה למשתנים. - אפשר גם להגדיר תנאים להחלה קבועה של ערכים על דגימה אקראית של מכונות או אותות מותאמים אישית שתגדירו. אפשר לקבל מידע נוסף מידע נוסף על תנאים, זמין במאמר כלל תנאי .
- כשמסיימים להוסיף פרמטרים, לוחצים על פרסום השינויים.
- בודקים את השינויים ולוחצים שוב על פרסום השינויים.
שלב 5: פריסה באמצעות Cloud Functions או Cloud Run
אם אפליקציית השרת שלכם קלה ומופעלת על סמך אירועים, כדאי לפרוס את הקוד באמצעות Cloud Functions. לדוגמה, נניח שיש לכם אפליקציה שכוללת דיאלוג בין דמויות שמבוסס על ממשק API של AI גנרטיבי (למשל, Google AI או Vertex AI). במקרה כזה, תוכלו לארח את הלוגיקה של הצגת ה-LLM בפונקציה שהאפליקציה קוראת לה על פי דרישה.
כדי לעבוד עם פתרון שמשתמש ב-Cloud Functions מדור שני עם 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 Functions, ראו Cloud Functions לעומת Cloud Run: מתי להשתמש? אחת מעל אחר.