وقتی چتباتها اشتباه کنند، صرفاً پاسخی اشتباه مینویسند؛ اما خطای یک ایجنت خودمختار، صورتحسابی سنگین روی دست توسعهدهنده میگذارد. در معماریهای نوین، افتادن ایجنت در حلقههای نامتناهی استدلال یا استعلامهای پیاپی ابزارها، آسیبی با عنوان محرومسازی کیف پول (Denial of Wallet) ایجاد میکند که هزینههای مصرف API را ناگهان چندبرابر میکند.
برای برنامهنویسان ایرانی با توجه به اینکه پرداخت مستقیم ارزی برای سرویسهای خارجی مثل OpenAI یا Anthropic با کارتهای بانکی داخلی ممکن نیست و شارژ حساب از مسیرهای واسط یا گیتویهای ارزی انجام میشود، هدررفت اعتبار بسیار دردناکتر است. پایان ناگهانی موجودی ارزی حساب API، سرویس زنده را بیدرنگ متوقف میکند.
در این درس یاد میگیرید چطور با طراحی یک «پشتهی مهار هزینه» چندلایه متشکل از سقف تکرار (max_turns)، سقف مصرف توکن، چکپوینتهای نظارت انسانی و محدودیت شتاب مالی، ایجنتهای خود را ایمن کنید تا حتی در صورت بروز باگ یا حلقههای نامنتظره، هزینههای زیرساخت مهار شوند.
هزینهی ماهانهی مدل زبانی در یک ایجنت تجارت الکترونیکِ متوسط، پس از فعالسازی قابلیت «رهگیری سفارش» (order-tracking) توسط تیم توسعه، از 1200 دلار به 4800 دلار جهش کرد. این یک باگ در قیمتگذاری نیست؛ ایجنتی است که وارد یک حلقهی جدید شده و بیوقفه درون آن هزینه تراشیده است. جعبهابزار حاکمیت ایجنت مایکروسافت (2 آوریل 2026) لایههای دفاعی در برابر این دسته از مشکلات را مدون کرده است: محدودیت
max_tokensبه ازای هر درخواست، سهمیهی توکن و دلاری به ازای هر وظیفه، سقفهای روزانه و ماهانه، سقف تعداد تکرار، مسیریابی مدل چندسطحی، کش کردن پرامپت، پنجرهبندی بافتار، چکپوینتهای انسان در چرخه (HITL) برای اقدامات پرهزینه و سوئیچهای قطع اضطراری هنگام نقض بودجه. کیت توسعهی نرمافزار ایجنت Claude Code متعلق به Anthropic نیز همین سازوکارهای پایهای را با نامهای متفاوتی عرضه میکند. محدودیتهای شتاب مالی — مثلاً قطع دسترسی در صورت مصرف بیش از 50 دلار در 10 دقیقه — حلقهها را بسیار سریعتر از سقفهای ماهانه به دام میاندازند.
صورتمسئله
ایجنتهای خودمختار در هر نوبت گفتوگو پول واقعی خرج میکنند. خروجی بدِ یک چتبات نهایتاً پاسخی نامناسب است؛ اما حلقهی معیوب یک ایجنت، صورتحسابی سنگین روی دستتان میگذارد. اصطلاح رایج در صنعت برای این حالت شکست، «محرومسازی کیف پول» (Denial of Wallet) است؛ ایجنت مدام استدلال میکند، ابزارها را فراخوانی میکند، هزینه میتراشد و هیچ ترمزی جلویش را نمیگیرد، چون اصلاً سازوکاری برای مهارش طراحی نشده است.
راهکار این مشکل تعیین یک عددِ تنها نیست، بلکه چیدن پشتهای از محدودیتها در مقیاسهای زمانی و سطوح دانهبندی متفاوت است: به ازای هر درخواست، به ازای هر وظیفه، به ازای هر ساعت، به ازای هر روز و به ازای هر ماه. یک پشتهی درستطراحیشده، حلقهی لجامگسیخته را در عرض چند دقیقه، نشتیِ آرام را ظرف چند ساعت و انتشار یک نسخهی معیوب را طی یک روز مهار میکند. همین پشته به ایجنت خودمختار با افق زمانی طولانی اجازه میدهد اصلاً بودجهاش را حفظ کند و از مدار خارج نشود.
این یک درس مهندسی است: محاسبات ریاضی آن بسیار سادهاند؛ جایی که تیمها شکست میخورند، رعایت انضباط است. تمام محدودیتهای فهرست زیر یا در جعبهابزار حاکمیت ایجنت مایکروسافت آمدهاند یا در مستندات Agent SDK در Claude Code شرکت Anthropic.
مفاهیم پایه
پشتهی مهار هزینهها
- محدودیت
max_tokensبه ازای هر درخواست. سازوکاری ساده که جلوی تولید خروجی بیپایان در یک فراخوانی را میگیرد. - سهمیهی توکن به ازای هر وظیفه. در کل فرایند اجرا، مصرف نباید از N توکن فراتر برود؛ با رسیدن به سقف، کار بلافاصله متوقف میشود.
- سهمیهی دلاری به ازای هر وظیفه. همان منطق توکن اما بر حسب پول واقعی؛ که در Claude Code با عنوان
max_budget_usdشناخته میشود. - سقف فراخوانی به ازای هر ابزار. حداکثر N بار فراخوانی برای
WebFetch، نهایتاً N بار برایshell_execو به همین ترتیب. - سقف تکرار (
max_turns). کل دورهای حلقهی ایجنت که از افتادن در حلقههای استدلال بیپایان جلوگیری میکند. - سقف دقیقهای / ساعتی / روزانه / ماهانه. پنجرههای زمانی لغزان که نشتیها را در مقیاسهای زمانی متفاوت به دام میاندازند.
- محدودیت شتاب مالی. مثلاً «اگر هزینه در 10 دقیقه از 50 دلار بیشتر شد، دسترسی را قطع کن». این ترمز، سوختن بودجه در حلقهها را بسیار پیش از فعال شدن سقفهای ماهانه متوقف میکند.
- مسیریابی مدل چندسطحی. بهصورت پیشفرض از مدل کوچکتر استفاده کنید و کار را تنها زمانی به مدل بزرگتر ارتقا دهید که یک دستهبند تشخیص دهد وظیفه به آن نیاز دارد.
- کش کردن پرامپت. پرامپت سیستم و بافتار پایدار در کشِ ارائهدهنده ذخیره میشوند؛ به این ترتیب، هزینهی توکن برای ارسال مجدد تقریباً به صفر میرسد.
- پنجرهبندی بافتار. فشردهسازی و خلاصهسازی برای نگهداشتن بافتار فعال زیر یک آستانهی معین که مستقیماً هزینهی توکن را کاهش میدهد.
- چکپوینتهای HITL روی اقدامات گران. قبل از هر اقدامی که پرهزینه بودنش مسجل است (فراخوانی ابزاری طولانی، دانلود فایلی حجیم، ارتقا به مدلی گران)، سیستم باید تأیید دستی یک انسان را درخواست کند.
- سوئیچ قطع اضطراری هنگام نقض بودجه. با عبور از هر سقفی، نشست متوقف میشود. مورد نقضشده ثبت میگردد و فعالسازی مجدد آن نیازمند مسیری مستقل و مشخص خواهد بود.
چرا پشته، و نه فقط یک سقف؟
یک سقف ماهانهی تنها، زمانی متوجه رفتار لجامگسیختهی ایجنت میشود که کار از کار گذشته و جیبتان خالی شده است. از سویی دیگر، یک سقف ساده به ازای هر درخواست نیز هیچ نظارتی روی سطح نشست ندارد. حالتهای مختلف شکست به مقیاسهای زمانی متفاوتی نیاز دارند:
- حلقهی لجامگسیخته (ایجنت در چرخهی تلاش مجددِ 5 ثانیهای گیر افتاده): با محدودیت شتاب مهار میشود.
- نشتی آرام (ایجنت در هر وظیفه حدود 2 برابرِ حجم کار موردانتظار مصرف میکند): با سقف روزانه مهار میشود.
- انتشار نسخهی معیوب (نسخهی جدید 5 برابر توکن میسوزاند): با سقف هفتگی یا ماهانه شناسایی میشود.
- افزایش ناگهانی و واقعی ترافیک (تقاضای واقعی بازار و نه باگ نرمافزاری): با سقف ساعتی یا روزانه همراه با لاگ دقیق شفافسازی میشود.
سطح بودجهبندی در بستر آزمایشی
کیت توسعهی ایجنت Claude Code این متغیرها را در مستندات عمومی خود ارائه میدهد:
max_turns— سقف تکرار حلقه.max_budget_usd— سقف دلاری؛ با نقض آن نشست متوقف میشود.allowed_tools/disallowed_tools— فهرست سفید و سیاه ابزارها.- قلابها (Hooks) پیش از فراخوانی ابزار برای ثبت و حسابرسی اختصاصی هزینهها.
این موارد را با نردبان سطوح دسترسی (درس 10) ترکیب کنید. اجرای یک نشست در حالت autoMode بدون تنظیم max_budget_usd، یعنی خودمختاریِ مهارنشده. Anthropic صراحتاً تأکید میکند که حالت Auto Mode نیازمند کنترلهای بودجه است؛ سازوکار دستهبند مستقل از مدیریت هزینه کار میکند.
قانون هوش مصنوعی اتحادیه اروپا و OWASP Agentic Top 10
جعبهابزار حاکمیت ایجنت مایکروسافت، بندهای OWASP Agentic Top 10 و الزامات مادهی 14 قانون هوش مصنوعی اتحادیه اروپا (نظارت انسانی) را پوشش میدهد. برای سیستمهایی که در محیط عملیاتی (پروداکشن) اروپا مستقر میشوند، ثبت لاگ و اعمال سقفها اختیاری نیست، بلکه الزامی است.
نمونهی واقعی جهش 1200 دلاری به 4800 دلار
یک نمونهی واقعی که در مستندات مایکروسافت آمده است: هزینهی ماهانهی یک ایجنت تجارت الکترونیک بعد از اضافهشدن یک ابزار جدید 4 برابر شد. این ابزار به ایجنت اجازه میداد در هر نشست وضعیت سفارش را مدام استعلام کند. هیچ مکانیزمی برای تشخیص حلقه پیادهسازی نشده بود؛ سقف مصرفی به ازای هر ابزار وجود نداشت و هیچ هشداری هم برای رشد هزینهها نسبت به هفتهی قبل ثبت نمیشد. راهکار نهایی، تعیین سقف مصرف به ازای هر ابزار و ارسال هشدار بر اساس رشد روزانه بود. این تجربه یک الگو به ما میدهد: هر سطح ابزارِ تازه، یک حلقهی بالقوهی جدید است؛ پس هر ابزار جدید به سقف مصرف و هشدار اختصاصی خودش نیاز دارد.
استفاده از ابزارهای واقعی
فایل code/main.py اجرای یک ایجنت را در دو حالتِ با و بدون پشتهی لایهبندیشدهی مهار هزینه شبیهسازی میکند. ایجنت شبیهسازیشده بعد از چند نوبت گفتوگو وارد حلقهی استعلام مداوم میشود؛ پشتهی چندلایه، آن را در همان پنجرهی شتاب به دام میاندازد، در حالی که اگر فقط یک سقف ماهانه تعیین کرده بودید، روزها طول میکشید تا سیستم فعال شود.
خروجی این درس
فایل outputs/skill-agent-budget-audit.md پشتهی مهار هزینهی یک سناریوی پیشنهادی برای استقرار ایجنت را ارزیابی کرده و لایههای غایب را مشخص میکند.
تمرینها
-
اسکریپت
code/main.pyرا اجرا کنید. بررسی کنید که محدودیت شتاب چگونه در مسیر یک حلقهی استعلامی، قبل از رسیدن به سقف تکرار فعال میشود. حالا محدودیت شتاب را خاموش کنید و بسنجید که ایجنت پیش از رسیدن به سقف تکرار، چقدر هزینه میتراشد. -
مجموعهای از سقفهای مصرف به ازای ابزار را برای یک ایجنت مرورگر وب (درس 11) طراحی کنید. کدام ابزار به سختگیرانهترین سقف نیاز دارد؟ کدام ابزار میتواند بدون ریسک بهصورت نامحدود اجرا شود؟
-
مستندات جعبهابزار حاکمیت ایجنت مایکروسافت را بخوانید. تمام انواع سقفهای نامبرده در آن را فهرست کنید. هر کدام را به یکی از حالتهای شکست (حلقهی لجامگسیخته، نشتی آرام، انتشار معیوب، افزایش ناگهانی ترافیک) نگاشت کنید.
-
هزینهی یک اجرای شبانهی بدون نظارت را برای وظیفهای واقعی (مثلاً «بررسی و اولویتبندی 50 ایشو در یک مخزن گیتهاب») برآورد کنید. مقدار
max_budget_usdرا معادل 2 برابر تخمین اولیهتان بگذارید. دلیل در نظر گرفتن این ضریب 2 برابری را توجیه کنید. -
متغیر
max_budget_usdدر Claude Code روی هزینهی کل نشست اعمال میشود. یک محدودیت شتاب مکمل طراحی کنید که بتوانید آن را بهصورت بیرونی اعمال کنید. چه شرایطی باعث قطع اتصال میشود و روند فعالسازی مجدد به چه صورت خواهد بود؟
اصطلاحات کلیدی
| اصطلاح | چیزی که معمولاً میگویند | معنای واقعی آن |
|---|---|---|
| Denial of Wallet | «قبض نجومی» | حلقهی ایجنت که بیوقفه پول میسوزاند و سقفی برای توقف آن نیست |
| max_tokens | «سقف هر درخواست» | حداکثر طول مجاز برای یک پاسخِ تکمرحلهای |
| max_turns | «سقف تکرار» | حداکثر تکرارهای حلقهی ایجنت در طول یک نشست |
| max_budget_usd | «سوئیچ قطع اضطراری دلاری» | سقف هزینهی نشست؛ با نقض آن نشست متوقف میشود |
| Velocity limit | «سقف نرخ مصرف» | محدودیت هزینه در پنجرهی زمانی کوتاه (مثلاً 50 دلار در 10 دقیقه) |
| Tiered routing | «اول مدل کوچک» | استفادهی پیشفرض از مدل ارزان؛ ارتقا تنها با نظر دستهبند |
| Prompt caching | «کش پرامپت سیستم» | کش سمت ارائهدهنده که هزینهی ارسال مجدد توکن را به نزدیک صفر میرساند |
| HITL checkpoint | «دروازهی تأییدیه انسان» | الزام به تأیید کاربر پیش از اجرای عملیات پرهزینه |
برای مطالعهی بیشتر
- Anthropic Claude Code Agent SDK — حلقهی ایجنت و بودجهها — متغیرهای
max_turns،max_budget_usdو فهرستهای مجاز ابزار. - Microsoft Agent Framework — انسان در چرخه و حاکمیت — چکپوینتهای مهار هزینه.
- Anthropic — نمای کلی ایجنتهای مدیریتشدهی Claude — کنترلهای هزینه در سمت ارائهدهنده.
- Anthropic — کش کردن پرامپت (مستندات Claude API) — سازوکارهای فنی سیستم کش.
- Anthropic — سنجش عملی استقلال ایجنت — الگوی هزینهها برای ایجنتهای با افق زمانی طولانی.
