ساخت یک تیم عامل خودمختار
من یک تیم کوچک از عاملها (agents) ساختم تا گردش کار مهندسی خودم را بازسازی کنم. این تیم همه چیز را، از خواندن یک وظیفه گرفته تا ارسال یک شاخه (branch) قابل بازبینی، مدیریت میکند.
این گردش کار مراحل زیر را دنبال میکند:
- شفافساز (Clarifier): بررسی میکند که آیا وظیفه به اندازه کافی مشخص هست یا خیر.
- برنامهریز (Planner): کدبیس را بررسی کرده و یک برنامه اجرایی مینویسد.
- اجراکننده (Implementer): برنامه را اجرا کرده و کدها را در بخشهای کوچک (chunks) کامیت میکند.
- بازبین (Reviewer): باگها و مشکلات مربوط به سبک کدنویسی (style) را پیدا میکند.
- آزمایشگر (Tester): تستها و لینترها (linters) را برای اطمینان از پایداری اجرا میکند.
راز اصلی، ارتباط ساختاریافته است.
عاملها با یکدیگر چت نمیکنند. آنها توکنهای ساختاریافتهای مانند PLAN_WRITTEN یا REVIEW_RESULT صادر میکنند. ارکستراتور (orchestrator) این توکنها را تجزیه میکند تا مرحله بعدی را هدایت کند. این کار سیستم را سریعتر و ارزانتر میکند و از توهم (hallucination) جلوگیری مینماید.
هر عامل نقش و مدل خاص خود را دارد:
• برنامهریز (Opus): استدلال عمیق برای تعیین مسیر فایلها و تغییرات دقیق کد.
• اجراکننده (Sonnet): از برنامه پیروی میکند یا موانع مشخص در بازبینی را برطرف میکند.
• بازبین (Sonnet): کد را با شاخه اصلی (base branch) مقایسه میکند. برای جلوگیری از ایجاد نویز، از آستانه اطمینان ۸۰٪ استفاده میکند.
• آزمایشگر (Haiku): دستورات Go مانند vet ،test و lint را اجرا میکند.
انتخابهای کلیدی طراحی برای قابلیت اطمینان:
- یک وظیفه برای هر عامل: این کار منطق سیستم را ساده نگه میدارد.
- قراردادهای خروجی ثابت: این کار نیاز به فراخوانیهای اضافی LLM برای استخراج هدف را از بین میبرد.
- حلقه بازبینی-تلاش مجدد: سیستم تا دو بار اجازه تلاش برای رفع موانع را میدهد.
- بهینهسازی مدل: من برای برنامهریزی از مدلهای گرانقیمت و برای تست از مدلهای ارزانتر استفاده میکنم تا در هزینهها صرفهجویی شود.
شما میتوانید حلقههای تکراری خود را خودکارسازی کنید. فقط کافی است آنها را مکتوب کنید.
Optional learning community: https://t.me/GyaanSetuAi