פלט מובנה מאפשר לכם להגביל את הפלט שנוצר על ידי מודל Claude כך שיתאים בדיוק לסכימת JSON ספציפית. התכונה הזו שימושית כדי לוודא שהתשובות של מודלי Claude תמיד יהיו בפורמט המדויק שנדרש לאפליקציות, למסדי נתונים ולצינורות עיבוד נתונים במורד הזרם.
פלט מובנה מספק שתי תכונות משלימות שאפשר להשתמש בהן בנפרד או ביחד באותה בקשה:
- JSON outputs (
output_config.format): מגבילים את תשובת הטקסט של המודל לאובייקט JSON שתואם לסכימה שאתם מספקים. השתמשו בזה כשאתם צריכים לחלץ נתונים מובְנים מטקסט, ליצור דוחות מובְנים או לעצב תשובות של API. - שימוש מדויק בכלי (
tools[].strict): מוודא שהארגומנטים שהמודל מעביר לכלי תואמים לinput_schemaשל הכלי. משתמשים בפונקציה הזו כשצריך לבצע קריאות לפונקציות בטוחות לסוגים בתהליכי עבודה של סוכנים.
מידע נוסף זמין במאמרים של Anthropic בנושא יצירת פלט מובנה באמצעות Claude ושימוש קפדני בכלי.
מודלים נתמכים של Anthropic Claude
Gemini Enterprise Agent Platform תומכת בפלט מובנה בכל המודלים של Anthropic Claude 4.5 ומגרסאות מתקדמות יותר.
שליטה בגישה לפלט מובנה
כברירת מחדל, פלט מוּבְנֶה מושבת על ידי אילוץ מדיניות הארגון constraints/vertexai.allowedPartnerModelFeatures. כדי להפעיל פלט מובנה, צריך להגדיר את האילוץ הזה כך שיאפשר באופן מפורש את התכונה structured_outputs.
בנוסף, אפשר להגדיר את אילוץ מדיניות הארגון constraints/vertexai.allowedModels כדי להגביל את הגישה למודלים של Claude.
הוראות מפורטות להגדרת אילוצים של מדיניות הארגון זמינות במאמר בנושא שליטה בגישה למודלים ב-Model Garden.
שליחת בקשה לפלט מובנה
כדי לבקש פלט JSON, שולחים בקשת POST לנקודת הקצה של מודל בעל האתר וכוללים את הפרמטר output_config בגוף הבקשה. הפרמטר
output_config מציין את סכימת ה-JSON שהתגובה של המודל צריכה להיות תואמת לה.
REST
בדוגמה הבאה מוסבר איך לשלוח בקשה ל-Agent Platform API כדי לחלץ פרטים מובְנים ליצירת קשר מאימייל לא מובְנה. התגובה מוגבלת לאובייקט JSON עם השדות name, email, plan_interest ו-demo_requested.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: אזור שתומך במודלים של Anthropic Claude. כדי להשתמש בנקודת הקצה הגלובלית, אפשר לעיין במאמר בנושא הגדרת נקודת הקצה הגלובלית.
- MODEL: מודל Claude נתמך, לדוגמה
claude-opus-4-7. - ROLE: התפקיד שמשויך להודעה. אפשר לציין
userאוassistant. ההודעה הראשונה חייבת להשתמש בתפקידuser. מודלים של Claude פועלים עם תחלופה בין תורות שלuserושלassistant. אם ההודעה האחרונה משתמשת בתפקידassistant, תוכן התגובה ממשיך מיד מהתוכן שבהודעה הזו. אתם יכולים להשתמש בזה כדי להגביל חלק מהתשובה של המודל. - CONTENT: התוכן, למשל הטקסט, של ההודעה
userאוassistant. לדוגמה,Extract the key information from this email: John Smith (john@example.com) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm. - MAX_TOKENS:
המספר המקסימלי של טוקנים שאפשר ליצור בתשובה. טוקן הוא בערך 3.5 תווים. 100 טוקנים מקבילים בערך ל-60 עד 80 מילים.
כדי לקבל תשובות קצרות יותר, מציינים ערך נמוך יותר, וכדי לקבל תשובות ארוכות יותר, מציינים ערך גבוה יותר.
- STREAM: ערך בוליאני שמציין אם התגובה מועברת בסטרימינג או לא. הערך
trueמאפשר להציג את התשובה באופן שוטף, והערךfalseמאפשר להציג את התשובה כשהיא מוכנה. בדרך כלל, פלט מובנה מוחזר עםfalse.
בדוגמה נעשה שימוש בשדות הפלט המובנים הבאים. פרטים על כל שדה מופיעים בקטע שדות הבקשה.
-
output_config: בלוק ההגדרות ברמה העליונה ששולט במבנה של התשובה של המודל. -
output_config.format.type: מגדירים את הערךjson_schemaכדי להגביל את התשובה לאובייקט JSON שתואם לסכימה שצוינה. -
output_config.format.schema: סכימת JSON שמגדירה את המבנה הנדרש של התשובה של המודל. הסכימה חייבת להיות תואמת לקבוצת המשנה הנתמכת של סכימת JSON.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
גוף בקשת JSON:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": false
}
}
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/anthropic/models/MODEL:rawPredict"
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/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו: השדה text של הבלוק content מכיל מחרוזת JSON שתואמת לסכימה שציינתם ב-output_config.
שדות של בקשות
השדות הבאים ספציפיים לפלט JSON. מידע על שדות בקשות אחרים מופיע במאמר בנושא Claude messages API.
-
output_config: בלוק ההגדרות ברמה העליונה ששולט במבנה של התשובה של המודל. -
output_config.format: הגדרת הפורמט של הפלט. יש תמיכה רק בסוגjson_schema. -
output_config.format.type: סוג פורמט הפלט שרוצים לאכוף. מגדירים את הערך הזה ל-json_schemaכדי שהתגובה תהיה אובייקט JSON.
output_config.format.schema: סכימת JSON שמגדירה את המבנה הנדרש של התשובה של המודל. הפלט המובנה תומך בסכימת JSON רגילה עם כמה מגבלות, כמו הדרישה להגדיר אתadditionalPropertiesל-falseלאובייקטים, ואי-תמיכה באילוצים מספריים או באילוצים של אורך מחרוזת. רשימה מלאה של התכונות הנתמכות והלא נתמכות מופיעה במסמכי התיעוד של Anthropic בנושא מגבלות של סכימת JSON. בסכימה, בדרך כלל מציינים:-
type: סוג ה-JSON של הערך ברמה הזו (בדרך כללobjectעבור סכימת הבסיס). -
properties: מפה של שמות שדות להגדרות הסוג שלהם, שמתארות כל שדה שהמודל צריך להחזיר. -
required: רשימה של שמות מאפיינים שהמודל צריך לכלול בתשובה שלו. -
additionalProperties: ערך בוליאני. אם הערך הואfalse, המודל לא יכלול שדות שלא הוגדרו ב-properties.
-
שימוש קפדני בכלים
שימוש קפדני בכלי מבטיח שהארגומנטים שהמודל מעביר לכלי תואמים ל-input_schema של הכלי. בלי מצב קפדני, יכול להיות שהמודל יפעיל כלי עם ארגומנטים שסוג הנתונים שלהם לא נכון (לדוגמה, "2" במקום 2) או ישמיט שדות נדרשים, מה שיכול לשבש את הפונקציות הבאות ולדרוש לוגיקה של ניסיון חוזר. כשמפעילים את המצב הקפדני, ה-API משתמש בדגימה מוגבלת על ידי כללי הדקדוק כדי לוודא ש:
- הכלי
nameהוא תמיד אחד מהכלים שסיפקתם. - הכלי
inputתמיד פועל בהתאם לinput_schemaשלו.
כדאי להשתמש בשימוש קפדני בכלים כשצריך לאמת פרמטרים של כלים, ליצור תהליכי עבודה מבוססי-סוכנים, לוודא קריאות לפונקציות בטוחות-סוגים או לטפל בכלים מורכבים עם מאפיינים מוטמעים.
כדי להפעיל שימוש קפדני בכלי, מגדירים את "strict": true כשדה ברמה העליונה בהגדרת הכלי, לצד name, description ו-input_schema.
REST
בדוגמה הבאה אפשר לראות איך שולחים בקשה ל-Agent Platform API שמגדירה כלי get_weather מחמיר. המודל מתחייב להפעיל את הכלי עם מחרוזת location ועם unit אופציונלי שהוא celsius או fahrenheit.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: אזור שתומך במודלים של Anthropic Claude. כדי להשתמש בנקודת הקצה הגלובלית, אפשר לעיין במאמר בנושא הגדרת נקודת הקצה הגלובלית.
- MODEL: מודל Claude נתמך, לדוגמה
claude-opus-4-7. - ROLE: התפקיד שמשויך להודעה. ההודעה הראשונה חייבת להשתמש בתפקיד
user. - CONTENT: התוכן, למשל הטקסט, של ההודעה
userאוassistant. לדוגמה,What is the weather in San Francisco? - MAX_TOKENS:
המספר המקסימלי של טוקנים שאפשר ליצור בתשובה. טוקן הוא בערך 3.5 תווים. 100 טוקנים מקבילים בערך ל-60 עד 80 מילים.
כדי לקבל תשובות קצרות יותר, מציינים ערך נמוך יותר, וכדי לקבל תשובות ארוכות יותר, מציינים ערך גבוה יותר.
- STREAM: ערך בוליאני שמציין אם התגובה מועברת בסטרימינג או לא. הערך
trueמאפשר להציג את התשובה באופן שוטף, והערךfalseמאפשר להציג את התשובה כשהיא מוכנה.
בדוגמה הזו נעשה שימוש בשדות הבאים של שימוש בכלי: פרטים על כל שדה זמינים בקטע שדות של שימוש קפדני בכלי.
-
tools[].strict: ערך בוליאני. אם הערך הואtrue, הכלי יבצע דגימה עם אילוצים של דקדוק. מודל מובטח להפעיל את הכלי עם ארגומנטים שתואמים ל-input_schema. -
tools[].input_schema: סכימת JSON שמגדירה את הארגומנטים שהמודל יכול להעביר לכלי. אםstrictהואtrue, הסכימה צריכה להיות תואמת לאותו קבוצת משנה נתמכת של סכימת JSON כמו סכימתoutput_configעבור פלט JSON.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
גוף בקשת JSON:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, for example San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"],
"additionalProperties": false
}
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/anthropic/models/MODEL:rawPredict"
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/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו: בלוק התוכן tool_use מכיל שדה input שהמפתחות וסוגי הערכים שלו תואמים בוודאות ל-input_schema של הכלי.
שדות של שימוש קפדני בכלים
השדות הבאים ספציפיים לשימוש בכלי במצב קפדני. מידע על שדות אחרים להגדרת כלים זמין במסמכי התיעוד של Anthropic בנושא הגדרת כלים.
-
tools[].strict: ערך בוליאני. אם הערך הואtrue, הכלי יבצע דגימה עם אילוצים של דקדוק. כשהערך שלstrictהואtrue, קלט הכלי של המודל מוגבל כך שיתאים לסכימה ב-input_schema. ערך ברירת המחדל הואfalse.
tools[].input_schema: סכימת JSON שמגדירה את הארגומנטים שהמודל יכול להעביר לכלי. אםstrictהואtrue, הסכימה צריכה להיות תואמת לאותו קבוצת משנה של סכימת JSON שמשמשת בפלט JSON. באופן ספציפי, אתם צריכים:- מגדירים את
additionalPropertiesל-falseבכל אובייקט בסכימה. - מפרטים כל מאפיין במערך
required.
הרשימה המלאה של התכונות הנתמכות והלא נתמכות מופיעה במסמכי התיעוד של Anthropic בנושא מגבלות של סכימת JSON.
- מגדירים את