אתם יכולים להבטיח שהפלט שנוצר על ידי מודל תמיד יתאים לסכימה ספציפית, כדי לקבל תשובות בפורמט עקבי. לדוגמה, יכול להיות שיש לכם סכימת נתונים מוגדרת שבה אתם משתמשים למשימות אחרות. אם תגדירו למודל לפעול לפי אותה סכימה, תוכלו לחלץ נתונים ישירות מהפלט של המודל בלי לבצע עיבוד נוסף.
כדי לציין את המבנה של הפלט של המודל, מגדירים סכימת תשובה, שפועלת כמו תוכנית ליצירת תשובות של המודל. כששולחים הנחיה וכוללים בה את סכימת התגובה, התשובה של המודל תמיד תהיה בהתאם לסכימה שהגדרתם.
אתם יכולים לשלוט בפלט שנוצר כשאתם משתמשים במודלים הבאים:
- המודלים של 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. - צריך לצמצם את מספר המאפיינים האופציונליים.
- צריך לצמצם את מספר הערכים החוקיים של סוגי הנתונים המנויים.
שדות סכימה נתמכים
אפשר לציין 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: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
- 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 לכל יום בשבוע, שכולל מערך של מאפיינים כמו הטמפרטורה הצפויה ורמת הלחות לאותו יום. חלק מהמאפיינים מוגדרים כמאפיינים שניתן להגדיר להם ערך null, כדי שהמודל יוכל להחזיר ערך 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