قابلیت Sub-Agent در Laravel AI SDK
خلاصهٔ کاملتر
Laravel AI SDK بهروزرسانی مهمی گرفته: حالا میشه ایجنتها رو به عنوان ابزار (tool) به ایجنتهای دیگه داد. این قابلیت که بهش Sub-Agent میگن، SDK رو تبدیل به یه لایهی ارکستراسیون واقعی میکنه — یعنی دیگه لازم نیست خودت یه روتر دستی بنویسی.
در اپهای واقعی، یه ایجنت عمومی معمولاً کافی نیست. مثلاً یه ایجنت پشتیبانی مشتری برای پاسخ به سوالات استرداد وجه، به دستورالعملها، ابزارها، و شاید حتی مدل متفاوتی نسبت به سوالات صورتحساب نیاز داره. Sub-Agent این تفکیک رو به یه مفهوم اولدرجه تبدیل میکنه.
استفاده ازش سادهست: کافیه توی متد tools() ایجنت والد، یه نمونه از ایجنت فرزند برگردونی. ایجنت والد وقتی لازم شد، وظیفه رو به اون تفویض میکنه و جواب رو در پاسخ نهایی استفاده میکنه:
public function tools(): iterable
{
return [
new RefundsAgent,
];
}هر Sub-Agent کاملاً مستقله و تنظیمات مخصوص خودش رو داره: دستورالعملها و system prompt جداگانه، ابزارهای اختصاصی (مثلاً RefundsAgent به LookupOrder دسترسی داره ولی ایجنت والد نه)، و حتی مدل و پروایدر متفاوت — مثلاً میشه ایجنت فرزند رو با #[Provider(Lab::Anthropic)] روی Anthropic پین کرد در حالی که والد روی OpenAI کار میکنه.
برای کنترل بیشتر، میشه اینترفیس CanActAsTool رو روی ایجنت فرزند پیادهسازی کرد تا name() و description() سفارشی تعریف کنی — همون چیزیه که ایجنت والد میبینه. اگه این کار رو نکنی، Laravel از نام کلاس و یه توضیح پیشفرض استفاده میکنه.
یه نکتهی مهم اینه که هر Sub-Agent در ایزولاسیون کامل اجرا میشه و هیچ دسترسی به تاریخچهی مکالمهی ایجنت والد نداره. پس ایجنت والد باید یه توضیح شفاف و مستقل به فرزند بده تا بتونه کارش رو درست انجام بده.
نکات کلیدی:
- Laravel AI SDK حالا از Sub-Agent پشتیبانی میکنه
- ایجنتهای فرزند رو توی متد
tools()برمیگردونی - هر Sub-Agent میتونه پروایدر، مدل، و ابزارهای مجزا داشته باشه
- اینترفیس
CanActAsToolبرای سفارشیسازی نام و توضیح ایجنت فرزند استفاده میشه - Sub-Agent به تاریخچه مکالمهی والد دسترسی نداره؛ باید وظیفه رو واضح بهش بدی




