Phase 16: Multi-Agent & Swarms

مدل ابتدایی چند عامل

چهار ابتدایی، چیزی بیشتر عامل، تحویل، حالت مشترک، آرکیستراتور یک فضای طراحی چهار بعدی را پوشش می دهد و چهار چارچوب اصلی چند عامل در سال 2026 (AutoGen، LangGraph، CrewAI، OpenAI Agents SDK، Microsoft Agent Framework) نقاط در آن هستند. این درس آنها را از صفر می سازد، یک سیستم اسباب بازی را روی هر چهار قسمت اجرا می کند، سپس هر چارچوب اصلی را روی محور های مشابه نقشه می زند تا بتوانید هر نسخه جدیدی را در یک پاراگراف بخوانید.

Type: Learn

Languages: Python (stdlib)

Prerequisites: Phase 14 (Agent Engineering), Phase 16 · 01 (Why Multi-Agent)

Time: ~60 minutes

مشکل

هر شش ماه یک فریم ورک جدید چند عامل ارسال می شود. آتوژن در سال 2023. کروای آی در سال 2024. لانگ گراف و OpenAI سوارم در سال 2024. گوگل ADK در آوریل 2025. مایکروسافت آژانس فریم ورک RC در ماه فوریه 2026. هر بیانیه مطبوعاتی ادعا می کند "استحصال صحیح است".

اگر سعی کنید آن ها را به صورت یک به یک یاد بگیرید، شما از بین خواهید رفت. API ها متفاوت به نظر می رسند. اسناد در مورد "آژنت" اختلاف نظر دارند. یک چارچوب حافظه مشترک خود را "بلاک بورد" می نامد، دیگری آن را "بله ی پیام" می نامد، سوم آن را "استات گراف" می نامد. شما شروع به مشکوک شدن میدان می کنید.

نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه، نه،

مفهوم

چهار تا از ابتدایی ها

  1. Agent یک پیامک سیستم و یک لیست ابزار. بدون وضعیت؛ هر اجرا از پیامک سیستم خود و تاریخچه پیام فعلی شروع می شود.
  2. Handoff انتقال ساختار یافته کنترل از یک عامل به دیگری. به طور مکانیکی، یک تماس ابزار که یک عامل جدید را باز می گرداند یا یک لبه نمودار که به یک شرط می پیوندد.
  3. Shared state هر ساختار داده ای که بیش از یک عامل می تواند بخواند (گاهی اوقات می تواند بنویسد). مجموعه پیام ها، صفحه سیاه، ذخیره ارزش کلید، حافظه ویکتور.
  4. Orchestrator هر کسی تصمیم می گیرد که چه کسی بعدی صحبت می کند. گزینه ها: یک نمودار صریح (تثبیتگر) ، یک انتخاب کننده سخنران LLM (رایم) ، تماس ارسال آخرین سخنران (OpenAI Swarm) یا برنامه ریزی کننده در یک صف (ارشیکتور سوارم).

این کل فضای طراحی است. هر چارچوب برای هر محور پیش فرض را انتخاب می کند. بقیه ترکیب سطح است.

چگونه هر چارچوب 2026 نقشه به آن

FrameworkAgentHandoffShared stateOrchestrator
OpenAI Swarm / Agents SDKAgent(instructions, tools)tool returns Agentcaller's problemthe LLM's next handoff call
AutoGen v0.4 / AG2ConversableAgentspeaker-selector on GroupChatmessage poolselector function (LLM or round-robin)
CrewAIAgent(role, goal, backstory)Process.Sequential / HierarchicalTask outputs chainedmanager LLM or static order
LangGraphnode functiongraph edge + conditionStateGraph reducerthe graph, deterministic
Microsoft Agent Frameworkagent + orchestration patternspattern-specificthread / contextpattern-specific
Google ADKagent + A2A cardA2A taskA2A artifactshost decides

تفاوت سطحي خيلي زيادي هست، در پايين همچين چهار دکمه

چرا این مهم است

وقتی که شما اولین ها را می بینید، مقایسه چارچوب به یک لیست چک کوتاه تبدیل می شود:

  • آیا گروه سازنده به LLM اعتماد می کند تا مسیر (Swarm) را هدایت کند یا مسیر را در کد (LangGraph) می کند؟
  • آیا اشتراک گذاری وضعیت کامل تاریخ (GroupChat) یا پیش بینی (Reducer StateGraph) است؟
  • آیا ماموران می توانند پیام های یکدیگر را تغییر دهند (منتظم CrewAI) یا فقط دست به دست (Swarm) ؟

این سه سوال پاسخ 80% از چارچوبی را که برای یک مشکل خاص مناسب است می دهند. شما خرید "بهترین چارچوب چند عامل" را متوقف می کنید و شروع به طراحی برای محور که واقعا به شما اهمیت می دهد می کنید.

بینش بی کشور

هر ابتدایی به جز حالت مشترک بی دولتی است. عامل یک تابع از (پرامپ، ابزار) است. Handoff یک تماس تابع است. آرکیستراتور یک برنامه نویس است. The only stateful thing in the system is shared state.در آنجا همه اشکال جالب زندگی می کنند: مسمومیت حافظه (درس 15), دستور پیام، نسخه سازی، اختلاف نوشتن.

چارچوب هایی که وضعیت مشترک را پنهان می کنند (Swarm) مشکل را به تماس گیرنده فشار می دهند. چارچوب هایی که آن را متمرکز می کنند (پناه بازرسی LangGraph، پول AutoGen) آن را قابل بازرسی می کنند اما هزینه هماهنگی را به اجرای حالت مشترک تغییر می دهند.

آناتومی یک ابتدایی

#### مامور

Agent = (system_prompt, tools, model, optional_name)

هیچ حافظه ای، هیچ حالت، دو عامل با یک سیستم سریع و ابزار قابل تعویض هستند هر چیزی که به نظر می رسد به حالت هر عامل در واقع در حالت مشترک یا پروتکل انتقال است.

#### انتقال

Handoff = (from_agent, to_agent, reason, payload)

سه اجرای اصلی وجود دارد:

  • Function return ابزار عامل بعدی را باز می گرداند. این الگوی OpenAI Swarm است. عوامل روتینگ را در طرح های ابزار خود دارند.
  • Graph edge لینگ گراف. حواشی اعلامی هستند. LLM یک مقدار تولید می کند؛ یک شرط گره بعدی را انتخاب می کند.
  • Speaker selection AutoGen GroupChat. یک تابع انتخاب کننده (گاهی اوقات خود یک تماس LLM) است که پول را می خواند و انتخاب می کند که بعدی صحبت می کند.

#### دولت مشترک

SharedState = { messages: [], artifacts: {}, context: {} }

حداقل، یک لیست پیام ها. اغلب بیشتر: آثار ساختاری (خروجی Task CrewAI) ، متن تایپ شده (کمکنان LangGraph) ، حافظه خارجی (MCP، ویکتور DB).

دو توپولوژی: full pool(هر مامور هر پيغام رو مي بينه) وprojected(عملاء یک دیدگاه مقیاس نقش را مشاهده می کنند). مجموعه های کامل ساده و مقیاس ضعیف هستند. مجموعه های پیش بینی شده مقیاس هستند اما نیاز به طراحی طرح اولیه دارند.

#### آرکستراتور

Orchestrator = ({state, last_speaker}) -> next_agent

چهار طعم:

  • Static نمودار در زمان ساخت ثابت می شود (تثبیت LongGraph، CrewAI Sequential).
  • LLM-selected یک LLM مجموعه را می خواند و سخنران بعدی را انتخاب می کند (AutoGen، CrewAI Hierarchical).
  • Handoff-driven عامل فعلی با تماس با یک ابزار تحویل (Swarm) تصمیم می گیرد.
  • Queue-driven کارگران از یک صف مشترک خارج می شوند؛ هیچ سخنران صریح بعدی (ارشیکتورهای سوار، ماتریکس) وجود ندارد.

چه تغییرات بین چارچوب ها

هنگامی که ابتدایی ها ثابت شوند، تصمیمات باقیمانده طراحی عبارتند از:

  • Memory strategy چکپوائنتر فصلی در مقابل چکپوائنتر پایدار (که در طول زمانگراف می باشد).
  • Safety boundary که می تواند یک انتقال را تایید کند (مردم در حلق).
  • Cost accountingبودجه توکن هر عامل
  • Observability ردیابی بازیافت ها، حالت ادامه ای برای بازی مجدد

همه ی این ها قابل اجرا هستند و هیچ کدام از آنها ابتدایی جدید نیستند.

آن را بسازید

code/main.pyاین برنامه در حدود 150 خط از stdlib Python اجرا می شود. هیچ LLM واقعی وجود ندارد. هر عامل یک سیاست اسکریپت شده است بنابراین تمرکز بر ساختار هماهنگی باقی می ماند.

صادرات پرونده:

  • Agent یک کلاس داده از نام، سیستم پرامپت، ابزار، عملکرد سیاست.
  • Handoff یک تابع که یک عامل جدید را باز می گرداند.
  • SharedState یک حاشیه پیام امن
  • Orchestrator سه نوع: StaticOrchestrator،HandoffOrchestrator،LLMSelectorOrchestrator(تخريب)

نمایش در تمام سه نوع آرکیستراتور یک خط لوله سه عامل را اجرا می کند و در پایان مجموعه پیام را چاپ می کند. می توانید ببینید که خروجی تنها در که بعدی را انتخاب می کند متفاوت است؛ عوامل و حالت مشترک در همه اجراها یکسان هستند.

اجرا کن

python3 code/main.py

تولید انتظار می رود: سه اجرا از آرکیستراتور، یک در هر الگوی. هر یک از آنها مجموعه پیام نهایی را چاپ می کند. اجرا از طریق تحویل به عوامل کمتری می رسد اگر محقق تصمیم بگیرد زودتر انجام شود.

ازش استفاده کن

outputs/skill-primitive-mapper.mdاین مهارت است که هر کد پایه یا مستند چارچوب چند عامل را می خواند و نقشه برداری چهار اولیه را باز می کند. آن را در یک نسخه چارچوب جدید اجرا کنید تا قبل از خواندن اسناد به طور عمیق درک یک پاراگراف را بدست آورید.

-باده

قبل از پذیرش یک چارچوب جدید، نقشه برداری اولیه را برای آن بنویسید. اگر نمی توانید، اسناد نامکمل هستند یا چارچوب یک ابتدایی پنجم را اختراع می کند (رنگ چک برای طعم مشترک که شما ندیدید).

نقشه برداری را در مستند معماری خود قرار دهید. وقتی یک عضو جدید از تیم به آن ها پیوسته است، نقشه برداری را قبل از اسناد API ارسال کنید. هنگامی که نسخه های چارچوب تغییر می کنند، نقشه برداری را متفاوت کنید، نه تغییرنامه.

تمرینات

  1. فرار کنcode/main.pyسه بار با سیاست های مختلف مامورین، ببینید که چگونه انتخاب سازنده تغییر می کند که مامورین چه اجرا می کنند.
  2. یک نوع چهارم از آرژانتور را پیاده سازی کنید: یک نوع قطار که در آن نمایندگان وضعیت را برای کار مشترک می کنند. چه خنک کاری می تواند رخ دهد و چگونه آن را تشخیص می دهید؟
  3. از شروع سریع LangGraph استفاده کنید (https://docs.langchain.com/oss/python/langgraph/workflows-agentsکدام یک از نقشه های انتزاعی لانگ گراف 1:1 و کدام یک از این نقشه ها بسته بندی های راحتی هستند؟
  4. کتاب آشپزی OpenAI Swarm را بخوانید (https://developers.openai.com/cookbook/examples/orchestrating_agents). مشخص کنید که کدام از چهار ابتدایی Swarm را بیشتر ارگونومی می کند و کدام یک را به تماس گیرنده فشار می دهد.
  5. در اين جدول يه چارچوب پيدا کن که حالت به طور کامل به اشتراک گذاشته شده رو پنهان کنه و توضیح بده که وقتي ماموران بايد بدون دوباره خواندن تاريخ همگامي کنند چه وقفه اي داره

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Agent"An LLM with tools"A (system_prompt, tools, model) triple. Stateless.
Handoff"Transfer of control"A structured call that names the next agent and optional payload. Three implementations: function return, graph edge, speaker selection.
Shared state"Memory" / "context"The only stateful part of a multi-agent system. Message pool or blackboard.
Orchestrator"Coordinator"Whoever decides who runs next. Static graph, LLM selector, handoff-driven, or queue-driven.
Primitive"Abstraction"One of the four axes every framework parameterizes. Not a framework feature.
Message pool"Shared chat history"Full-history shared state. Easy to reason about, scales badly.
Projected state"Scoped view"Role-specific view into shared state. Scales, requires schema design.
Speaker selection"Who talks next"Orchestrator pattern where a function (often an LLM) picks the next agent from a group.

خواندن بیشتر

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.