Phase 16: Multi-Agent & Swarms

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

سوارم اوپن آی (اکتبر 2024) orkestration چند عامل را به دو ابتدایی:routines(توصیه ها + ابزارها به عنوان یک دستور سیستم) و handoffs(یک ابزار که یک مامور دیگر را به ارمغان می آورد) هیچ دستگاه دولتی، هیچ شاخه DSL مسیرهای LLM با تماس با ابزار تحویل مناسب. SDK OpenAI Agents (مارس 2025) جانشین تولید است. خود سوارم خالص ترین مرجع مفهومی است کل منبع آن در چند صد خط قرار دارد. این الگوی ویروس است زیرا سطح API تقریبا "ایجنتی = پرامپت + ابزار؛ Handoff = عامل بازپرداخت عملکرد است". محدودیت: بی وضعیت، بنابراین حافظه مشکل تماس گیرنده است.

Type: Learn + Build

Languages: Python (stdlib)

Prerequisites: Phase 16 · 04 (Primitive Model)

Time: ~60 minutes

مشکل

هر چارچوب چند عامل می خواهد شما DSL خود را یاد بگیرید: لنگ گراف گره ها و لبه ها، خدمه های CrewAI و وظایف، AutoGen GroupChat و مدیران. DSL ها تجریدی واقعی هستند، اما باعث می شوند که چیز سنگین تر از آنچه باید باشد باشد.

سوارم به سمت مخالف فشار می آورد: از قابلیت تماس ابزار که مدل قبلاً دارد استفاده کنید. ارسال به ابزار تبدیل می شود. آرکیستراتور هر عامل ای است که در حال حاضر مکالمه را انجام می دهد. دستگاه دولت در پیام های سیستم عامل ها ضمنی است.

مفهوم

دو تا از ابتدایی ها

Routine.یک دستور سیستم که نقش یک نماینده و ابزارهای موجود را تعریف می کند. به آن مانند مجموعه ای از دستورالعمل های محدودی فکر کنید: "شما یک نماینده انتخاب هستید؛ اگر کاربر درباره بازپرداخت هزینه ها سوال کند، به نماینده بازپرداخت بدهید".

Handoff.ابزاري که مامور مي تونه صداي کنه که يه اجنتي جديد باز مياد. زمان اجرا سوارم ارزش بازي مامور رو پيدا ميکنه و مامور فعال رو براي نوبت بعد ميگيره

این کل تجریدی است.

def transfer_to_refunds():
    return refund_agent  # Swarm sees Agent return → switch active agent

triage_agent = Agent(
    name="triage",
    instructions="Route the user to the right specialist.",
    functions=[transfer_to_refunds, transfer_to_sales, transfer_to_support],
)

پیام سیستم عامل triage باعث می شود که بر اساس پیام کاربر، انتقال صحیح را انتخاب کند. تماس ابزار LLM رویت را انجام می دهد.

چرا این ویروس است

  • Small API.دو مفهوم برای یادگیری.
  • Uses what the model already does.تماس با ابزارها در حال حاضر در سطح تولید بین ارائه دهندگان است.
  • No state-machine burden.شما نمودار رو شرح نميدهيد، اما دستورات ماموران نشان ميدهند که به چه کسي مي دهند

تجارت بی تابعیت

Swarm به طور صریح بین اجراها بی وضعیت است. چارچوب یک تاریخچه پیام را در طول اجرا نگه می دارد، اما هیچ چیز را حفظ نمی کند. حافظه، ادامه، وظایف طولانی مدت همه مشکل تماس گیرنده است.

در تولید (OpenAI Agents SDK، مارس 2025) این یکی از مهمترین چیزهایی بود که تغییر کرد: SDK مدیریت جلسه، محافظ و ردیابی داخلی را در حالی که تحویل اولیه را حفظ می کند، اضافه می کند.

وقتی که سوارم/دستور مناسب باشد

  • Triage patterns.مامور خط اول رو به يک متخصص ميفرستد
  • Skill-based handoffs."اگر کار به کد نیاز دارد، به کدر زنگ بزن؛ اگر به تحقیق نیاز دارد، به محقق زنگ بزن".
  • Short, bounded conversations.پشتیبانی از مشتری، سوالات عمومی، جریان کار ساده

وقتی که گروه ها مبارزه می کنند

  • Long sessions with shared memory.بازيابي حالت مکالمه رو به تاريخ پرامپت و اطلاعات مامور جديد بازيابي ميکنه
  • Parallel execution.Handoff یک بار در یک زمان است عامل فعال سوئیچ می کند. موازی سازی نیاز به تماس گیرنده را به اجرا در چندین Swarm.
  • Audit and replay.بازی های بدون ایالت به طور دقیق دشوار است؛ انتخاب Handoff LLM تعیین کننده نیست.

SDK OpenAI Agents (مارس 2025)

جانشین تولید اضافه می کند:

  • Session state.رشته ي ثابت در طول رين
  • Guardrails.هک های اعتبارگذاری ورودی/خروجی
  • Tracing.هر تماس و ارسال ابزار ثبت شده
  • Handoff filters.کنترل کن کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کنترول کن

این نوع اولیه زنده می ماند؛ ارگونومی تولید در اطراف آن اضافه می شود.

گروه مقابل گروه چت

هر دو از مسیرهای LLM استفاده می کنند، اما در مورد آنها متفاوت هستند.who picks next:

  • گروه چت: یک انتخاب کننده (کار یا LLM) سخنران بعدی را از خارج انتخاب می کند.
  • گروه: مامور فعلی جانشین خود را با تماس با ابزار انتقال انتخاب می کند.

سوارم "عملی تصمیم می گیرد چه اتفاقی می افتد" است؛ گرووپ چت "مدیر تصمیم می گیرد چه اتفاقی می افتد". تصمیم سوارم در تماس ابزار عامل فعال زندگی می کند؛ گرووپ چت در GroupChatManager. .

آن را بسازید

code/main.pySwarm را از ابتدا اجرا می کند: یک کلاس داده های عامل، یک مکانیسم انتقال (آزمایش بازمی گردد Agent) و یک حلقه اجرا که سوئیچ های عامل را تشخیص می دهد.

Demo: یک آژانس دسته بندی مسیرهای برای بازپرداخت، فروش، یا پشتیبانی متخصص. هر متخصص ابزار خود را دارد. حلقه اجرا هر تحویل چاپ می کند.

راه رفتن:

python3 code/main.py

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

outputs/skill-handoff-designer.mdیک توپولوژی انتقال برای یک کار مشخص طراحی می کند: کدام عوامل وجود دارند، کدام انتقال را می توانند فراخوانند، چه زمینه ای انتقال می دهد.

-باده

فهرست چک:

  • Handoff logging.هر ارسال يک رویداد پيگيري با از مامور به مامور، صورتحالا، زمینه نوشته شده
  • Context transfer rules.تصمیم بگیرید که چه چیزی در انتقال حرکت می کند: تاریخچه کامل (مقدره) ، آخرین پیام های N، یا خلاصه ای.
  • Guardrail on handoff.انتقال به متخصص با مجوزهای مختلف ابزار باید تأیید شود در غیر این صورت تزریق سریع می تواند باعث انتقال ناخواسته شود.
  • Loop detection.دو عامل که به جلو و عقب حرکت می کنند شکست مشترک است؛ با یک چک حلقه آخر K ساده تشخیص دهید.
  • Fallback agent.اگر هدف انتقال وجود نداشته باشد، به یک خط خط خطای امن برگردید.

تمرینات

  1. فرار کنcode/main.py،به مامور بازپرداخت مراجعه کن
  2. یک قانون تشخیص حلقه اضافه کنید: اگر دو عامل مشابه سه بار در یک ردیف دست به دست آورده اند، یک خروج را مجبور کنید.
  3. اسناد SDK OpenAI Agents را در فیلترهای تحویل بخوانید. یک نسخه "جمع بندی در تحویل" را پیاده سازی کنید: عامل خارج از کار قبل از اینکه عامل وارد کار را به عهده بگیرد، زمینه را به یک خلاصه گلوله فشرده می کند.
  4. مقایسه دادن سوارم با یک انتخاب کننده GroupChatManager. کدام الگوی تزریق سریع را بدتر می کند و چرا؟
  5. کتاب آشپزی سوارم رو بخونیدhttps://developers.openai.com/cookbook/examples/orchestrating_agents). یک تصمیم طراحی صریح را شناسایی کنید که سوارم انجام می دهد SDK OpenAI Agents تغییر یا حفظ شود.

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

TermWhat people sayWhat it actually means
Routine"The agent prompt"System prompt + tool list. Defines role and available handoffs.
Handoff"Transfer to another agent"A tool the active agent can call that returns a new Agent. The runtime switches active agent.
Stateless"No memory between runs"Swarm does not persist anything; memory is the caller's responsibility.
Active agent"Who's speaking now"The agent currently holding the conversation. Handoff changes this.
Context transfer"What moves on handoff"Policy for what history the incoming agent sees: full, last N, or summarized.
Handoff loop"Agents ping-pong"Failure mode where two agents keep handing back to each other.
OpenAI Agents SDK"Production Swarm"March 2025 successor; adds sessions, guardrails, tracing on top of the handoff primitive.
Handoff filter"Gate on transfer"SDK feature to inspect and modify context at the handoff boundary.

خواندن بیشتر

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.