تصور کنید یک نگهبان امنیتی به شما بگوید ساختمان امن است چون «یادش است» دیروز درها قفل بودند، در حالی که همین حالا درها چهارتا چهارتا باز هستند. این دقیقاً همان تلهای است که مدلهای زبانی در حلقههای عملیاتی میافتد: مدلها ساعت ندارند و نمیتوانند تشخیص دهند کدام عدد مربوط به لحظه حال است و کدام مربوط به حافظه چند ساعت پیش. این پدیده به عنوان «تله حافظه» (Memory Trap) در مدلهای زبانی بزرگ (LLM) شناخته میشود.
یک توسعهدهنده در شرکت MonkeyCode بهدلیل همین نقص، نزدیک بود یک نسخه معیوب از نرمافزار را تایید کند. طبق گزارش این توسعهدهنده، یک مدل زبانی رایگان — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — جهش نرخ خطا از ۰.۲٪ به ۱.۸٪ را نادیده گرفت، چون به یک اندازهگیری پایه (Baseline) که ساعتها پیش در تاریخچه گفتگو ذخیره شده بود، اعتماد کرد.
همانطور که در تحلیلهای قبلی ما دربارهی توهمات مدلهای زبانی اشاره کردیم، این مدلها تمایل دارند به محتملترین پاسخ در حافظه خود تکیه کنند، نه لزوماً دقیقترین دادهی ورودی. در این مورد خاص، مدل دچار توهم سنتی نشد، بلکه صرفاً «مطمئنترین» عدد موجود در حافظهاش را ترجیح داد و آن را بر دادههای زنده ترجیح داد. این نوع عدم دقت در تحلیلهای خودکار، یادآور پدیده رانش خاموش در مدلهای AI است که میتواند بهطور نامحسوس نرخ تشخیص باگها را در خط لولههای نرمافزاری کاهش دهد.
زمینه: چیدمان آزمایش
برای بازتولید و تست این خطا، نویسنده از دسترسی رایگان مدلهای MonkeyCode و گزینه سرور رایگان برای اجرای یک پردازش دستهای (Batch Job) عمداً خستهکننده استفاده کرد. این سامانه در واقع یک «کرون جاب» (Cron Job) بود که طوری طراحی شده بود تا هر ۵ دقیقه یکبار، نرخ خطا و تأخیر p95 را استخراج کند.
این سیستم دادههای نیم ساعت اخیر را در یک پوشه JSON بستهبندی میکرد و از مدل میخواست یک حکم نهایی برای استقرار (Canary Verdict) صادر کند. برای اینکه بتوان مسیر استدلال مدل را بعداً بررسی کرد، یک اسکریپت ساده پایتون هر حکم را در یک فایل مینوشت. در این ساختار هیچ کنترللوپ بلادرنگ یا استریمینگ وجود نداشت؛ صرفاً یک بازبین (Reviewer) بود که یک نسخه منتشر شده را زیر نظر داشت.
مکانیسم شکست
حدود ۱۱ ساعت پس از شروع اجرا، نرخ خطای کاناری از ۰.۲٪ به ۱.۸٪ جهش کرد. اما مدل با یک حکم «تایید» (Go) و یادداشتی آرام پاسخ داد: «نرخ خطا روی ۰.۲٪ ثابت است و نیازی به اقدام نیست».
عدد ۰.۲٪ در واقع مربوط به خط پایه پیش از استقرار بود که از اولین تیک ساعتِ کرون جاب در تاریخچه گفتگو باقی مانده بود. مدل به جای نگاه کردن به اندازهگیری فعلی، به مطمئنترین عدد در حافظهاش اعتماد کرد.
برای حل این بحران، توسعهدهنده یک سیستم «رسید» (Receipt) قطعی و دترمینیستیک را پیاده کرد. به جای اینکه از مدل بخواهد صرفاً دادهها را قضاوت کند، اکنون سیستم معیارها را در یک پوشه JSON قرار میدهد که شامل یک کد هش (Checksum) منحصربهفرد و برچسب زمانی observed_at است.
مکانیسم رسید (The Receipt Mechanism)
بر اساس گزارش، سیستم اکنون از قوانین فنی سختگیرانهای پیروی میکند تا اطمینان حاصل شود که مدل به «زمان حال» نگاه میکند:
- ساختار پوشه (The Envelope Structure): محموله شامل نام معیار، پنجره زمانی «۳۰ دقیقه اخیر»، برچسب زمانی
observed_atو فقط ۶ نمونه از جدیدترین دادهها است. این مجموعه با استفاده از الگوریتم SHA-256 هش شده تا یک کد چکسام ۱۲ کاراکتری ایجاد شود. - اعتبارسنجی هش: مدل موظف است دقیقاً همان کد هش ورودی را در پاسخ خود بازگرداند؛ هرگونه عدم تطابق منجر به رد خودکار تصمیم مدل میشود.
- دروازه تازگی (Freshness Gate): یک تابع پایتون به نام
verify_receiptبرچسب زمانیas_ofرا بررسی میکند. هر ورودی شواهدی که قدیمیتر از ۳۰۰ ثانیه (۵ دقیقه) باشد، دور ریخته میشود. این کار مانع از آن میشود که «سفرکنندگان در زمانِ مطمئن» (Confident Time Travelers) برچسبهای زمانی باورپذیر اختراع کنند. - تجزیه با شکست بسته (Fail-Closed Parsing): اگر مدل بهجای JSON سختگیرانه، متن مارکداون بفرستد یا یکی از فیلدهای ضروری را جا بیندازد، حکم مدل به عنوان یک شکست از نوع «نیاز به بررسی» (Needs-attention) تلقی میشود. همچنین، شواهد خالی اکنون به معنای رد حکم است.
مدیریت خط پایه (Baseline)
نویسنده در ابتدا سعی کرد برچسبهای مربوط به خطوط پایه پیش از استقرار را به شدت برجسته کند، اما این کار نتیجه عکس داد و باعث شد مدل هر عدد پایداری را به عنوان یک خطر شناسایی کند و برای چهار چرخه متوالی، احکام اشتباه «عدم تایید» (No-go) صادر کند.
راهکار نهایی این بود که خط پایه در پوشه دادهها باقی بماند اما با برچسب before_deploy علامتگذاری شود. نکته حیاتی این است که مدل اکنون از انجام مقایسه واقعی منع شده است؛ مدل فقط مقادیر را توصیف میکند، در حالی که یک دروازه کدنویسی قطعی (Deterministic Code Gate) تصمیم میگیرد که آیا تفاوت اعداد به اندازه کافی زیاد است که نیاز به بازگشت (Rollback) داشته باشد یا خیر. این رویکرد برای جلوگیری از حدسهای اشتباه مدل، مشابه استفاده از تستهای مشخصهسازی برای مقابله با بازنویسیهای حدسی AI است که دقت خروجی را تضمین میکند.
جدول تصمیمگیری
برای مدیریت خروجی، توسعهدهنده یک جدول تصمیمگیری قطعی پیاده کرد که بر اعتماد مدل اولویت دارد:
- تایید مدل + رسید تازه/مطابق: ادامه اجرای کاناری.
- تایید مدل + رسید قدیمی/غایب: تغییر وضعیت به «نیاز به بررسی».
- رد مدل + رسید تازه/مطابق: علامتگذاری به عنوان کاندید بازگشت (Rollback).
- رد مدل + رسید قدیمی/غایب: اجرای مجدد با یک پوشه دادههای تازه.
- وضعیت «نیاز به بررسی»: ارسال اعلان (Page) برای یک انسان؛ هیچ اقدام خودکاری صورت نمیگیرد.
این تغییر، فرض بنیادی نظارت با هوش مصنوعی را عوض میکند. مدل زبانی از جایگاه «قاضی» به جایگاه «توصیفکننده» منتقل شده است. با سلب قدرت انجام محاسبات زمانی یا مقایسههای نهایی از مدل، توسعهدهنده ریسک مدلهایی که برای ارضای دستور (Prompt)، برچسبهای زمانی جعلی اختراع میکنند را حذف کرد.
برای متخصصان، این یعنی هر مدل زبانی که در یک حلقه کنترلی استفاده میشود، باید به عنوان یک پردازشگر «بدون وضعیت» (Stateless) در نظر گرفته شود. شما نمیتوانید اعتماد کنید که مدل معنای «اکنون» را میفهمد. اگر مدل را مجبور نکنید که یک رسید قابل تایید از دادههای فعلی ارائه دهد، در واقع دارید به یک «شایعه» اعتماد میکنید و روی دکمه تایید کلیک میکنید.
محدودیتها و هشدارها
این الگو جهانی نیست و برای همه شرایط کاربرد ندارد. این روش تنها زمانی کار میکند که معیارها بتوانند در یک پنجره ۵ دقیقهای معنای کافی ایجاد کنند؛ در پروژههای جانبی با ترافیک بسیار کم، پوشه دادهها خالی میماند و منجر به احکام نویزی میشود.
علاوه بر این، نویسنده هشدار میدهد که اگر سیستم شما نیاز به تصمیمات بازگشت (Rollback) در کمتر از یک دقیقه دارد، کلاً از مدلهای زبانی استفاده نکنید. در این حلقههای سرعت بالا، سیستمهای هشدار قطعی (Deterministic Alerting) باید مالک تصمیمات باشند، زیرا سربار اعتبارسنجی رسید و تأخیر استنتاج (Inference) مدلهای زبانی برای بازیابیهای آنی بسیار زیاد است.
گام بعدی شما
- اگر از LLM برای تحلیل لاگها یا مانیتورینگ استفاده میکنید، هرگز به حافظه مدل اعتماد نکنید و هر درخواست را با یک شناسه منحصربهفرد (Nonce) یا هش زمانی علامتگذاری کنید.
- نقش مدل را از «قاضی» به «توصیفکننده» تغییر دهید و تصمیم نهایی را به توابع منطقی (Deterministic) بسپارید.
- برای سیستمهای حساس، لایه اعتبارسنجی خروجی (JSON Validation) را اجباری کنید تا از خطاهای فرمتی جلوگیری شود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو