ایجنت‌ها

Multi-agent systems

Multi-agent systems — راهنمای فارسی از مجموعهٔ «ایجنت‌ها» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ ۴ دقیقه مطالعه
تصویر مقالهٔ Multi-agent systems

یه ایجنت AI می‌تونه یه کار مشخص رو انجام بده — جستجو کنه، کد بنویسه، ایمیل بفرسته. ولی وقتی یه کار پیچیده داری که نیاز به چندین مهارت موازی داره، یه ایجنت به‌تنهایی کافی نیست. اینجاست که سیستم‌های چندایجنتی (multi-agent systems) وارد می‌شن.

یه ایجنت در مقابل چندتا ایجنت

تصور کن می‌خوای یه گزارش تحقیقاتی ۲۰ صفحه‌ای بنویسی. اگه یه ایجنت تنها این کار رو بکنه:

  • باید به‌صورت ترتیبی کار کنه (یه بخش، بعد بخش بعدی)
  • پنجرهٔ زمینه‌اش محدوده
  • اگه در یه مرحله اشتباه کنه، ممکنه کل کار خراب بشه

در یه سیستم multi-agent:

  • یه ایجنت «مدیر» وظایف رو تقسیم می‌کنه
  • چندین ایجنت موازی بخش‌های مختلف رو می‌نویسن
  • یه ایجنت «ناظر» کیفیت خروجی‌ها رو بررسی می‌کنه
  • نتیجه‌ها ادغام می‌شن

این معماری برای کارهای پیچیده‌ٔ بزرگ چند برابر سریع‌تر و قابل‌اطمینان‌تره.

معماری‌های اصلی

۱. Orchestrator-Worker (مدیر-کارمند)

رایج‌ترین الگو. یه ایجنت مدیر وظایف رو تعریف و توزیع می‌کنه، ایجنت‌های کارمند اونا رو اجرا می‌کنن، و مدیر نتیجه‌ها رو جمع‌آوری می‌کنه.

مثال: ایجنت مدیر می‌گه «کد این فیچر رو بنویس» → ایجنت کدنویس → ایجنت تست → ایجنت مستندسازی → مدیر همه رو ادغام می‌کنه.

۲. Peer-to-Peer (همتا-به-همتا)

ایجنت‌ها با هم به‌طور مستقیم ارتباط دارن. هر کدام می‌تونه به دیگری task بده یا ازش چیزی بخواد.

مثال: یه ایجنت تحقیق می‌کنه و به ایجنت نویسنده می‌گه «این داده‌ها رو داری، گزارش بنویس» — بدون مدیر مرکزی.

۳. Pipeline (خط تولید)

ایجنت‌ها به‌صورت زنجیره کار می‌کنن. خروجی هر ایجنت ورودی بعدیه.

مثال: ایجنت استخراج داده → ایجنت پاک‌سازی → ایجنت تحلیل → ایجنت گزارش

۴. Debate / Self-critique (مناظره)

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


فریم‌ورک‌های اصلی

CrewAI

یکی از محبوب‌ترین فریم‌ورک‌های Python برای ساخت سیستم‌های چندایجنتی. مفهوم «خدمه» (crew) داره — یه گروه ایجنت با نقش‌های مشخص که روی یه هدف مشترک کار می‌کنن.

from crewai import Agent, Task, Crew

researcher = Agent(role='Researcher', goal='تحقیق دربارهٔ موضوع')
writer = Agent(role='Writer', goal='نوشتن گزارش')

research_task = Task(description='تحقیق کن', agent=researcher)
write_task = Task(description='گزارش بنویس', agent=writer)

crew = Crew(agents=[researcher, writer], tasks=[research_task, write_task])
result = crew.kickoff()

بیشتر دربارهٔ CrewAI: راهنمای CrewAI

AutoGen (Microsoft)

فریم‌ورک Microsoft که تمرکزش روی مکالمهٔ بین ایجنت‌هاست. ایجنت‌ها می‌تونن با هم «چت» کنن تا به جواب برسن. برای سناریوهایی که ایجنت‌ها باید بین خودشون مذاکره کنن خوبه.

LangGraph

از LangChain توسعه یافته. گرافی از وضعیت‌ها و انتقال‌ها می‌سازی که جریان کار ایجنت‌ها رو کنترل می‌کنه. انعطاف‌پذیرتر از CrewAI ولی پیچیده‌تره.

بیشتر دربارهٔ LangGraph: LangGraph — راهنمای فارسی

Claude Sub-agents

Anthropic اخیراً قابلیت sub-agent هایی رو در Claude Code پیاده کرده که یه ایجنت اصلی می‌تونه ایجنت‌های فرزند بسازه. این معماری برای کارهای کدنویسی پیچیده خیلی کاربردیه.


چالش‌های واقعی

Multi-agent systems جادویی نیستن. چند مشکل جدی دارن:

۱. هماهنگی سخته. وقتی ایجنت‌ها موازی کار می‌کنن، ممکنه خروجی‌های متناقض تولید کنن. باید مکانیزم «بررسی تضاد» داشته باشی.

۲. هزینهٔ توکن. هر ایجنت API call جداگانه داره. یه سیستم ۵ ایجنتی ممکنه ۵ برابر گران‌تر از یه ایجنت باشه.

۳. Debug سخت‌تره. وقتی خروجی اشتباهه، کدام ایجنت خطا کرده؟ باید لاگ‌گذاری دقیق داشته باشی.

۴. حلقه‌های بی‌نهایت. ایجنت‌ها می‌تونن به هم task بدن و یه loop بی‌پایان بسازن. باید محدودیت iteration داشته باشی.

۵. Prompt injection. اگه یه ایجنت از وب یا ایمیل داده می‌خونه، ممکنه داده‌های مخرب ایجنت رو به رفتار نادرست هدایت کنن.


کِی از multi-agent استفاده کنی؟

این سیستم‌ها برای همه چیز مناسب نیستن. این چارچوب ساده کمک می‌کنه تصمیم بگیری:

یه ایجنت کافیه اگه:

  • کار قابل توصیف با یه task ساده‌ست
  • نیاز به موازی‌سازی نیست
  • داده‌های حساس داری و نمی‌خوای بین ایجنت‌ها منتقل بشن

Multi-agent مناسبه اگه:

  • کار چند مهارت مجزا می‌خواد (تحقیق + نوشتن + بررسی)
  • بخش‌هایی از کار می‌تونن موازی انجام بشن
  • می‌خوای یه ایجنت خروجی ایجنت دیگه رو نقد کنه
  • کار بیش از حد بزرگه که پنجرهٔ زمینهٔ یه ایجنت رو پر کنه

کاربرد در کدنویسی

یکی از بهترین کاربردهای multi-agent کدنویسیه:

  • ایجنت طراحی: معماری سیستم رو طراحی می‌کنه
  • ایجنت کدنویس: کد می‌نویسه
  • ایجنت تست: تست می‌نویسه و اجرا می‌کنه
  • ایجنت reviewer: کد رو بررسی می‌کنه، باگ پیدا می‌کنه
  • ایجنت مستندساز: README و کامنت می‌نویسه

این دقیقاً کاریه که AiraCode برای پروژه‌های بزرگ انجام می‌ده — با حافظهٔ پیوسته از پروژه که بین همه ایجنت‌ها مشترکه.


رابطهٔ با شناخت پیوسته

یه چالش بزرگ در multi-agent systems اینه که هر ایجنت معمولاً «بی‌حافظه» شروع می‌کنه. ایجنت‌های موازی از context مشترک محدودی دارن.

اما تصور کن هر ایجنت از ابتدا می‌دونه این پروژه چیه، تاریخچه‌اش چیه، چه تصمیماتی گرفته شده. این همون چیزیه که شناخت پیوسته به سیستم‌های چندایجنتی می‌ده — یه حافظهٔ اشتراکی که همهٔ ایجنت‌ها بهش دسترسی دارن.

همچنین بخوان

#ایجنت‌ها

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «ایجنت‌ها»