עדכון דינמי של 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 מאפשרת לשנות באופן דינמי את התנהגות האפליקציה בלי צורך בעדכוני אפליקציה. האפשרות הזו שימושית במיוחד לאפליקציות שמשתמשות ב-AI גנרטיבי, שבהן חשוב מאוד לבצע חזרות מהירות ולשפר את התוצאות.

תרחישים לדוגמה לשימוש ב-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, מפרסמים את השינויים ומאמתים את התוצאה.

השלבים הבאים