Google’s Agent Development Kit (ADK) offers two main ways to manage tasks.

مسیریابی پویا میان چند عامل (Dynamic Multi-Agent Routing)

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

  • نحوه عملکرد – هماهنگ‌کننده یک متخصص را انتخاب کرده، وظیفه را ارسال می‌کند و سپس پیش از ادامه کار، منتظر پاسخ می‌ماند.
  • مزایا – انعطاف‌پذیری در این مدل بسیار بالاست. از آنجایی که LLM مسیر را در زمان اجرا (runtime) انتخاب می‌کند، سیستم بدون نیاز به بازنویسی جریان کار، با ورودی‌های جدید یا غیرمنتظره سازگار می‌شود.
  • معایب – هر مرحله (hop) باعث افزایش بار اضافی شبکه و پردازش می‌شود، بنابراین تأخیر (latency) در مقایسه با یک خط لوله (pipeline) مستقیم، افزایش می‌یابد.

حلقه‌های جریان کار متوالی (Sequential Workflow Loops)

مدل حلقه‌ای، هماهنگ‌کننده را با یک LoopAgent واحد جایگزین می‌کند که مراحل را طبق یک توالی از پیش تعیین‌شده طی کرده و یک وضعیت نشست (session state) قابل تغییر را به اشتراک می‌گذارد.

  • نحوه عملکرد – عامل‌ها یک کلید مشترک را می‌خوانند، آن را به‌روزرسانی می‌کنند و کنترل را به مرحله بعد می‌سپارند تا زمانی که توالی به پایان برسد.
  • مزایا – پیش‌بینی‌پذیری. ترتیب مراحل هرگز تغییر نمی‌کند، که این امر عیب‌یابی (debugging) و تنظیم عملکرد (performance tuning) را ساده می‌کند.
  • معایب – صلب بودن (Rigidity). هرگونه نیاز به انحراف از ترتیب ثابت، مستلزم بازطراحی کل حلقه است.

آزمایش عملی: تجزیه‌کننده عبارات ریاضی (Math Expression Parser)

برای مشاهده این الگوها در عمل، ما یک تجزیه‌کننده ساده ساختیم که عبارات محاسباتی را با استفاده از چهار عامل متخصص ارزیابی می‌کند: adder (جمع‌کننده)، subtracter (تفریق‌کننده)، multiplier (ضرب‌کننده) و divider (تقسیم‌کننده).

درس‌هایی از حلقه جریان کار

  1. جلوگیری از حلقه‌های بی‌نهایت – ما به هر عامل دستور دادیم که بلافاصله پس از به‌روزرسانی وضعیت مشترک، متن خروجی داده و نوبت خود را تمام کند. بدون این محافظ، حلقه ممکن است تا ابد در چرخه باقی بماند.
  2. حفظ منطق ریاضی – ما به عامل adder دستورالعمل صریحی دادیم تا ترتیب عملیات را رعایت کند و از نقض قوانین تفریق جلوگیری کنیم.
  3. اجتناب از خروج‌های بی‌صدا – ما عامل‌ها را مجبور کردیم که قبل از فراخوانی ابزار خروج (exit tool)، نتیجه نهایی را چاپ کنند تا کاربر به جای یک قطع ناگهانی، نتیجه را مشاهده کند.

مدیریت خطا

ما یک محافظ برای جلوگیری از تقسیم بر صفر در مقابل عامل متخصص divider اضافه کردیم. این محافظ ابتدا مقسوم‌علیه را بررسی می‌کند؛ اگر صفر باشد، فرآیند را متوقف می‌کند و از بروز استثنا در زمان اجرا (runtime exception) در کل سیستم جلوگیری می‌کند.

کدام الگو برای پروژه شما مناسب است؟

  • مسیریابی میان چند عامل (Multi-Agent Routing) را انتخاب کنید زمانی که وظایف به صورت پویا تغییر می‌کنند، ورودی‌ها بسیار متنوع هستند، یا نیاز دارید که LLM بهترین متخصص را در زمان اجرا انتخاب کند. هزینه این کار افزایش تأخیر است، اما سیستم سناریوهای پیش‌بینی‌نشده را بدون تغییر در کد مدیریت می‌کند.
  • حلقه‌های جریان کار (Workflow Loops) را انتخاب کنید زمانی که یک خط لوله (pipeline) کاملاً تعریف‌شده دارید — برای مثال پاکسازی داده‌ها، تبدیل و تجمیع — که در آن هر مرحله باید با ترتیبی دقیق انجام شود. مزیت این روش تأخیر کمتر و عیب‌یابی آسان‌تر است، اما به قیمت عدم توانایی در ایجاد شاخه‌های پویا.