Phase 16: Multi-Agent & Swarms

समूह चैट और स्पीकर चयन

साझा वार्तालाप ऑर्केस्ट्रेशन एक वार्तालाप में N एजेंटों को रखता है; एक चयनकर्ता फ़ंक्शन (LLM, राउंड-रोबिन, या कस्टम) चुनता है कि अगला कौन बोलता है। यह उभरते मल्टी-एजेंट बातचीत का मुख्य रूप है एजेंट एक स्थैतिक ग्राफ में अपनी भूमिका नहीं जानते, वे केवल साझा पूल पर प्रतिक्रिया करते हैं। ऑटोजेन ग्रुपचैट और एजी 2 ग्रुपचैट संदर्भ कार्यान्वयन हैंः ऑटोजेन v0.2 के ग्रुपचैट अर्थशास्त्र को एजी 2 कांटा में संरक्षित किया गया था; ऑटोजेन v0.4 ने इसे एक घटना-चालित अभिनेता मॉडल के रूप में फिर से लिखा था। माइक्रोसॉफ्ट ने ऑटोजेन को फरवरी 2026 में रखरखाव मोड में रखा और इसे माइक्रोसॉफ्ट एजेंट फ्रेमवर्क (RC फरवरी 2026) में सेमैटिक कर्नेल के साथ मिला दिया। GroupChat आदिम दोनों AG2 और Microsoft एजेंट फ्रेमवर्क में जीवित रहता है इसे एक बार सीखें, इसे हर जगह उपयोग करें।

Type: Learn + Build

Languages: Python (stdlib)

Prerequisites: Phase 16 · 04 (Primitive Model)

Time: ~60 minutes

समस्या

स्टैटिक ग्राफ (लंगग्राफ) जब वर्कफ़्लो ज्ञात होता है तो बहुत अच्छा होता है। वास्तविक बातचीत स्थैतिक नहीं होती हैः कभी-कभी कोडर समीक्षक से पूछता है, कभी-कभी शोधकर्ता, कभी-कभी लेखक। हर संभव हस्तान्तरण को हार्डकोडिंग करने से एक किनारे विस्फोट होता है। आप चाहते हैं एजेंट साझा पूल पर प्रतिक्रिया करते हैं, कुछ फ़ंक्शन तय करते हैं कि अगला कौन बोलता है।

यही ऑटोजेन ग्रुपचैट करता है।

अवधारणा

आकार

              ┌─── shared pool ────┐
              │   m1  m2  m3  ...  │
              └─────────┬──────────┘
                        │ (everyone reads all)
      ┌───────┬─────────┼─────────┬───────┐
      ▼       ▼         ▼         ▼       ▼
    Agent A  Agent B  Agent C  Agent D  Selector
                                           │
                                           ▼
                                  "next speaker = C"

प्रत्येक एजेंट हर संदेश देखता है। प्रत्येक मोड़ पर एक चयनकर्ता फ़ंक्शन को चुना जाता है कि अगला कौन बोलता है।

तीन चयनकर्ता स्वाद

Round-robin.निश्चित चक्र. निर्धारक. रैखिक रूप से N में स्केल करता है लेकिन संदर्भ को अनदेखा करता है एक कोडर को बारी मिलती है भले ही विषय कानूनी समीक्षा है।

LLM-selected.एक LLM कॉल जो हाल ही में पूल पढ़ता है और सबसे अच्छा अगले वक्ता लौटाता है। संदर्भ के बारे में जागरूक लेकिन धीमाः हर बारी में एक LLM कॉल जोड़ता है। ऑटोजेन डिफ़ॉल्ट।

Custom.एक पायथन फ़ंक्शन जो भी तर्क आप चाहते हैं के साथ। विशिष्टः एलएलएम-फालबैक नियमों के साथ चुना गया (जैसे, "सदा सत्यापितकर्ता को कोडर के बाद बारी दें") ।

वार्तालाप करने योग्य एजेंट एपीआई

agent = ConversableAgent(
    name="coder",
    system_message="You write Python.",
    llm_config={...},
)
chat = GroupChat(agents=[coder, reviewer, tester], messages=[])
manager = GroupChatManager(groupchat=chat, llm_config={...})

GroupChatManagerजब एक एजेंट एक बारी पूरा करता है, प्रबंधक चयनकर्ता को बुलाता है, जो अगले एजेंट को वापस करता है। लूप समाप्ति स्थिति तक जारी रहता है।

समाप्ति

तीन आम पैटर्नः

  • Max rounds.कुल मोड़ पर हार्ड कैप.
  • "TERMINATE" token.एजेंट एक sentinel संदेश भेज सकते हैं; प्रबंधक जब एक दिखाई देता है बंद कर देता है।
  • Goal-reached check.एक हल्के सत्यापन प्रत्येक बारी चलाता है और जब समाप्त हो जाता है चैट बंद कर देता है।

वंशः कांटे और विलय

2025 की शुरुआत में, माइक्रोसॉफ्ट ने एक इवेंट-ड्राइव एक्टर मॉडल के आसपास ऑटोजेन (v0.4) का एक बड़ा पुनर्लेखन शुरू किया। समुदाय ने ऑटोजेन v0.2 के ग्रुपचैट सेमेन्टिक्स को AG2 के रूप में फोर्क किया, जो एपीआई को संरक्षित करता है जिसे शुरुआती अपनाने वालों ने एकीकृत किया था।

फरवरी 2026 में, माइक्रोसॉफ्ट ने घोषणा की कि ऑटोजेन रखरखाव मोड में जाएगा, जिसमें घटना-चालित अभिनेता मॉडल शामिल होगा।Microsoft Agent Framework(RC फरवरी 2026, अब सेमेटिक कर्नेल के साथ विलय) समूह चैट अवधारणा दोनों ट्रैक में जीवित है; कार्यान्वयन विवरण अलग हैं। एजी 2 v0.2 संगत कोड के लिए अपस्ट्रीम पसंद है।

जब GroupChat उपयुक्त है

  • Emergent conversations.आप हर संभावित अगले स्पीकर को पूर्व-कनेक्ट नहीं करना चाहते हैं।
  • Role-mixing tasks.कोडर शोधकर्ता से पूछता है, शोधकर्ता अभिलेखागार से पूछता है, अभिलेखागार कोडर वापस पूछता है. प्रवाह एक DAG नहीं है.
  • Exploratory problem-solving."मेजबानी बैठक" के बारे में सोचें, "सम्मेलन लाइन" नहीं।

जब यह विफल हो जाता है

  • Strict determinism.LLM चयनकर्ता असंगत हो सकता है. एक ही शीघ्र, अलग रन, अलग अगले वक्ताओं.
  • Sycophancy cascades.एजेंटों को जो भी सबसे आत्मविश्वास से बात करने के लिए स्थगित.
  • Context bloat.प्रत्येक एजेंट हर संदेश पढ़ता है; 10 वक्र के बाद संदर्भ विशाल है। दृश्यों को परिधि करने के लिए अनुमानों (पाठ 15) का उपयोग करें।
  • Hot speakers.एक एजेंट बातचीत पर हावी होता है क्योंकि चयनकर्ता अपनी विशेषताओं का पक्ष रखता है। चयनकर्ता विशेषता के रूप में वक्ता संतुलन पेश करें।

समूह चैट बनाम पर्यवेक्षक

एक ही आदिम, अलग डिफ़ॉल्टः

  • पर्यवेक्षक: एक एजेंट योजना बनाता है और दूसरे निष्पादित करते हैं। चयनकर्ता "योजनाकार से पूछें कि क्या करना है।"
  • समूह चैटः सभी एजेंट समकक्ष हैं; चयनकर्ता साझा पूल पर एक फ़ंक्शन है।

दोनों पाठ 04 से चार आदिम का उपयोग करते हैं। समूह चैट डिफ़ॉल्ट रूप से एलएलएम द्वारा चयनित ऑर्केस्ट्रेशन और पूर्ण पूल साझा राज्य तक।

इसे बनाओ

code/main.pyएक समूह चैट को स्क्रैच से लागू करता है। तीन एजेंट (कोडर, समीक्षक, प्रबंधक), राउंड-रोबिन और एलएलएम-निर्मित संस्करण, और एक पर समाप्ति।TERMINATEटोकन।

डेमो दोनों संस्करणों के लिए वार्तालाप प्रतिलिपि और चयनकर्ता के निर्णय का पता चलता है।

दौड़ें:

python3 code/main.py

इसका प्रयोग करें

outputs/skill-groupchat-selector.mdएक दिए गए कार्य के लिए एक समूह चैट चयनकर्ता को कॉन्फ़िगर करता है राउंड-रॉबिन बनाम एलएलएम-सेलेक्ट बनाम कस्टम, और चयनकर्ता इनपुट (हाल के संदेश, एजेंट विशेषताओं, टर्न गिनती) का उपयोग करने के लिए।

इसे भेजें

चेकलिस्टः

  • Max rounds cap.हमेशा. 10-20 सामान्य कार्यों के लिए.
  • Speaker-balance metric.प्रति एजेंट ट्रैक मोड़; अलर्ट जब असंतुलन एक सीमा से अधिक हो।
  • Termination token. TERMINATEया एक समर्पित सत्यापन एजेंट।
  • Projection or scoped memory.~ 10 संदेशों के बाद, संदर्भ फुलाव को रोकने के लिए प्रत्येक एजेंट को केवल एक स्कोप दृश्य देने पर विचार करें।
  • Selector logging.LLM- चयनित संस्करणों के लिए, चयनकर्ता के इनपुट और उसके विकल्प दोनों को लॉग करें। अन्यथा डिबगिंग असंभव है।

व्यायाम

  1. दौड़ेंcode/main.py. राउंड-रोबिन के तहत बातचीत की तुलना LLM-सेलेक्ट के साथ करें.
  2. चयनकर्ता में "अधिकतम बात करता है-प्रति एजेंट" नियम जोड़ें। यह ट्रांसक्रिप्ट को कैसे प्रभावित करता है?
  3. लक्ष्य प्राप्त समाप्ति लागू करेंः जब समीक्षक "अनुमोदित" लौटता है तो रोकें। गोल कैप से पहले यह कितनी बार ट्रिगर होता है?
  4. GroupChat पर AutoGen स्थिर दस्तावेजों को पढ़ें (https://microsoft.github.io/autogen/stable/user-guide/core-user-guide/design-patterns/group-chat.html द्वारा इस्तेमाल किए गए डिफ़ॉल्ट चयनकर्ता की पहचान करेंGroupChatManager. .
  5. AG2 रेपो को पढ़ें (https://github.com/ag2ai/ag2) और v0.2 GroupChat की तुलना v0.4 घटना-चालित संस्करण से करें। v0.4 क्या ठोस गुण (प्रवाह, दोष सहिष्णुता, रचना) जोड़ता है?

प्रमुख शर्तें

TermWhat people sayWhat it actually means
GroupChat"Agents in one chat room"Shared message pool + selector function. AutoGen / AG2 primitive.
Speaker selection"Who talks next"The function that picks the next agent. Round-robin, LLM-selected, or custom.
GroupChatManager"The meeting host"AutoGen component that owns the selector and loops over turns.
ConversableAgent"The base agent"AutoGen base class; an agent that can send and receive messages.
Termination token"The 'stop' word"Sentinel string (usually TERMINATE) that ends the chat.
Hot speaker"One agent dominates"Failure mode where the selector keeps picking the same agent.
Context bloat"Pool grows unbounded"Each agent reads every prior message; context grows with turns.
Projection"Scoped view"Role-specific view into the shared pool to prevent context bloat.

आगे पढ़ना

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.