مهندسی · تخلیه سهمیه توسط زیرعامل

چرا زیرعامل‌ها می‌توانند سهمیه یک هفته را در 30 دقیقه بسوزانند
هر رفت‌وبرگشت فراخوانی ابزار، کل تاریخچه را دوباره ارسال می‌کند

اجرای 5 زیرعامل به‌صورت موازی به مدت 30 دقیقه می‌تواند سهمیه را ده‌ها برابر سریع‌تر از یک مکالمه واحد تخلیه کند — چون هر رفت‌وبرگشت فراخوانی ابزار، کل تاریخچه مکالمه‌ای را که تا این لحظه انباشته شده دوباره ارسال می‌کند.

به‌روزرسانی شده 2026-11-14

یک کلید برای Claude، GPT و مدل‌های چینی — آنچه این صفحه توضیح می‌دهد را در عمل پیاده کنید.

#sub-agents#عامل‌های موازی#ارسال مجدد توکن#برآورد سهمیه

چهار واقعیت کلیدی

هر نوبت

تاریخچه کامل را دوباره ارسال می‌کند

بیشتر API‌های چندنوبتی/فراخوانی ابزار بی‌حالت هستند — هر درخواست باید prompt سیستم، همه پیام‌های قبلی و نتیجه هر فراخوانی ابزار پیشین را به‌عنوان ورودی دوباره ارسال کند.

N²

مصرف تجمعی تقریباً به‌صورت درجه دوم با تعداد نوبت‌ها رشد می‌کند

اگر یک وظیفه N دور فراخوانی ابزار طول بکشد و اندازه میانگین تاریخچه در هر دور به‌صورت خطی با تعداد دور رشد کند، مصرف تجمعی توکن تقریباً از مرتبه N به توان دو رشد می‌کند.

چند برابر شدن در حالت موازی

اجرای چندین زیرعامل به‌طور هم‌زمان آن را تشدید می‌کند

هر زیرعاملی که به‌صورت موازی اجرا می‌شود، تاریخچه خودش را مستقل نگه می‌دارد و دوباره ارسال می‌کند — M زیرعامل موازی تقریباً مصرف یک مکالمه واحد را در M ضرب می‌کند.

کش کردن ≠ رایگان

کش prompt در هزینه صرفه‌جویی می‌کند، نه لزوماً در سهمیه

کش prompt برخی ارائه‌دهندگان، هزینه صورت‌حساب‌شده پیشوندهای تکراری را کاهش می‌دهد، اما محدودیت‌های نرخ درخواست/سهمیه معمولاً همچنان بر اساس توکن‌های پردازش‌شده واقعی محاسبه می‌شوند — کش کردن را درمان همه‌جانبه مشکلات سهمیه ندانید.

آنچه واقعاً پشت ارسال مجدد توکن قرار دارد

بیشتر API‌های مکالمه‌ای/عامل‌محور رایج «بی‌حالت» هستند — هر درخواست باید زمینه کامل (prompt سیستم، همه پیام‌های تا این لحظه، ورودی و خروجی هر فراخوانی ابزار) را حمل کند؛ خود مدل درخواست قبلی را به یاد نمی‌آورد. این یعنی برای وظیفه‌ای که به N دور فراخوانی ابزار نیاز دارد، دور 1 فقط زمینه اولیه را می‌فرستد، دور 2 هم باید نتایج دور 1 را در بر بگیرد، و دور N باید همه‌چیز را از تمام N-1 دور قبلی در بر بگیرد — توکن‌های تجمعی ارسال‌شده تقریباً به‌صورت درجه دوم با تعداد دورها رشد می‌کنند، نه به‌صورت خطی. این دلیل ریشه‌ای آن است که وظایف طولانی و حلقه‌های عامل‌محور چندنوبتی به‌ویژه پرمصرف از نظر سهمیه هستند.

چرا زیرعامل‌های موازی این موضوع را بسیار محسوس‌تر می‌کنند

وقتی چندین زیرعامل را به‌صورت موازی راه می‌اندازید تا روی زیرکارهای مختلف کار کنند، هر کدام به‌طور مستقل همین رقص «ارسال مجدد تاریخچه» را انجام می‌دهد، معمولاً هم‌زمان — انباشته شدن مصرف توکن در یک بازه کوتاه به‌راحتی می‌تواند از چند برابر تا ده‌ها برابر مصرف یک مکالمه واحد برسد. این ریشه فنی واقعی شکایت رایج است: «چند عامل موازی را اجرا کردم و سهمیه یک هفته را در 30 دقیقه سوزاندم.»

خط زمانی

در جریان

ارسال مجدد تاریخچه کامل در هر دور توسط API‌های بی‌حالت، از دیرباز معماری رایج API‌های مکالمه‌ای/عامل‌محور بوده است.

اخیراً

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

در جریان

تکنیک‌هایی مانند کش prompt هزینه صورت‌حساب را کاهش می‌دهند، اما محاسبات سهمیه/محدودیت نرخ درخواست معمولاً به همان نسبت تسهیل نشده‌اند.

تأییدشده در برابر برداشت نادرست رایج

تأییدشده

بی‌حالت بودن API‌های چندنوبتی/عامل‌محور رایج، و مصرف تجمعی تقریباً درجه دوم ناشی از ارسال مجدد تاریخچه کامل در هر دور، رفتارهای عمومی و مستندشده این نوع معماری API هستند که در مستندات رسمی و بحث‌های توسعه‌دهندگان به‌طور مستمر توصیف می‌شوند.

برداشت نادرست رایج

بسیاری تصور می‌کنند «استفاده از کش prompt یعنی سریع به محدودیت سهمیه نمی‌رسم» — کش عمدتاً بر هزینه صورت‌حساب اثر می‌گذارد؛ محدودیت‌های سهمیه/نرخ درخواست معمولاً همچنان بر اساس توکن‌های پردازش‌شده واقعی یا ویژگی‌های درخواست محاسبه می‌شوند، بنابراین نمی‌توانید برای کنترل تخلیه سهمیه کاملاً به کش تکیه کنید.

چگونه مصرف را برآورد و کاهش دهیم

چگونه برآورد کنیم

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

چگونه آن را کاهش دهیم

تاریخچه را به‌طور دوره‌ای خلاصه/فشرده کنید، به‌جای نگه‌داشتن همه‌چیز بدون تغییر فقط نتایج فراخوانی ابزاری را نگه دارید که وظیفه واقعاً به آن‌ها نیاز دارد، و تعداد زیرعامل‌های موازی و حداکثر تعداد دور برای هر زیرعامل را محدود کنید — همه این‌ها تاکتیک‌های رایج کاهش مصرف هستند.

در عمل چه باید کرد

اول، برای حداکثر تعداد دورهای فراخوانی ابزار در هر وظیفه سقف تعیین کنید — وقتی به آستانه‌ای رسید، به‌جای انباشتن نامحدود، خلاصه‌سازی/فشرده‌سازی تاریخچه را فعال کنید. دوم، فقط بخش‌هایی از نتایج فراخوانی ابزار را که وظیفه واقعاً به آن نیاز دارد نگه دارید، به‌جای اینکه کل گزارش‌ها/خروجی خام را در زمینه بگنجانید. سوم، تعداد زیرعامل‌هایی را که هم‌زمان موازی اجرا می‌شوند محدود کنید، یا زیرعامل‌های غیرحیاتی را به مدلی ارزان‌تر با زمینه کوتاه‌تر اختصاص دهید. چهارم، مصرف سهمیه را به‌عنوان ورودی برنامه‌ریزی وظیفه در نظر بگیرید — از پیش تقریباً تخمین بزنید یک وظیفه پیچیده چقدر سهمیه مصرف می‌کند، نه اینکه تازه بعد از شروع اجرا بفهمید در آستانه رسیدن به محدودیت هستید.

در QCode چه باید کرد

زیرعامل‌های موازی می‌توانند به‌راحتی سهمیه یک مدل را در یک بازه کوتاه پر کنند؛ مسیریابی زیرعامل‌های مختلف از طریق یک کلید QCode به خانواده‌های مدل متفاوت، فشار سهمیه را پخش می‌کند، تا رسیدن یک مدل به محدودیت باعث توقف کل وظیفه چندعاملی نشود.

پرسش‌های متداول

چرا زیرعامل‌ها سهمیه را بسیار سریع‌تر از یک مکالمه واحد مصرف می‌کنند؟

هر زیرعامل تاریخچه مکالمه خودش را به‌طور مستقل نگه می‌دارد و دوباره ارسال می‌کند، بنابراین M زیرعامل موازی مصرف یک مکالمه واحد را تقریباً در M ضرب می‌کند؛ اگر مصرف تجمعی خود یک زیرعامل هم که از قبل با تعداد دورها تقریباً به‌صورت درجه‌دوم رشد می‌کند به آن اضافه شود، مصرف در بازه کوتاه به‌طور چشمگیری تقویت می‌شود.

آیا کش prompt می‌تواند این مشکل را حل کند؟

هزینه صورت‌حساب‌شده پیشوندهای تکراری را کاهش می‌دهد، اما سهمیه/محدودیت نرخ درخواست معمولاً همچنان بر اساس توکن‌های واقعی پردازش‌شده یا ویژگی‌های درخواست محاسبه می‌شود — نمی‌توانید کاملاً به کش تکیه کنید تا از رسیدن به محدودیت جلوگیری کنید.

چگونه می‌توانید به‌طور تقریبی تخمین بزنید یک وظیفه چقدر سهمیه مصرف می‌کند؟

تعداد مورد انتظار دورهای فراخوانی ابزار و میانگین اندازه تاریخچه در هر دور را تخمین بزنید و آن را تقریباً به‌صورت درجه‌دوم برآورد کنید، نه یک «مصرف هر دور × تعداد دورها» ساده.

آیا محدود کردن تعداد زیرعامل‌های موازی به کارایی وظیفه آسیب می‌زند؟

یک بده‌بستان وجود دارد — موازی‌سازی بیشتر وظیفه را سریع‌تر تمام می‌کند، اما فشار مصرف سهمیه را در یک بازه کوتاه هم بالا می‌برد؛ باید این را با سهمیه باقی‌مانده و فوریت وظیفه بسنجید.

آیا هر چارچوب عاملی این مشکل را دارد؟

در اصل، هر چارچوب عاملی که بر APIهای مکالمه‌ای بدون حالت رایج ساخته شده باشد این ویژگی را دارد؛ هرچه راهبرد فشرده‌سازی/خلاصه‌سازی تاریخچه یک چارچوب بهتر باشد، مصرفی که واقعاً احساس می‌کنید کمتر است، اما علت معماری زیربنایی مشترک است.

وقتی یک وظیفه چندعاملی در حال اجرا به محدودیت سهمیه می‌رسد، چه اتفاقی می‌افتد؟

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

منابع

این واقعیت معماری که APIهای مکالمه‌ای/عاملی بدون حالت، تاریخچه کامل را در هر دور دوباره ارسال می‌کنند، به‌صورت عمومی مستند شده و در مستندات ارائه‌دهندگان اصلی مدل و جوامع توسعه‌دهندگان به‌طور یکسان توصیف می‌شود؛ این صفحه هیچ ادعایی درباره پیاده‌سازی خصوصی هیچ ارائه‌دهنده واحدی مطرح نمی‌کند. گردآوری‌شده در 2026-08-27.

نگذارید یک وظیفه چندعاملی روی یک سهمیه واحد گیر کند

یک کلید QCode زیرعامل‌های مختلف را به مدل‌های مختلف مسیریابی می‌کند و فشار سهمیه را پخش می‌کند.

مطمئن نیستید از کجا شروع کنید؟

یک هفته امتحان کنید

بسته کوچک: $4 برای $30 سهمیه، به مدت 7 روز معتبر

هر روز از آن استفاده کنید

Starter: $9.00/ماه با $5 سهمیه در هر روز — فقط $0.060 به‌ازای هر $1 سهمیه، در برابر حدود $0.113 برای بسته متوسط