יצירת חוויות היברידיות באפליקציות של אפל באמצעות מודלים במכשיר ובאירוח בענן

אתם יכולים ליצור תכונות ואפליקציות מבוססות-AI ל-Apple עם היסק היברידי באמצעות Firebase AI Logic. הסקת מסקנות היברידית מאפשרת להריץ הסקת מסקנות באמצעות מודלים במכשיר (במיוחד מסגרת Foundation Models של אפל) כשהם זמינים, ולעבור בצורה חלקה למודלים של Google שמתארחים בענן אם הם לא זמינים (ולהיפך).

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

שימו לב: יש תמיכה בהסקת מסקנות במכשיר באמצעות Firebase AI Logic באפליקציות של אפל שמשתמשות ב-Firebase AI Logic SDK בגרסה 12.13.0 ומעלה ופועלות במכשירים שמופעלת בהם Apple Intelligence. השימוש בהם כפוף לדרישות השימוש המקובל ב-Apple's Foundation Models framework.

תרחישים מומלצים לדוגמה

  • השימוש במודל במכשיר להסקת מסקנות מאפשר:

    • פרטיות משופרת
    • הסקת מסקנות ללא עלות
    • פונקציונליות אופליין
  • שימוש בפונקציונליות של מוצרים משולבים:

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

יכולות, ממשקי API ומכשירים נתמכים

לפני שמטמיעים היסק היברידי והיסק במכשיר באמצעות Firebase AI Logic, כדאי לעיין בקטע הזה כדי להבין מה נתמך באפליקציות של אפל.

יכולות ותכונות נתמכות להסקת מסקנות במכשיר

הסקת מסקנות במכשיר תומכת רק ביצירת טקסט, ובאופן ספציפי ביכולות הבאות של יצירת טקסט:

בסוף הדף הזה מופיעה רשימה מפורטת של הסקת מסקנות היברידית או במכשיר שעדיין לא נתמכות.

ממשקי API ומכשירים נתמכים

שנתחיל?

חשוב לעיין בקטע שלמעלה שמתאר את היכולות, ממשקי ה-API והמכשירים הנתמכים.

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

שלב 1: הגדרת פרויקט Firebase וקישור האפליקציה ל-Firebase

  1. נכנסים אל Firebase המסוף ובוחרים את הפרויקט ב-Firebase.

  2. במסוף Firebase, נכנסים אל AI Services (שירותי AI) >‏ AI Logic (לוגיקת AI).

  3. לוחצים על Get started (תחילת העבודה) כדי להפעיל תהליך עבודה מודרך שיעזור לכם להגדיר את ממשקי ה-API והמשאבים הנדרשים לפרויקט.

  4. מגדירים את הפרויקט לשימוש בספק Gemini API.

    מומלץ להתחיל להשתמש בGemini Developer API. בכל שלב, תמיד אפשר להגדיר את Vertex AI Gemini API (ואת הדרישה שלו לחיוב).

    במקרה של Gemini Developer API, במסוף יופעלו ממשקי ה-API הנדרשים וייווצר מפתח API ‏Gemini בפרויקט.
    אין להוסיף את Gemini מפתח ה-API הזה לבסיס הקוד של האפליקציה. מידע נוסף

  5. אם מופיעה בקשה בתהליך העבודה של המסוף, פועלים לפי ההוראות במסך כדי לרשום את האפליקציה ולקשר אותה ל-Firebase.

  6. כדי להוסיף את ה-SDK לאפליקציה, ממשיכים לשלב הבא במדריך הזה.

שלב 2: מוסיפים את ה-SDK הנדרש

משתמשים ב-Swift Package Manager ‏ (SPM) כדי להתקין ולנהל יחסי תלות ב-Xcode. תמיכה בהיברידי זמינה רק כשמשתמשים ב-SPM.

הספרייה Firebase AI Logic מספקת גישה לממשקי ה-API לאינטראקציה עם מודלים גנרטיביים. הספרייה כלולה כחלק מ-Firebase SDK לפלטפורמות של אפל (firebase-ios-sdk).

אם אתם כבר משתמשים ב-Firebase, אתם צריכים לוודא שחבילת Firebase שלכם היא גרסה 12.13.0 ואילך.

  1. ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File > Add Package Dependencies (קובץ > הוספת תלות בחבילה).

  2. כשמוצגת בקשה, מוסיפים את מאגר Firebase Apple platforms SDK:

    https://github.com/firebase/firebase-ios-sdk
    
  3. בוחרים את גרסת ה-SDK העדכנית ביותר.

  4. בוחרים בספרייה FirebaseAILogic.

אחרי שתסיימו, פלטפורמת Xcode תתחיל באופן אוטומטי לטפל ביחסי התלות ולהוריד אותם ברקע.

שלב 3: הפעלת השירות ויצירת מופע של סשן מודל

לוחצים על הספק Gemini API כדי לראות בדף הזה תוכן וקוד שספציפיים לספק.

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

  1. מאתחלים את השירות עבור ספק Gemini API שבחרתם.

  2. יצירת מכונת GenerativeModelSession עם HybridModel.

  3. מגדירים את המודלים primary ו-secondary על סמך ההעדפות שלכם. אפשר להגדיר את סדר הניסיונות להסקת מסקנות:

    • לנסות קודם הסקת מסקנות במכשיר, אבל לאפשר חזרה לענן: מגדירים את primary למודל 'מערכת' ואת secondary למודל ענן.

    • ניסיון להסיק מסקנות בענן קודם, אבל מאפשר מעבר חזרה למסקנות במכשיר: מגדירים את primary למודל בענן ואת secondary למודל 'מערכת'.

    חשוב לשים לב ש-SDK תומך בהגדרה של רק model אחת, כלומר SDK ינסה להסיק מסקנות רק במכשיר או בענן. עם זאת, כדי ליצור חוויה היברידית, צריך ליצור HybridModel ולהגדיר גם את מודל primary וגם את מודל secondary.

    מידע נוסף על ההתנהגות של 'מצבי הסקה' (הסדר של ניסיונות ההסקה) זמין באפשרויות ההגדרה.

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

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Initialize a cloud model that supports your use case
let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
// Initialize an on-device model that supports your use case
let systemModel = FirebaseAI.SystemLanguageModel.default

// Create a Hybrid Model
// Provide your preferred model as `primary` and your fallback model as `secondary`
// In this example, attempt to use on-device model; otherwise, fall back to cloud.
let hybridModel = HybridModel(
  primary: systemModel,
  secondary: cloudModel
)

// Create a GenerativeModelSession with the HybridModel created earlier.
let session = firebaseAI.generativeModelSession(
  model: hybridModel,
)

שלב 4: שליחת בקשת הנחיה למודל

בקטע הזה מוסבר איך לבצע את הפעולות הבאות:

יצירת טקסט מקלט טקסט בלבד

לפני שמנסים את הדוגמה הזו, חשוב לוודא שסיימתם את הקטע תחילת העבודה במדריך הזה.

כדי ליצור טקסט מהנחיה שמכילה טקסט, משתמשים ב-respond(to:) באופן הבא:

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To generate text output, call `respond(to:)` with the text input
let response = try await session.respond(to: prompt)
print(response.content)

הזרמת טקסט מקלט טקסט בלבד

לפני שמנסים את הדוגמה הזו, חשוב לוודא שסיימתם את הקטע תחילת העבודה במדריך הזה.

כדי לקבל אינטראקציות מהירות יותר, לא צריך לחכות לתוצאה המלאה מהמודל, אלא אפשר להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות. כדי להזרים טקסט שנוצר מהנחיה שמכילה טקסט, משתמשים ב-streamResponse(to:) באופן הבא:

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To stream generated text output, call `streamResponse(to:)` with the text input
let stream = session.streamResponse(to: prompt)
for try await snapshot in stream {
  print(snapshot.content)
}

מה עוד אפשר לעשות?

אתם יכולים להשתמש באפשרויות הגדרה וביכולות נוספות שונות כדי לשפר את החוויה ההיברידית:

תכונות שעדיין לא נתמכות בהיברידי או בהסקת מסקנות במכשיר

זו גרסה ניסיונית, ולכן לא כל היכולות של Firebase AI Logic או של מודלים שמארחים בענן נתמכות.

  • התכונות הבאות לא נתמכות בהטמעות היברידיות או בהטמעות במכשיר: מודלים של Imagen,‏ Gemini Live API ותבניות של הנחיות. בנוסף, לא מומלץ להסתמך על ספירת הטוקנים כי הספירה תהיה שונה בין מודלים שמארחים בענן לבין מודלים שפועלים במכשיר, ולכן אין חלופה אינטואיטיבית.

  • התכונות הבאות עדיין לא נתמכות בהסקת מסקנות במכשיר אם אתם רוצים להשתמש באחת מהתכונות האלה, מומלץ להשתמש רק במודל שמתארח בענן כדי לקבל חוויה עקבית יותר.

    • יצירת טקסט מקלט מולטי-מודאלי, כמו תמונות, אודיו, סרטונים ומסמכים (קובצי PDF)

    • יצירת מדיה, כמו תמונות, אודיו או סרטון

    • שליחת בקשות שחורגות מ-4,096 טוקנים (או בערך 3,000 מילים באנגלית).

    • המודל במכשיר מקבל כלים מובנים שעוזרים לו ליצור את התשובה (כמו הפעלת קוד, הקשר של כתובת URL ועיגון באמצעות חיפוש Google)

  • מעקב אחרי שימוש בתכונות AI במסוף Firebase לא מציג נתונים לגבי היקש במכשיר (כולל יומנים במכשיר). עם זאת, אפשר לעקוב אחרי כל הסקה שנעשית באמצעות מודל שמתארח בענן, בדיוק כמו אחרי הסקות אחרות, באמצעות Firebase AI Logic.

מגבלות נוספות

בנוסף לאמור לעיל, הסקת מסקנות במכשיר מוגבלת באופן הבא:

  • משתמש הקצה של האפליקציה שלכם צריך להשתמש במכשיר עם Apple Intelligence מופעל.

  • האפליקציה יכולה להריץ הסקה במכשיר רק כשהיא פועלת בחזית.


רוצה לתת משוב על חוויית השימוש ב-Firebase AI Logic?