פלט מובנה: סוף לרגקס שמחלץ JSON מתשובה
סכימה בבקשה מבטיחה תשובה שעומדת בה. זה מוחק את ה-prefill, את רצפי העצירה ואת לולאת הניסיון החוזר שהקיפו אותם.
הדפוס הישן לחילוץ JSON ממודל נראה כך: הנחיה שאומרת "החזר רק JSON תקין", הודעת עוזר מוכנה מראש שמתחילה בסוגר מסולסל, רצף עצירה, ואז JSON.parse בתוך לולאת ניסיון חוזר כי לפעמים זה בכל זאת נשבר.
כל השכבה הזאת מיותרת. output_config.format עם סכימת JSON מבטיח שהתשובה תעמוד בסכימה.
מה זה מוחק
ההודעה המוכנה מראש היא הראשונה ללכת, וזה לא רק ניקיון: במודלים העדכניים היא מוחזרת בשגיאת 400 ולכן חייבת ללכת. אחריה רצף העצירה ששמר עליה, ואז לולאת הניסיון החוזר שקיימה רק כי הפורמט לא היה מובטח.
זו נקודה שכדאי לשים לב אליה בהעברת קוד ישן. לא מספיק להחליף את הקריאה. הקוד סביב הקריאה, זה שבנה את ההודעה המוכנה ופירסס את התוצאה, הוא חלק מהמחיקה.
שני מצבים
הראשון, פורמט התשובה: output_config.format. המודל כותב תשובה שתואמת לסכימה שנתתם.
השני, פרמטרים של כלים: strict: true על הגדרת הכלי. זה מבטיח שהקלט שהמודל שולח לכלי תואם בדיוק לסכימה, בלי שדות עודפים ובלי טיפוסים שגויים. השדה יושב על הגדרת הכלי עצמה, לא על tool_choice, וזו טעות נפוצה.
ב-SDK יש דרך נוחה יותר מלכתוב סכימה ביד. מגדירים טיפוס בספריית ולידציה מקומית וקוראים למתודה שמוודאת את התשובה מולו אוטומטית.
מה הסכימה תומכת בו ומה לא
טיפוסים בסיסיים, מערכים, אובייקטים, ערכים סגורים, איחודים והפניות פנימיות. פורמטים של מחרוזת כמו תאריך, כתובת דוא"ל ו-URI. חובה להצהיר שאין שדות נוספים בכל אובייקט.
מה שלא נתמך: סכימות רקורסיביות, ומגבלות מספריות או מגבלות אורך מחרוזת. חלק מה-SDK מסירים את המגבלות הלא נתמכות מהסכימה שנשלחת ומאמתים אותן אצלכם, כך שהקוד עובד אבל האכיפה קורית בצד הלקוח.
שלוש נקודות שכדאי לדעת
סכימה חדשה נושאת עלות קומפילציה חד-פעמית בבקשה הראשונה, ואחריה היא במטמון ליממה. מי שמייצר סכימה דינמית בכל בקשה משלם את זה כל פעם.
אם המודל סירב מטעמי בטיחות, התשובה עלולה לא לעמוד בסכימה. צריך לבדוק את סיבת העצירה לפני שקוראים את התוכן.
אם התשובה נקטעה בתקרת הטוקנים היא חלקית, ולכן גם לא תקינה מול הסכימה. זה נראה כמו כשל של הפיצ'ר והוא כשל של max_tokens.
איפה זה לא מתאים
ציטוטים ופלט מובנה לא עובדים יחד ומחזירים שגיאה. מי שצריך את שניהם, סיכום מובנה עם הפניות מדויקות למקור, צריך לפצל לשתי קריאות או לוותר על אחד מהם.
מה שנשאר לא פתור הוא הפער בין תקינות מבנה לתקינות תוכן. הסכימה מבטיחה ששדה המחיר הוא מספר. היא לא מבטיחה שזה המחיר הנכון. אימות עובדתי נשאר קוד שאתם כותבים.
מקורות
- Structured outputs · Anthropic · 24 ביוני 2026