اگر امروز یک عامل هوش مصنوعی را برای مدیریت تراکنشهای مالی یا زیرساختهای حساس به کار بگیرید، در واقع یک بمب ساعتی را در سیستم خود جاسازی کردهاید. طبق اعلام Stack Overflow در ۷ اکتبر ۲۰۲۶، تنها راه خروج از این ریسک، جداسازی کامل لایهٔ تصمیمگیری از لایهٔ اجرا از طریق ایجاد یک «لایهٔ قطعیت» (Determinism Layer) است.
بسیاری از توسعهدهندگان با عاملهای هوش مصنوعی (AI Agents) — شبیه به کارمندی که بدون گزارش دادن، هر تصمیمی را خودش میگیرد و اجرا میکند — به صورت حلقههای خودمختار برخورد میکنند که ابزارها را فراخوانی کرده و وضعیت سیستم را در لحظه تغییر میدهند. این رویکرد برای دموها جذاب است، اما در محیطهای تحت نظارت مانند بهداشت یا سیستمهای بانکی که استاندارد «معمولاً درست کار میکند» پذیرفته نیست، شکست میخورد. این چالشها در واقع ریشه در شکاف عمیقی میان دموهای جذاب و واقعیتهای عملیاتی دارد که باعث شکست بسیاری از عاملها در محیطهای واقعی میشود. شکاف میان یک چتبات و یک عامل عملیاتی، در هوش مدل نیست، بلکه در انضباط معماری است. همانطور که در تحلیلهای قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، حذف دسترسی مستقیم مدل به وضعیت سیستم، اولین قدم برای رسیدن به بلوغ عملیاتی است.
تصور کنید عامل شما به جای یک کارمند، یک مشاور است. مشاور فقط پیشنهاد میدهد و این یک تکه کدِ بهشدت تستشده به نام «زیرلایه» (Substrate) است که اجازه دارد تغییرات را در دنیای واقعی اعمال کند.
معماری تابع خالص
بر اساس مستندات مهندسی Stack Overflow، یک عامل باید به عنوان یک تابع خالص (Pure Function) عمل کند که ورودیاش «زمینه» و خروجیاش یک «پیشنهاد» است. در این حالت، عامل هیچ قدرتی برای تغییر وضعیت کسبوکار ندارد و فقط یک شیء به نام Proposal تولید میکند.
این شیء شامل موارد زیر است:
decision_id: شناسه منحصربهفرد درخواستcapability: مهارت خاصی که به کار گرفته شدهaction: تغییر پیشنهادی (که هنوز اعمال نشده است)confidence: عدد اعشاری نشاندهنده اطمینان سیستمrouting: مسیردهی (خودکار، توصیه به انسان، نیاز به انسان یا رد درخواست)reasoning: زنجیرهای از استدلالهاevidence: شواهدی که تصمیم را پشتیبانی میکند
این مرزبندی سه ویژگی حیاتی ایجاد میکند: اول، قابلیت تست؛ چون تابع پیشنهاددهنده خالص است، ورودی یکسان همیشه خروجی یکسانی میدهد. دوم، ایمنی؛ یک عامل دچار توهم یا جیلبریک شده، فقط میتواند یک پیشنهاد بد بدهد، نه یک اقدام مخرب. سوم، ترکیبپذیری؛ عاملها هرگز مستقیماً یکدیگر را فراخوانی نمیکنند و جریان کار از طریق زیرلایه مدیریت میشود.
گردشکار گراف ثابت
این چارچوب به جای استفاده از حلقههای آزاد ReAct، از یک توالی ثابت از گرهها استفاده میکند. در این مدل، مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — فقط در جایی استفاده میشود که نیاز به قضاوت باشد و سایر مراحل توسط کدهای قطعی مدیریت میشوند. برای درک بهتر این سازوکار، میتوان به مدل ذهنی فنی برای مدیران محصول رجوع کرد که کالبدشکافی دقیقی از نحوه عملکرد این مدلها ارائه میدهد.
برای اجرای این ساختار، یک GraphState (از نوع TypedDict) در تمام گرهها جابهجا میشود. یک گراف استاندارد شامل ۱۲ گره مشترک است:
۱. ورود: ایجاد شناسه تصمیم و اتصال به هویت کاربر.
۲. پیشبررسی: اعتبارسنجی ورودیها و حذف درخواستهای نامعتبر.
۳. بارگذاری زمینه: بازیابی دقیق بخشهایی از داده که برای این تصمیم لازم است.
۴. تصمیم LLM: تنها گره غیرقطعی که در آن مدل استدلال میکند.
۵. حفاظ خروجی: پاکسازی دادههای حساس (PII) و اعمال فیلترهای سیاستی.
۶. تأیید: اجرای بررسیهای صحتِ قطعی (مثلاً تطبیق با یک لیست مجاز).
۷. داور: بررسی توسط مدل دوم برای تصمیمات حساس.
۸. ترکیب اطمینان: تجمیع سیگنالهای مدل، تأییدیه و داور در یک امتیاز نهایی.
۹. مسیردهی: تعیین مسیر بر اساس آستانه اطمینان (T).
۱۰. آمادهسازی پیشنهاد: شکلدهی نهایی شیء پیشنهاد برای زیرلایه.
۱۱. نوشتن حافظه: ثبت تاریخچه بازرسی عامل.
۱۲. خروج: ثبت یک ورودی تغییرناپذیر در دفتر کل.
حذف شکنندگی متنی
یکی از بزرگترین نقاط ضعف مدلها، بازگرداندن متن آزاد است. تحلیل متن با Regex ناپایدار است چون لحن مدلها تغییر میکند. راهکار استک اورفلو، محدود کردن مدل به خروجیهای ساختاریافته است:
- راهنمای طرحواره (Schema-guided): استفاده از JSON Schema.
- فراخوانی تابع (Function Calling): برای تصمیماتی که مستقیماً به یک اکشن متصلاند.
- رمزگشایی محدود به گرامر: برای تضمین سختافزاری در مدلهای محلی.
اگر مدل پاسخی نامعتبر بدهد، سیستم نباید حدس بزند. بلکه باید خطای اعتبارسنجی را به مدل برگرداند و دوباره تلاش کند. اگر پس از تعداد مشخصی تلاش (مثلاً ۲ بار) شکست خورد، سیستم باید در حالت «بسته» (Fail Closed) متوقف شده و استثنای NonConformingOutput را صادر کند.
دفتر کل تصمیمات تغییرناپذیر
هر تصمیم باید به عنوان یک ردیف تغییرناپذیر در جدول decision_ledger ثبت شود. این یک فایل لاگ ساده نیست، بلکه رکورد قانونی است که شامل نسخه مدل، نسخه پرامپت و دلیل تصمیم است. برای حفظ حریم خصوصی، ورودیها به جای ذخیره خام، هش (Hash) میشوند.
این دفتر کل باید فقط قابلیت «افزودن» (Append-only) داشته باشد. دسترسیهای UPDATE و DELETE باید لغو شوند. اگر تصمیمی نیاز به اصلاح دارد، ردیف جدیدی ایجاد میشود که ردیف قبلی را جایگزین میکند تا ردپای تغییرات کاملاً شفاف باشد.
مدیریت خودمختاری ضروری
برای کارهایی که نیاز به اکتشاف دارند، «حلقههای محدود» (Bounded Loops) به عنوان استثنا مجاز هستند. قانون این است: اگر ترتیب مراحل مشخص است از گراف ثابت استفاده کنید، اگر به اکتشاف وابسته است از حلقه محدود. این رویکرد در واقع پیادهسازی الگوی عاملهای محدود است که از تغییرات بازگشتی و مخرب در مدلهای محلی جلوگیری میکند.
این حلقهها با چهار حفاظ کنترل میشوند:
- سقف تکرار سخت: یک حلقه
forبا حداکثر تعداد گام (مثلاً ۶ گام) برای جلوگیری از حلقههای بینهایت. - لیست سفید ابزارها: دسترسی فقط به ابزارهای تعریفشده برای آن مهارت خاص.
- ردیابی کامل: ثبت هر تکرار به عنوان یک شیء
Stepبرای بازپخش دقیق. - خروجیهای استاندارد: خروجی حلقه باید از همان گرههای حفاظ و تأیید گراف ثابت عبور کند.
گام بعدی شما
- عاملهای فعلی خود را ممیزی کنید؛ هر جا عامل مستقیماً در دیتابیس مینویسد، سیستم شما غیرقطعی است.
- مدل «پیشنهاد-سپس-اجرا» (Propose-then-Apply) را جایگزین اجرای مستقیم کنید.
- برای تصمیمات حساس، یک گره «داور» (Judge) با مدل متفاوت اضافه کنید تا نرخ خطای تکمدلی کاهش یابد.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو