יצירת פלט מובנה (כמו JSON) באמצעות Gemini API


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

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

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

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

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

במדריך הזה מוסבר איך ליצור פלט JSON באמצעות שליחת responseSchema בשיחה ל-generateContent. הוא מתמקד בקלט של טקסט בלבד, אבל Gemini יכול גם ליצור תשובות מובנות לבקשות מסוג multimodal שכוללות תמונות, סרטונים ואודיו כקלט.

בתחתית הדף הזה מפורטות דוגמאות נוספות, למשל איך ליצור ערכים של enum כפלט. כדי לראות דוגמאות נוספות ליצירת פלט מובנה, אפשר לעיין ברשימה של דוגמאות לסכימות ולתגובות לדוגמה במסמכי העזרה של Google Cloud.

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

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

  1. מגדירים פרויקט Firebase חדש או קיים, כולל שימוש בתוכנית התמחור Blaze והפעלת ממשקי ה-API הנדרשים.

  2. קישור האפליקציה ל-Firebase, כולל רישום האפליקציה והוספת הגדרות Firebase לאפליקציה.

  3. מוסיפים את ה-SDK ומפעילים את השירות Vertex AI ואת המודל הגנרטיבי באפליקציה.

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

שלב 1: מגדירים סכימה של תגובה

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

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

שיקולים לגבי סכימות תגובה

כשכותבים את הסכימה של התשובה, חשוב לזכור את הדברים הבאים:

  • הגודל של סכימת התשובות נחשב כחלק מהמגבלה של אסימוני הקלט.

  • התכונה של סכימת התגובות תומכת בסוגי MIME הבאים של תשובות:

    • application/json: פלט JSON כפי שמוגדר בסכימת התגובה (שימושי לדרישות של פלט מובנה)

    • text/x.enum: הפלט הוא ערך enum כפי שמוגדר בסכימת התגובה (שימושי למשימות סיווג)

  • תכונת סכימת התגובות תומכת בשדות הסכימה הבאים:

    enum
    items
    maxItems
    nullable
    properties
    required

    אם משתמשים בשדה שלא נתמך, המודל עדיין יכול לטפל בבקשה שלכם אבל הוא מתעלם מהשדה. הערה: הרשימה שלמעלה היא קבוצת משנה של אובייקט הסכימה של OpenAPI 3.0 (ראו חומר העזר בנושא סכימות של Vertex AI).

  • כברירת מחדל, ב-SDKs של Vertex AI in Firebase, כל השדות נחשבים חובה, אלא אם מציינים אותם כאופציונליים במערך optionalProperties. בשדות האופציונליים האלה, המודל יכול לאכלס את השדות או לדלג עליהם.

    חשוב לזכור שההתנהגות הזו שונה מהתנהגות ברירת המחדל של Vertex AI Gemini API.

שלב 2: שולחים הנחיה עם סכימה של תגובה כדי ליצור JSON

הדוגמה הבאה מראה איך ליצור פלט JSON מובנה.

כדי ליצור פלט מובנה, צריך לציין במהלך האתחול של המודל את responseMimeType המתאים (בדוגמאות האלה, application/json) ואת responseSchema שבו רוצים שהמודל ישתמש.

אפשר להשתמש ב-responseSchema ב-Gemini 1.5 Pro וב-Gemini 1.5 Flash.

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

דוגמאות נוספות

דוגמאות נוספות לשימוש בפלטים מובְנים וליצירתם מפורטות ברשימה של דוגמאות לסכימות ולתשובות של מודלים במסמכי התיעוד של Google Cloud.

יצירת ערכי enum כפלט

בדוגמה הבאה מוסבר איך משתמשים בסכימת תגובה למשימות סיווג. המודל מתבקש לזהות את הז'אנר של סרט על סמך התיאור שלו. הפלט הוא ערך enum אחד בטקסט ללא סימון (plain text) שהמודל בוחר מתוך רשימה של ערכים שמוגדרים בסכימת התגובה שסופקה.

כדי לבצע את המשימה של הסיווג המובנה, צריך לציין במהלך אתחול המודל את ה-responseMimeType המתאים (בדוגמה הזו text/x.enum) וגם את ה-responseSchema שבו רוצים שהמודל ישתמש.

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

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

  • מידע נוסף על עיצוב הנחיות כדי שתוכלו להשפיע על המודל וליצור פלט ספציפי לצרכים שלכם.
  • מגדירים פרמטרים של מודל כדי לקבוע איך המודל ייצור תשובה. הפרמטרים האלה כוללים את מספר האסימונים המקסימלי בפלט, הטמפרטורה, topK ו-topP.
  • אתם יכולים להשתמש בהגדרות הבטיחות כדי לשנות את הסבירות לקבלת תשובות שעשויות להיחשב כפוגעניות, כולל דברי שטנה ותוכן מיני בוטה.
  • מגדירים הוראות מערכת כדי להשפיע על התנהגות המודל. התכונה הזו היא כמו 'מבוא' שמוסיפים לפני שהמודל נחשף להוראות נוספות ממשתמש הקצה.


שליחת משוב על חוויית השימוש ב-Vertex AI in Firebase