فراتر از حلقه عاملمحور: الگوی Orchestrator در TypeScript
بیشتر افراد سیستمهای چندعاملی (multi-agent systems) را با استفاده از یک حلقه عاملمحور (agentic loop) میسازند.
مدل زبانی بزرگ (LLM) به عنوان مغز و جریان کنترل عمل میکند. فکر میکند، ابزاری را فراخوانی میکند، مشاهده میکند و این روند را تکرار میکند. این روش برای اکتشاف (exploration) مناسب است، اما سه مشکل بزرگ ایجاد میکند:
- غیرقابل پیشبینی بودن: یک وظیفه ممکن است ۳ فراخوانی یا ۹ فراخوانی نیاز داشته باشد. تا زمانی که کد اجرا نشود، هرگز از تأخیر (latency) یا هزینه آن مطلع نمیشوید.
- غیرقطعی بودن (Non-determinism): یک سوال مشابه هر بار مسیرهای متفاوتی را طی میکند. این موضوع باعث میشود اعتماد به عاملهایی که دارای اثرات جانبی (side effects) هستند (مانند ثبت سفارش)، دشوار شود.
- قابلیت مشاهده (observability) ضعیف: عیبیابی (debugging) مستلزم بازپخش رونوشتهای نامنظم از استدلالها و فراخوانیهای ابزار است.
اگر عاملهای خود و عملکردهایشان را میشناسید، به جای آن از الگوی Orchestrator استفاده کنید.
الگوی Orchestrator تصمیمگیری را از اجرا جدا میکند و از سه مرحله متمایز استفاده میکند:
- مسیریابی (Route): یک فراخوانی LLM ابزارها را انتخاب میکند. این مرحله به کاربر پاسخ نمیدهد.
- اجرا (Execute): کدهای معمولی TypeScript عاملها را اجرا میکنند. در اینجا از هیچ LLM استفاده نمیشود.
- ترکیب (Synthesize): یک فراخوانی LLM دادهها را به یک پاسخ طبیعی تبدیل میکند.
این الگو سه حالت اجرا ایجاد میکند:
• تکعاملی (Single): یک عامل پرسوجو را مدیریت میکند.
• موازی (Parallel): چندین عامل مستقل به طور همزمان با استفاده از Promise.all اجرا میشوند. این کار باعث صرفهجویی در زمان میشود.
• ترتیبی (Sequential): عاملها به ترتیب اجرا میشوند. هر مرحله از نتایج مرحله قبل استفاده میکند.
با استفاده از این رویکرد، شما موارد زیر را به دست میآورید:
- برنامهای که میتوانید به آن اعتماد کنید: شما قبل از اجرای هر کدی، برنامه اجرایی را مشاهده میکنید.
- سرعت بالاتر: اجرای موازی چندین جستجو را به طور همزمان انجام میدهد.
- تست بهتر: میتوانید مرحله اجرا را بدون نیاز به API key به صورت unit test تست کنید.
- هزینههای قابل پیشبینی: هر درخواست دقیقاً از دو فراخوانی LLM استفاده میکند.
از حلقه عاملمحور (agentic loop) برای اکتشاف استفاده کنید. از Orchestrator برای سیستمهای عملیاتی (production) که به سرعت و قابلیت اطمینان نیاز دارند، استفاده کنید.
Optional learning community: https://t.me/GyaanSetuAi