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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    enum
    items
    maxItems
    nullable
    properties
    required

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

  • כברירת מחדל, בערכות SDK של 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 אחד של טקסט פשוט שהמודל בוחר מתוך רשימת ערכים שמוגדרים בסכימת התגובות שסופקה.

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

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

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

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


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