شما به زیر-عاملها (Sub-Agents) نیاز ندارید
بیشتر مردم معماریهای عامل (agent architectures) را مانند نمودارهای سازمانی ترسیم میکنند.
آنها یک Orchestrator (هماهنگکننده) را در بالا قرار میدهند. خطوطی به یک Researcher (پژوهشگر)، یک Coder (برنامهنویس) و یک Tester (تستر) میکشند. ظاهر تمیز و حرفهای دارد.
اما این یک اشتباه است.
در سال ۱۹۷۵، فرد بروکس نوشت که اضافه کردن افراد بیشتر به یک پروژه نرمافزاری که از برنامه عقب افتاده، آن را عقبتر میکند. این اتفاق به این دلیل میافتد که هزینههای ارتباطی سریعتر از پیشرفت کار رشد میکنند.
وقتی یک Swarm (دسته) از عاملها میسازید، همین اشتباه را تکرار میکنید.
هماهنگکننده تمام وقت خود را صرف مدیریت زیر-وظایف میکند. این کار باعث ایجاد سربار (overhead) عظیمی میشود. شما در حال ساختن یک معماری نیستید؛ در حال ساختن لولهکشی هستید.
دلیل شکست زیر-عاملها اینجاست:
- Context loss (از دست رفتن بافتار): یک زیر-عامل در پنجره مخصوص به خود اجرا میشود. نمیتواند تمام استدلالهای خود را به عامل والد منتقل کند و فقط یک خلاصه میفرستد.
- Expensive workarounds (راهکارهای پرهزینه): افراد عاملها را مجبور میکنند تا در فایلها یا git بنویسند تا فقط والد بتواند آنچه اتفاق افتاده را بخواند. شما در حال اختراع دوبارهی حافظه مشترک هستید، اما آن را کندتر میکنید.
- Token waste (اتلاف توکن): شما برای انتقال بافتار در هر مرز، هزینه پرداخت میکنید. یک دسته از N عامل، هزینه N+1 توکن را دارد.
- Conflicting decisions (تصمیمات متضاد): عاملهای موازی فرضهای متفاوتی دارند. اگر دو عامل یک چیز مشابه را بسازند، اغلب از سبکها یا منطقهای متفاوتی استفاده میکنند.
تحقیقات نشان میدهد که چارچوبهای چند-عاملی (multi-agent frameworks) نرخ شکست بین ۴۱٪ تا ۸۷٪ دارند. این شکستها به این دلیل رخ میدهند که عاملها بدون درک متقابل با هم صحبت میکنند. یک مدل بهتر این مشکل را حل نخواهد کرد. این یک مشکل هماهنگی است، نه یک مشکل مدل.
در عوض، چگونه باید بسازید؟
این دو قانون را دنبال کنید:
- اگر وظایف مستقل هستند، آنها را به عنوان حلقههای (loops) جداگانه اجرا کنید. از دو برنامه مجزا استفاده کنید. این پردازش موازی است، نه یک سیستم چند-عاملی.
- اگر وظیفه نیازمند یک رشته افکار واحد است، از یک حلقه واحد استفاده کنید.
یک حلقه واحد، تمام بافتار را در یک جا نگه میدارد. به راحتی خوداصلاحی (self-correct) میکند و به جای یک چت گروهی آشفته، یک تاریخچه تمیز به جا میگذارد.
ساختن شبکههای درهمتنیده (meshes) را متوقف کنید. ساختن حلقهها را شروع کنید.
Source: https://dev.to/tony__vi/you-dont-need-sub-agents-1eh7
Optional learning community: https://t.me/GyaanSetuAi