יצירת פלט מובנה לחוויה היברידית באפליקציות אינטרנט

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

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

הנה כמה דוגמאות:

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

  • הגבלת האופן שבו מודל יכול להגיב במהלך משימות סיווג.
    לדוגמה, אפשר לבקש מהמודל להוסיף הערות לטקסט עם קבוצה ספציפית של תוויות (למשל, קבוצה ספציפית של ספירות כמו positive ו-negative), במקום תוויות שהמודל יוצר (שיכולות להיות עם מידה מסוימת של שונות כמו good, positive, negative או bad).

בדף הזה מוסבר איך ליצור פלט מובנה (כמו JSON וספירות) בחוויות היברידיות באפליקציות אינטרנט.

לפני שמתחילים

חשוב לוודא שהשלמתם את מדריך תחילת העבודה ליצירת חוויות היברידיות.

הגדרת פלט מובנה

אפשר ליצור פלט מובנה (כמו JSON ו-enums) להסקת מסקנות באמצעות מודלים שמתארחים בענן ומודלים שפועלים במכשיר.

כדי להגדיר את המודל כך שיגיב עם פלט מובנה, צריך להשתמש ב-inCloudParams וב-onDeviceParams. במצבים האחרים, משתמשים רק בתצורה הרלוונטית.

  • בשביל inCloudParams: מציינים את responseMimeType המתאים (לדוגמה, application/json) ואת responseSchema שרוצים שהמודל ישתמש בו.

  • בשביל onDeviceParams: מציינים את responseConstraint שרוצים שהמודל ישתמש בו.

פלט מסוג JSON

בדוגמה הבאה מותאמת דוגמת פלט JSON כללית כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const jsonSchema = Schema.object({
 properties: {
    characters: Schema.array({
      items: Schema.object({
        properties: {
          name: Schema.string(),
          accessory: Schema.string(),
          age: Schema.number(),
          species: Schema.string(),
        },
        optionalProperties: ["accessory"],
      }),
    }),
  }
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

// ...

פלט של טיפוס בן מנייה (enum)

בדוגמה הבאה מותאם פלט כללי של enum כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const enumSchema = Schema.enumString({
  enum: ["drama", "comedy", "documentary"],
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "text/x.enum",
      responseSchema: enumSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: enumSchema
    }
  }
});

// ...