עכשיו יש ב-Firebase Remote Config תמיכה בהגדרה בצד השרת באמצעות SDK של Node.js SDK ב-Firebase גרסה 12.1.0 ואילך. היכולת החדשה הזו מעצימה לך לנהל באופן דינמי את ההתנהגות והתצורה של צד השרת אפליקציות שמשתמשות ב-Remote Config. זה כולל הטמעות ללא שרת (serverless) כמו 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
ברירת המחדל של האפליקציה
פרטי כניסה
וקורא אפשרויות מהסביבה 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 מזהה
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 ספציפית לשרת:
- פותחים את הפרמטרים Remote Config במסוף Firebase ומדף הבורר לקוח/שרת, בוחרים באפשרות שרת.
- הגדרת פרמטרים של Remote Config עם אותם שמות וסוגי נתונים כמו
אילו פרמטרים הגדרתם באפליקציה שלכם ומספקים ערכים. האלה
הערכים יבטלו את
defaultConfig
שהגדרת בהגדרת לשרת כשמאחזרים ומעריכים את ומקצים את הערכים האלה למשתנים. - אפשר להגדיר תנאים לאחוזים כדי להחיל ערך באופן עקבי על מדגם אקראי של מופעים. מידע נוסף על אחוזים לתנאים ולהגבלות האלה, אפשר לעיין במאמר משתמש אקראי אחוזים.
- כשמסיימים להוסיף פרמטרים, לוחצים על פרסום השינויים.
- בודקים את השינויים ולוחצים שוב על פרסום השינויים.
שלב 5: פריסה באמצעות Cloud Functions או Cloud Run
אם אפליקציית השרת שלכם קלה ומבוססת-אירועים, עליכם לשקול בפריסה של הקוד Cloud Functions לדוגמה, נניח שיש לכם אפליקציה שכוללת דיאלוג בין דמויות שמבוסס על בינה מלאכותית גנרטיבית API (לדוגמה, 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 Run Cloud Functions, ראו Cloud Functions לעומת Cloud Run: מתי להשתמש? אחת מעל אחר.