אתם יכולים להבטיח שהפלט שנוצר על ידי המודל תמיד יתאים לסכימה ספציפית, כדי לקבל תשובות בפורמט עקבי. לדוגמה, יכול להיות שיש לכם סכימת נתונים מוגדרת שאתם משתמשים בה למשימות אחרות. אם המודל פועל לפי אותה סכימה, אתם יכולים לחלץ נתונים ישירות מהפלט של המודל בלי עיבוד נוסף.
כדי לציין את המבנה של פלט המודל, מגדירים סכימת תשובה, שפועלת כמו תוכנית לתשובות של המודל. כששולחים הנחיה וכוללים את סכמת התשובה, התשובה של המודל תמיד תואמת לסכמה שהגדרתם.
אתם יכולים לשלוט בפלט שנוצר כשאתם משתמשים במודלים הבאים:
- מודלים של Gemini:
לחצו כדי להרחיב את רשימת המודלים הנתמכים
מודלים פתוחים:
במודלים פתוחים, פועלים לפי המדריך למשתמש.
תרחישים לדוגמה
תרחיש שימוש אחד להחלת סכימת תשובה הוא לוודא שהתשובה של המודל יוצרת קובץ JSON תקין ותואמת לסכימה שלכם. הפלט מהמודל הגנרטיבי יכול להיות מגוון במידה מסוימת, ולכן הכללת סכֵימת תשובה מבטיחה שתמיד תקבלו JSON תקין. לכן, המשימות הבאות יכולות להסתמך על קלט JSON תקין מהתשובות שנוצרו.
דוגמה נוספת היא הגבלת האופן שבו המודל יכול להשיב. לדוגמה, אתם יכולים להשתמש במודל כדי להוסיף הערות לטקסט עם תוויות שהמשתמשים מגדירים, ולא עם תוויות שהמודל מייצר. האילוץ הזה שימושי כשמצפים לקבל קבוצה ספציפית של תוויות, כמו positive או negative, ולא רוצים לקבל שילוב של תוויות אחרות שהמודל עשוי ליצור, כמו good, positive, negative או bad.
לתשומת ליבכם
אם אתם מתכננים להשתמש בסכימת תגובה, כדאי לקרוא את ההגבלות הפוטנציאליות הבאות:
- חובה להשתמש ב-API כדי להגדיר סכימת תגובה ולהשתמש בה. אין תמיכה בקונסולות.
- הגודל של סכמת התשובה נכלל במגבלת הטוקנים של הקלט.
יש תמיכה רק בפורמטים מסוימים של פלט, כמו
application/jsonאוtext/x.enum. לגבי פלט JSON:- אם מגדירים את
response_mime_typeל-application/jsonבלי לצייןresponse_schema, זה משמש רק כרמז חזק, ויש סיכון קטן ליצירת JSON בפורמט שגוי. - כדי לוודא שאובייקטים של JSON תקינים ב-100%, הבקשות חייבות לכלול גם
response_schemaוגםresponse_mime_typeשמוגדרים ל-application/json. - כשיטה מומלצת, אם תרחיש השימוש שלכם מונע מכם להגדיר מראש סכימה, כדאי להטמיע מאמת JSON בצד הלקוח עם מנגנון ניסיון חוזר.
- אם מגדירים את
פלט מובנה תומך בקבוצת משנה של הסכימה של Agent Platform. מידע נוסף זמין במאמר שדות סכימה נתמכים.
סכימה מורכבת עלולה לגרום לשגיאה
InvalidArgument: 400. מורכבות יכולה לנבוע משמות מאפיינים ארוכים, ממגבלות אורך ארוכות של מערכים, מ-enums עם הרבה ערכים, מאובייקטים עם הרבה מאפיינים אופציונליים או משילוב של הגורמים האלה.אם השגיאה הזו מופיעה בסכימה תקינה, צריך לבצע שינוי אחד או יותר מהשינויים הבאים כדי לפתור את השגיאה:
- לקצר את שמות המאפיינים או את שמות ה-enum.
- פיצול מערכים בתוך מערכים.
- צריך לצמצם את מספר הנכסים עם מגבלות, כמו מספרים עם מגבלות מינימום ומקסימום.
- צמצמו את מספר המאפיינים עם אילוצים מורכבים, כמו מאפיינים עם פורמטים מורכבים כמו
date-time. - צריך לצמצם את מספר המאפיינים האופציונליים.
- צריך לצמצם את מספר הערכים התקינים של מאפייני enum.
שדות סכימה נתמכים
אפשר לציין response_schema שמתאר את פורמט הפלט.
המודל ייצור תשובה שתואמת לסכימה שצוינה. כשמשתמשים בפלט מובנה, המודל יוצר פלט באותו סדר כמו המפתחות בסכימה.
השדות הבאים מסכימת Agent Platform נתמכים. אם משתמשים בשדה שלא נתמך, פלטפורמת הסוכנים של Gemini Enterprise עדיין יכולה לטפל בבקשה, אבל היא מתעלמת מהשדה.
anyOf
enum: נתמכים רק ערכי enumstringformatitemsmaximummaxItemsminimumminItemsnullablepropertiesdescriptionpropertyOrdering*required
* propertyOrdering מיועד ספציפית לפלט מובנה, והוא לא חלק מהסכימה של Agent Platform. בשדה הזה מגדירים את הסדר שבו הנכסים נוצרים. המאפיינים שברשימה חייבים להיות ייחודיים וחייבים להיות מפתחות חוקיים במילון properties.
כשמגדירים סכימה, המודל לא פועל בדיוק לפי סדר המאפיינים שמגדירים בשדה properties. כדי להגדיר סדר ספציפי ליצירת מאפיינים, משתמשים בשדה propertyOrdering. הנכסים שמופיעים ב-propertyOrdering נוצרים קודם, בסדר שצוין, ואחריהם כל הנכסים האחרים.
אם משתמשים ב-Python SDK, סדר ברירת המחדל של המאפיינים הוא הסדר שמוגדר בסכימה. בכל שאר המקרים, המאפיינים נוצרים בסדר אלפביתי, כאשר המאפיינים הנדרשים מקובצים ראשונים ואחריהם המאפיינים האופציונליים.
בשדה format, Gemini Enterprise Agent Platform תומך בערכים הבאים: date, date-time, duration ו-time. התיאור והפורמט של כל ערך מפורטים במאגר של Open API Initiative
לפני שמתחילים
מגדירים סכֵימת תשובה כדי לציין את מבנה הפלט של המודל, את שמות השדות ואת סוג הנתונים הצפוי בכל שדה. צריך להשתמש רק בשדות הנתמכים שמופיעים בקטע שיקולים. המערכת תתעלם מכל שאר השדות.
צריך לכלול את סכימת התגובה רק כחלק מהשדה responseSchema. אל תשכפלו את הסכימה בהנחיית הקלט. אם תעשו את זה, יכול להיות שהפלט שייווצר יהיה באיכות נמוכה יותר.
דוגמאות לסכמות מופיעות בקטע דוגמאות לסכמות ולתשובות של מודלים.
התנהגות המודל וסכמת התשובה
כשמודל יוצר תגובה, הוא משתמש בשם השדה ובתיאור מתוך הסכימה שסופקה. לכן מומלץ להשתמש במבנה ברור ובשמות שדות חד-משמעיים כדי שהכוונה תהיה ברורה. מומלץ להשתמש בשדה description בתוך מאפייני הסכימה כדי להגדיר את המטרה של כל שדה.
כברירת מחדל, השדות הם אופציונליים, כלומר המודל יכול למלא את השדות או לדלג עליהם. אתם יכולים להגדיר שדות כחובה כדי לחייב את המודל לספק ערך. אם אין מספיק הקשר בהנחיית הקלט המשויכת, המודל יוצר תשובות שמבוססות בעיקר על הנתונים שעליהם הוא אומן.
אם אתם לא רואים את התוצאות שציפיתם להן, כדאי להתחיל בשיפור התיאורים בסכימה. אם אתם מרגישים שאתם לא יכולים להעביר את כל הניואנסים של הסכימה בתיאור שלה, אפשר לדון בסכימה בהנחיה, אבל חשוב:
מציינים את הסכימה רק באובייקט הסכימה. אל תציינו את הסכימה גם בהנחיה. אם תעשו את שניהם, הביצועים עלולים להיפגע.
אלא אם יש צורך בכך, לא כדאי לדון בסכימה בהנחיה (מעבר ל "פעל לפי הסכימה שסופקה" או משהו דומה). כך קל יותר לבצע תחזוקה. אם תצטרכו לשנות את הסכימה, תוכלו פשוט לשנות אותה במקום לוודא שההנחיה והסכימה מעודכנות בצורה נכונה.
אם אתם חייבים לדון בסכימה בהנחיה (כדי לספק דוגמאות או הוראות מפורטות במיוחד, שאחרת יובילו לערכי
descriptionמבלבלים בסכימה), הקפידו לפעול לפי הסדר exact של השדות בסכימה שסופקה. אם סדר השדות בסכימה שסיפקתם שונה מסדר השדות בהנחיה, יכול להיות שתקבלו שגיאות בפלט.
שליחת הנחיה עם סכימת תגובה
כברירת מחדל, כל השדות הם אופציונליים, כלומר המודל יכול ליצור תשובה לשדה. כדי לחייב את המודל ליצור תגובה לשדה מסוים, צריך להגדיר את השדה כחובה.
Python
התקנה
pip install --upgrade google-genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
מידע נוסף זמין ב מאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
התקנה
npm install @google/genai
מידע נוסף זמין ב מאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
איך מתקינים או מעדכנים את Java
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- GENERATE_RESPONSE_METHOD: סוג התשובה שרוצים שהמודל ייצור.
בוחרים שיטה שקובעת איך התשובה של המודל תוחזר:
-
streamGenerateContent: התשובה מוזרמת בזמן שהיא נוצרת כדי לצמצם את תפיסת זמן האחזור בקרב קהל אנושי. -
generateContent: התשובה מוחזרת אחרי שהיא נוצרת במלואה.
-
- LOCATION: האזור שבו הבקשה תעובד.
- PROJECT_ID: מזהה הפרויקט. .
- MODEL_ID: מזהה המודל של המודל הרב-אופני שרוצים להשתמש בו.
- ROLE:
התפקיד בשיחה שמשויך לתוכן. צריך לציין תפקיד גם בתרחישי שימוש של פנייה אחת.
הערכים הקבילים כוללים:
-
USER: מציין תוכן שנשלח על ידכם.
-
- TEXT: הוראות הטקסט שרוצים לכלול בהנחיה.
- RESPONSE_MIME_TYPE: סוג הפורמט של הטקסט המועמד שנוצר. רשימה של הערכים הנתמכים זמינה בפרמטר
responseMimeTypeב-Gemini API. - RESPONSE_SCHEMA: סכימה שהמודל צריך לפעול לפיה כשהוא יוצר תשובות. מומלץ להשתמש בשדה
descriptionכדי לתאר את המטרה של הסכימה ואת המאפיינים שלה. מידע נוסף מופיע במאמר בנושא סכימה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
גוף בקשת JSON:
{
"contents": {
"role": "ROLE",
"parts": {
"text": "TEXT"
}
},
"generation_config": {
"responseMimeType": "RESPONSE_MIME_TYPE",
"responseSchema": RESPONSE_SCHEMA,
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
דוגמה לפקודת curl
LOCATION="us-central1"
MODEL_ID="gemini-3.5-flash"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
cat << EOF > request.json
{
"contents": {
"role": "user",
"parts": {
"text": "List a few popular cookie recipes."
}
},
"generation_config": {
"maxOutputTokens": 2048,
"responseMimeType": "application/json",
"responseSchema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recipe_name": {
"type": "string",
"description": "The name of the cookie recipe."
},
},
"required": ["recipe_name"],
},
}
}
}
EOF
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} \
-d '@request.json'
סכימות לדוגמה לפלט JSON
בקטעים הבאים מוצגות מגוון הנחיות לדוגמה וסכימות של תשובות. אחרי כל קוד לדוגמה מופיעה גם תשובה לדוגמה מהמודל.
תחזית מזג האוויר לכל יום בשבוע
בדוגמה הבאה מוצג אובייקט forecast לכל יום בשבוע, שכולל מערך של מאפיינים כמו הטמפרטורה הצפויה ורמת הלחות לאותו יום. חלק מהמאפיינים מוגדרים כ-nullable, כדי שהמודל יוכל להחזיר ערך null כשאין לו מספיק הקשר ליצירת תשובה משמעותית. האסטרטגיה הזו עוזרת לצמצם הזיות.
Python
התקנה
pip install --upgrade google-genai
מידע נוסף זמין ב מאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
מידע נוסף זמין ב מאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
התקנה
npm install @google/genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
איך מתקינים או מעדכנים את Java
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
סיווג מוצר
בדוגמה הבאה יש סוגי enum שבהם המודל צריך לסווג את הסוג והמצב של אובייקט מתוך רשימה של ערכים נתונים.
Python
התקנה
pip install --upgrade google-genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
התקנה
npm install @google/genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
איך מתקינים או מעדכנים את Java
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True