עדכון דינמי של Vertex AI באפליקציה ב-Firebase באמצעות הגדרת תצורה מרחוק ב-Firebase

כשקוראים ל-Gemini API מהאפליקציה באמצעות SDK של Vertex AI in Firebase, הבקשה מכילה מספר פרמטרים ששולטים בתשובות של ה-AI הגנרטיבי. בדרך כלל, הם כוללים את שם המודל, הגדרות היצירה של המודל (אסימונים מקסימליים, טמפרטורה וכו'), הגדרות הבטיחות, הוראות המערכת ונתוני ההנחיה.

ברוב המקרים, כדאי לשנות את ההגדרות האלה על פי דרישה או לפי הצורך במספר תרחישים:

  • אפשר לעדכן את המודל של ה-AI הגנרטיבי בלי לפרסם אפליקציה חדשה. תוכלו לשדרג לגרסאות חדשות ויציבות יותר של המודל לפני שגרסאות קודמות יצאו משימוש, שיוחרגו למודלים של ביצועים זולים או גבוהים יותר על סמך הצרכים והמאפיינים של המשתמשים, או לפרוס באופן מותנה את המודלים העדכניים והטובים ביותר לפלחי משתמשים ספציפיים (כמו בודקי גרסאות בטא).
  • מגדירים את המיקום שממנו ניגשים למודל כך שיהיה קרוב יותר למשתמשים.
  • כדאי לערוך בדיקות A/B של הוראות והנחיות שונות למערכת, ולאחר מכן להשיק בהדרגה את הערכים הזוכים מהניסוי למשתמשים.
  • אפשר להשתמש בדגלים של פיצ'רים כדי לחשוף או להסתיר במהירות תכונות של AI גנרטיבי באפליקציה.

Firebase Remote Config עושה את כל זה ועוד, וכך מאפשר לעדכן את ערכי הפרמטרים לפי הצורך ומותנה במופעים של האפליקציה שתואמים למאפיינים שהגדרתם במסוף Firebase, בלי לפרסם גרסה חדשה של האפליקציה.

במדריך הפתרון הזה מפורטים תרחישי שימוש מומלצים ספציפיים, ומוסבר איך להוסיף את Remote Config לאפליקציה שלכם ל-AI גנרטיבי.

מעבר להטמעת הקוד

למה כדאי להשתמש ב-Firebase Remote Config באפליקציה?

Firebase Remote Config מאפשרת לשנות באופן דינמי את התנהגות האפליקציה בלי צורך בעדכוני אפליקציה. האפשרות הזו שימושית במיוחד באפליקציות שמשתמשות בבינה מלאכותית גנרטיבית, שבהן יש חשיבות קריטית לאיטרציה ולכוונון מהירים.

תרחישים לדוגמה לשימוש ב-Remote Config עם אפליקציות של AI גנרטיבי

מומלץ להשתמש ב-Remote Config עם Vertex AI in Firebase בתרחישי השימוש הבאים:

  • שדרוג לגרסה האחרונה של המודל בלי עדכון האפליקציה: משתמשים בפרמטרים Remote Config כדי לשנות את שם המודל לפי הצורך, וכך אפשר לשדרג לגרסה האחרונה של מודל Gemini המועדף ברגע שהיא זמינה.
  • עדכון של הוראות המערכת והגדרות הבטיחות בלי עדכון האפליקציה: אחסון הוראות המערכת והגדרות הבטיחות בפרמטרים של Remote Config כדי להבטיח שאפשר יהיה לשנות אותן על פי דרישה אם מגלים בעיות אחרי הפריסה.
  • צמצום הסיכונים ואכיפת הבטיחות של AI: אתם יכולים להשתמש בRemote Configהשקות כדי להשיק שינויים ב-AI הגנרטיבי למשתמשים ב-iOS וב-Android בצורה בטוחה ובהדרגה.

תרחישים מתקדמים ומומלצים לשימוש ב-Remote Config עם אפליקציות של AI גנרטיבי

אחרי שמטמיעים את האפליקציה באמצעות Remote Config ו-Google Analytics, אפשר לבדוק תרחישים מתקדמים לדוגמה:

  • הגדרת מיקום על סמך מיקום הלקוח: משתמשים בתנאים Remote Config כדי להגדיר את המיקום של המודל על סמך המיקום שזוהה של הלקוח.
  • התנסות במודלים שונים: אפשר לבדוק במהירות ולעבור בין מודלים שונים של AI גנרטיבי, או אפילו לפרוס מודלים שונים בפלחים שונים של משתמשים, כדי למצוא את המודל שמתאים ביותר לתרחיש לדוגמה הספציפי שלכם.
  • אופטימיזציה של ביצועי המודל: שינוי מדויק של הפרמטרים של המודל, כמו הנחיה למערכת, אסימוני פלט מקסימליים, טמפרטורה והגדרות אחרות.
  • שימוש בהוראות, בהנחיות ובהגדרות מודל שונות של המערכת על סמך מאפייני לקוח: כשמשתמשים ב-Remote Config עם Google Analytics, אפשר ליצור תנאים על סמך מאפייני לקוח או קהלים מותאמים אישית ולהגדיר פרמטרים שונים על סמך המאפיינים האלה.

    לדוגמה, אם אתם משתמשים ב-AI גנרטיבי כדי לספק תמיכה טכנית באפליקציה, כדאי להגדיר הוראות מערכת ספציפיות לפלטפורמת האפליקציה כדי לוודא שההוראות יהיו מדויקות למשתמשים ב-Android, ב-iOS ובפלטפורמת האינטרנט.

  • התאמה אישית של חוויות לכל משתמש: אתם יכולים להשתמש בהתאמה אישית של Remote Config כדי לקבוע באופן אוטומטי את ההגדרות האופטימליות של ה-AI הגנרטיבי לכל משתמש.

  • שליטה בעלויות: אפשר לקבוע מרחוק את המודלים של ה-AI הגנרטיבי שנקראים ואת תדירות השימוש בהם, ולהגדיר באופן דינמי את הערכים המקסימליים של אסימוני הפלט בהתאם לקהל המשתמשים, כדי לצמצם עלויות מיותרות.

  • אופטימיזציה של חוויית השימוש באפליקציה והתוצאות: אפשר להשתמש ב-A/B Testing עם Remote Config באפליקציות ל-iOS, ל-Android ול-Flutter כדי לבדוק שינויים בפרמטרים של AI גנרטיבי בפלחים שונים של משתמשים, ולראות איך הם משפיעים על מדדים מרכזיים כמו שימור משתמשים והכנסות.

הוספת Firebase Remote Config לאפליקציה של ה-AI הגנרטיבי תאפשר לכם ליצור אפליקציות מבוססות-AI גמישות, בטוחות וחסכוניות ובמקביל ליצור חוויות מהנות למשתמשים.

הוספת Firebase Remote Config לאפליקציה

במדריך הפתרון הזה תלמדו איך להשתמש ב-Firebase Remote Config כדי לעדכן באופן דינמי פרמטרים באפליקציית Android שמשתמשת ב-SDK של Vertex AI in Firebase. תלמדו איך:

  • אחזור והפעלה של פרמטרים כמו שמות מודלים והוראות מערכת מ-Firebase Remote Config.
  • אפשר לעדכן את הקריאות ל-Gemini API כך שישתמשו בפרמטרים שמאוחזרים באופן דינמי, וכך לעבור בין מודלים שונים או לשנות את הוראות המערכת בלי עדכון האפליקציה.
  • לשלוט בפרמטרים מרחוק, ולשנות את ההתנהגות והיכולות של המודל לפי הצורך.

דרישות מוקדמות

במדריך הזה אנחנו יוצאים מנקודת הנחה שאתם מכירים את השימוש ב-JavaScript לפיתוח אפליקציות אינטרנט. המדריך הזה לא תלוי בסביבה. לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מסיימים את המדריך לתחילת העבודה עם ה-SDK של Vertex AI in Firebase. חשוב לוודא שכל הפעולות הבאות בוצעו:

    1. מגדירים פרויקט Firebase חדש או קיים, כולל שימוש בתוכנית התמחור Blaze והפעלת ממשקי ה-API הנדרשים.
    2. מחברים את האפליקציה ל-Firebase, כולל רישום האפליקציה והוספת ההגדרה של Firebase לאפליקציה.
    3. מוסיפים את ה-SDK ומפעילים את שירות Vertex AI ואת המודל הגנרטיבי באפליקציה.
  • מפעילים את Google Analytics בפרויקט ומוסיפים את ה-SDK שלו לאפליקציה (נדרש לטירגוט מותנה, כמו הגדרת המיקום של השירות והמודל על סמך המיקום של מכשיר הלקוח).

שלב 1: מגדירים את ערכי הפרמטרים במסוף Firebase

יוצרים תבנית Remote Config של לקוח ומגדירים פרמטרים וערכים לאחזור ולשימוש באפליקציה.

  1. פותחים את המסוף של Firebase, ובתפריט הניווט מרחיבים את Run ובוחרים באפשרות Remote Config.
  2. מוודאים שהאפשרות Client מסומנת בבורר Client/Server בחלק העליון של הדף Remote Config.
    • אם זו הפעם הראשונה שאתם משתמשים בתבניות לקוח של Remote Config, לוחצים על Create Configuration. החלונית Create your first parameter מופיעה.
    • אם זאת לא הפעם הראשונה שאתם משתמשים בתבניות של Remote Config, לוחצים על Add parameter (הוספת פרמטר).
  3. מגדירים את הפרמטרים הבאים של Remote Config:

    שם הפרמטר תיאור סוג ערך ברירת המחדל
    model_name שם הדגם. רשימות עדכניות של שמות מודלים לשימוש בקוד מפורטות במאמר שמות מודלים זמינים. String gemini-1.5-flash
    system_instructions הוראות המערכת הן מעין 'הקדמה' שמוסיפים לפני שהמודל נחשף להוראות נוספות של משתמש הקצה כדי להשפיע על התנהגות המודל, על סמך צרכים ספציפיים ותרחישים לדוגמה. String You are a helpful assistant who knows everything there is to know about Firebase!
    prompt הנחיה שמוגדרת כברירת מחדל לשימוש עם התכונה של ה-AI הגנרטיבי. String I am a developer who wants to know more about Firebase!
    vertex_location אפשר גם לקבוע את המיקום כדי להפעיל את השירות Vertex AI ולגשת למודל. אפשר להגדיר תנאים להגדרת האפשרות הזו על סמך מיקום הלקוח שזוהה על ידי Google Analytics. String us-central1
  4. כשמסיימים להוסיף פרמטרים, לוחצים על פרסום השינויים. אם זו לא תבנית Remote Config חדשה, בודקים את השינויים ולוחצים שוב על פרסום השינויים.

שלב 2: הוספה של Remote Config SDK ואיפוס שלו

מוסיפים את ה-SDK של Remote Config ומאתחלים אותו:

  1. פותחים את הקוד בכלי לעריכת טקסט ומטמיעים את Remote Config:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. בפונקציה הראשית, אחרי שמאתחלים את אפליקציית Firebase ל-Vertex AI in Firebase SDK, מאתחלים את Remote Config:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. מגדירים מרווח זמן אחזור מינימלי. בדוגמה הזו, מרווח האחזור שמוגדר כברירת מחדל הוא 3,600 שניות, אבל מומלץ להגדיר מרווח אחזור מינימלי נמוך יחסית בקוד במהלך הפיתוח.

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

שלב 3: הגדרת ערכי פרמטרים באפליקציה

צריך להגדיר ערכי ברירת מחדל של פרמטרים באפליקציה באובייקט Remote Config, כדי שהאפליקציה תהיה פונקציונלית לפני שהיא מתחברת לקצה העורפי של Remote Config, אם הגישה של הלקוח לרשת מופסקת ו/או אם לא מוגדרים ערכים בקצה העורפי.

בדוגמה הזו מגדירים באופן ידני ערכי ברירת מחדל עבור שם המודל, הוראות המערכת, ההנחיה למשתמש והמיקום של Vertex AI:

// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
  model_name: 'gemini-1.5-flash',
  system_instructions:
    'You are a helpful assistant who knows everything there is to know about Firebase!',
  prompt: 'I am a developer who wants to know more about Firebase!',
  vertex_location: 'us-central1',
};

שלב 4: אחזור והפעלה של ערכים

  1. מוסיפים את getValue ו-fetchAndActivate לייבוא:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. אחרי הקוד שהוספתם להגדרת ערכי ברירת המחדל של Remote Config, מאחזרים את ההגדרות ומפעילים אותן, ואז מקצים ערכים למשתנים הקבועים modelName,‏ systemInstructions,‏ prompt ו-vertexLocation.

    // Fetch and activate Remote Config.
    try {
      await fetchAndActivate(remoteConfig);
    } catch(err) {
      console.error('Remote Config fetch failed', err);
    }
    
    console.log('Remote Config fetched.');
    
    // Assign Remote Config values.
    const modelName = getValue(remoteConfig, 'model_name').asString();
    const systemInstructions = getValue(remoteConfig, 'system_instructions').asString();
    const prompt = getValue(remoteConfig, 'prompt').asString();
    const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
    

שלב 5: מעדכנים את הקריאות ל-Vertex AI כך שישתמשו בערכי Remote Config

עכשיו, אחרי שהגדרתם את Remote Config באופן מלא, עליכם לעדכן את הקוד כדי להחליף ערכים שמוגדרים באופן קבוע בערכים שמקורם ב-Remote Config. לדוגמה, אם השתמשתם בדוגמה שמופיעה במאמר תחילת השימוש ב-Gemini API באמצעות Vertex AI ב-Firebase SDKs, עליכם לעדכן אותה באופן הבא:

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
const vertexAI = getVertexAI(firebaseApp, { location: vertexLocation });

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
const model = getGenerativeModel(vertexAI, {
  model: modelName,
  systemInstruction: systemInstruction
});

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const userPrompt = prompt;

  // To generate text output, call generateContent with the text input
  const result = await model.generateContent(userPrompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

שלב 6: מריצים את האפליקציה

מפעילים את האפליקציה ומוודאים שהיא פועלת. מבצעים שינויים בהגדרות מהדף Remote Config במסוף Firebase, מפרסמים את השינויים ומאמתים את התוצאה.

השלבים הבאים