بنچمارک جدیدی از ۱۲ رابط برنامه‌نویسی (API) مدل‌های زبانی بزرگ (LLM) نشان می‌دهد که تقریباً هر سرویسی JSON مطابق با طرحواره (schema) درخواستی را برمی‌گرداند، اما اقلیت قابل توجهی مقادیر از نظر واقعیت اشتباه تولید می‌کنند. هزینه توکن برای یک طرحواره یکسان، از چند ده توکن تا نزدیک به پنج هزار توکن متغیر است. توسعه‌دهندگانی که خط لوله‌های استخراج یا عامل‌های داده‌محور می‌سازند، دیگر نمی‌توانند «معتبر بودن از نظر طرحواره» را به عنوان جایگزینی برای «درست بودن» در نظر بگیرند.

چرا این آزمایش اهمیت دارد

ارائه‌دهندگان API، «خروجی ساختاریافته» (structured output) را به عنوان راهی برای حذف خطاهای تجزیه (parsing) تبلیغ می‌کنند. وعده آن‌ها ساده است: یک طرحواره JSON به مدل بدهید و مدل فیلدها را بدون نیاز به نوشتن کدهای پس‌پردازش شکننده، پر می‌کند. در عمل، بسیاری از سیستم‌های عملیاتی در حال حاضر برای جلوگیری از کرش کردن و تمیز نگه داشتن خط لوله‌های تحلیل پایین‌دستی، به این تضمین متکی هستند. وقتی این تضمین تنها تا نیمه درست باشد، باگ‌ها به‌صورت بی‌صدا رخنه می‌کنند و محاسبات هزینه بر اساس میزان استفاده از توکن به‌شدت دچار خطا می‌شود.

خبر خوب: طرحواره‌ها اکنون عمدتاً اعمال می‌شوند

  • بیشتر مدل‌ها در مجموعه آزمایش، JSON تولید کردند که از یک اعتبارسنج دقیق عبور کرد.
  • رمزگشایی محدودشده (Constrained decoding) – مدل‌هایی که رمزگشا را بر طرحواره قفل می‌کنند، نمی‌توانند کاراکترهای اضافی منتشر کنند، بنابراین محموله‌های بدشکل (malformed) عملاً منقرض شده‌اند.
  • نرخ خطای تجزیه – توسعه‌دهندگان دیگر نیازی ندارند هر فراخوانی را در بلوک‌های try-catch برای خطاهای سینتکس JSON قرار دهند.

خبر بد: اعتبار $\neq$ دقت

داشتن یک شکل (shape) معتبر، تضمین‌کننده یک مقدار معتبر نیست. چهار مدل از دوازده مدل — DeepSeek V4، Qwen و GLM-5.2 (دو مورد آخر در گزارش با دو نام متفاوت ظاهر شده‌اند) — JSON کاملاً خوش‌ساختی تولید کردند که وقتی حالت «تفکر» (یا زنجیره افکار/chain-of-thought) روشن بود، حاوی اعداد اشتباه بود.

  • در مدل Qwen، یک استخراج محاسباتی ساده، با فعال بودن استدلال از ۱ پاسخ درست از ۱۶، به ۸ پاسخ درست از ۸ زمانی که استدلال غیرفعال بود، تغییر یافت.
  • مدل DeepSeek V4 Pro نوسان مشابهی را نشان داد: دقت استخراج زمانی که مدل تلاش برای توضیح مراحل خود را متوقف کرد، از ۱/۸ به ۷/۸ افزایش یافت.

مرحله اضافی استدلال با رمزگشای محدودشده تداخل ایجاد می‌کند و اجازه می‌دهد مدل در حالی که همچنان به براکت‌های بیرونی احترام می‌گذارد، به سمت توهم (hallucination) سوق پیدا کند.

جنبه زشت: غافلگیری‌های هزینه توکن و پارامترهای نادیده گرفته شده

  • فرمت پاسخ Claude – هنگام دسترسی از طریق نقاط پایانی (endpoints) سازگار با OpenAI، مدل Claude کاملاً پرچم response_format را نادیده گرفت و خروجی ۰٪ مطابق با طرحواره ارائه داد. این مدل از فراخوانی‌های ساختاریافته پشتیبانی می‌کند، اما فقط از طریق رابط کاربری بومی فراخوانی ابزار (tool-call) آنتروپیک.
  • تورم توکن‌های طرحواره – یک طرحواره متوسط ۱۲ کیلوبایتی در DeepSeek ۳۰ توکن هزینه دارد، اما همان محموله در Claude ۴,۹۵۹ توکن مصرف کرد.
  • ناهماهنگی‌های صورت‌حساب – برخی ارائه‌دهندگان طرحواره را به عنوان بخشی از پرامپت محاسبه می‌کنند و برای هر توکن مصرفی آن هزینه می‌گیرند؛ برخی دیگر با آن مانند یک لایه اضافی رایگان برخورد می‌کنند. در مقیاس بزرگ، صورت‌حساب طرحواره می‌تواند از هزینه محتوای تولید شده توسط مدل فراتر رود.

توسعه‌دهندگان اکنون باید چه کنند

۱. مقادیر را اعتبارسنجی کنید، نه فقط شکل‌ها را – یک اعتبارسنج طرحواره، پاسخ عددی اشتباه را حتی اگر با نوع (type) مورد انتظار مطابقت داشته باشد، تشخیص نمی‌دهد. بررسی‌های مختص دامنه (محدوده، واحد، سازگاری بین فیلدها) را اضافه کنید. ۲. زنجیره افکار (chain-of-thought) را برای استخراج خاموش کنید – در مدل‌های DeepSeek، Qwen و GLM زمانی که به پر کردن قابل اعتماد فیلدها نیاز دارید، این کار را انجام دهید. مرحله اضافی استدلال اختیاری است، نه برای صحت عملکرد الزامی. ۳. استفاده از توکن را حسابرسی کنید – ثبت کنید که هر درخواست شامل چه تعداد توکن (از جمله بخش طرحواره) مصرف می‌کند و قبل از تعهد به استقرار در مقیاس بزرگ، صورت‌حساب‌ها را بین فروشندگان مختلف مقایسه کنید. ۴. قابلیت انتقال (portability) را تست کنید – طرحواره‌ای که در OpenAI کار می‌کند، ممکن است در Gemini یا Claude به‌طور بی‌صدا نادیده گرفته شود. قبل از نهایی کردن کد، یک بررسی سریع روی هر پلتفرم هدف انجام دهید.

دیدگاه مخالف از سوی فروشندگان

برخی از ارائه‌دهندگان استدلال می‌کنند که حالت «تفکر» یک انتخاب توسعه‌دهنده است که برای وظایفی در نظر گرفته شده که در آن‌ها توضیح دادن بر دقت خام استخراج برتری دارد. Claude پرچم response_format را نادیده می‌گیرد و پیشنهاد می‌کند به جای آن از فراخوانی‌های ابزار بومی آنتروپیک استفاده کنید. این توضیحات از نظر فنی درست هستند، اما بار مسئولیت را به دوش توسعه‌دهندگان می‌اندازند تا بدانند کدام حالت را انتخاب کنند و چگونه برای هزینه‌های پنهان توکن بودجه‌بندی کنند.

خلاصه کلام

یک طرحواره JSON دیگر یک شبکه ایمنی نیست؛ بلکه فقط یک «شکل» است. اطمینان حاصل کنید که داده‌های داخل آن با واقعیت مطابقت دارد، مراقب هزینه‌های پنهان توکن باشید و به یاد داشته باشید که «تفکر» یک مدل می‌تواند حتی تمیزترین خروجی‌های ظاهری را هم خراب کند.