बहु-एजेंट आदिम मॉडल
Type: Learn
Languages: Python (stdlib)
Prerequisites: Phase 14 (Agent Engineering), Phase 16 · 01 (Why Multi-Agent)
Time: ~60 minutes
समस्या
हर छह महीने में एक नया मल्टी-एजेंट फ्रेमवर्क जहाजों। ऑटोजेन 2023. क्रूएआई 2024. लैंगग्राफ और ओपनएआई स्वारम 2024. गूगल एडीके अप्रैल 2025. माइक्रोसॉफ्ट एजेंट फ्रेमवर्क आरसी फरवरी 2026 में। प्रत्येक प्रेस विज्ञप्ति का दावा है कि "सही अमूर्तता है।"
यदि आप उन्हें एक-एक करके सीखने की कोशिश करते हैं तो आप जल जाएंगे। एपीआई अलग दिखते हैं। डॉक्स इस बारे में असहमत हैं कि "एजेंट" क्या है। एक फ्रेमवर्क अपनी साझा स्मृति को "ब्लैकबोर्ड" कहता है, दूसरा इसे "संदेश पूल" कहता है, तीसरा इसे "स्टेटग्राफ" कहता है। आप यह संदेह करना शुरू करते हैं कि क्षेत्र सिर्फ झड़ रहा है।
यह नहीं है. विपणन के नीचे, चार आदिम स्थिर हैं. उन्हें एक बार सीखें, एक पैराग्राफ में हर नई ढांचे को पढ़ें।
अवधारणा
चार आदिम
- Agent एक सिस्टम प्रॉम्प्ट प्लस एक टूल सूची. स्टेटलेस; प्रत्येक रन अपने सिस्टम प्रॉम्प्ट और वर्तमान संदेश इतिहास से शुरू होता है.
- Handoff एक एजेंट से दूसरे एजेंट में नियंत्रण का एक संरचित हस्तांतरण। यांत्रिक रूप से, एक उपकरण कॉल जो एक नए एजेंट या एक स्थिति के बाद एक ग्राफ किनारे को लौटाता है।
- Shared state कोई भी डेटा संरचना जो एक से अधिक एजेंट पढ़ सकते हैं (कभी-कभी लिख सकते हैं) संदेश पूल, ब्लैकबोर्ड, कुंजी-मूल्य भंडारण, वेक्टर मेमोरी।
- Orchestrator जो भी निर्णय लेता है कि अगला कौन बोलता है। विकल्पः एक स्पष्ट ग्राफ (निर्णायक), एक एलएलएम स्पीकर-सेलेक्टर (नरम), अंतिम स्पीकर का हाथ कॉल (ओपनएआई स्वार्म), या एक कतार पर एक शेड्यूलर (स्वर्म वास्तुकला) ।
यह पूरी डिजाइन स्पेस है. प्रत्येक फ्रेमवर्क प्रत्येक अक्ष के लिए डिफ़ॉल्ट चुनता है; बाकी सतह सिंटेक्स है.
कैसे हर 2026 फ्रेमवर्क इसे मानचित्रित करता है
| Framework | Agent | Handoff | Shared state | Orchestrator |
|---|---|---|---|---|
| OpenAI Swarm / Agents SDK | Agent(instructions, tools) | tool returns Agent | caller's problem | the LLM's next handoff call |
| AutoGen v0.4 / AG2 | ConversableAgent | speaker-selector on GroupChat | message pool | selector function (LLM or round-robin) |
| CrewAI | Agent(role, goal, backstory) | Process.Sequential / Hierarchical | Task outputs chained | manager LLM or static order |
| LangGraph | node function | graph edge + condition | StateGraph reducer | the graph, deterministic |
| Microsoft Agent Framework | agent + orchestration patterns | pattern-specific | thread / context | pattern-specific |
| Google ADK | agent + A2A card | A2A task | A2A artifacts | host decides |
सतह के अंतर बहुत बड़े दिखते हैं. नीचेः एक ही चार बटन.
यह क्यों मायने रखता है
एक बार जब आप आदिम को देखते हैं, फ्रेमवर्क तुलना एक छोटी चेकलिस्ट बन जाती हैः
- क्या ऑर्केस्ट्रेटर LLM को रूटिंग (Swarm) करने के लिए भरोसा करता है या क्या यह कोड (LangGraph) में रूटिंग को pin करता है?
- क्या साझा राज्य पूर्ण इतिहास (ग्रुपचैट) या अनुमानित (राज्य ग्राफ रिड्यूसर) है?
- क्या एजेंट एक दूसरे के संकेतों को बदल सकते हैं (क्रूएआई प्रबंधक) या केवल हाथ से (स्वारम) ?
इन तीनों प्रश्नों का उत्तर 80% है कि कौन सा फ्रेमवर्क किसी दिए गए समस्या के अनुरूप है। आप "सर्वश्रेष्ठ मल्टी-एजेंट फ्रेमवर्क" की खरीदारी करना बंद कर देते हैं और उस धुरी के लिए डिजाइन करना शुरू करते हैं जो वास्तव में आपकी परवाह है।
देशहीन अंतर्दृष्टि
साझा राज्य को छोड़कर हर आदिम राज्य राज्यहीन है एजेंट (प्रॉम्प्ट, उपकरण) का कार्य है। हाथ से कॉल एक कार्य है। ऑर्केस्ट्रेटर एक शेड्यूलर है। The only stateful thing in the system is shared state.यह वह जगह है जहाँ सभी दिलचस्प बग रहते हैंः स्मृति विषाक्तता (पाठ 15), संदेश आदेश, संस्करण, लिखने विवाद।
साझा स्थिति (स्वारम) को छिपाने वाले फ्रेमवर्क समस्या को कॉल करने वाले को धकेलते हैं। इसे केंद्रीकृत करने वाले फ्रेमवर्क (लंगग्राफ चेकपॉइंट, ऑटोजेन पूल) इसे निरीक्षण करने योग्य बनाते हैं लेकिन साझा-राज्य कार्यान्वयन पर समन्वय लागत को स्थानांतरित करते हैं।
एक एकल आदिम की शरीर रचना
#### एजेंट
Agent = (system_prompt, tools, model, optional_name)कोई स्मृति नहीं, कोई राज्य नहीं, एक ही सिस्टम प्रॉम्प्ट और उपकरण वाले दो एजेंट परस्पर विनिमेय हैं, जो कुछ भी प्रति एजेंट राज्य की तरह दिखता है वह वास्तव में साझा राज्य या हस्तांतरण प्रोटोकॉल में है।
#### हाथ से
Handoff = (from_agent, to_agent, reason, payload)तीन कार्यान्वयन प्रमुख हैंः
- Function return उपकरण अगले एजेंट को लौटाता है. यह OpenAI Swarm पैटर्न है. एजेंट अपने उपकरण योजनाओं में रूटिंग ले जाते हैं.
- Graph edge लैंगग्राफ. किनारे घोषणात्मक हैं। एलएलएम एक मूल्य उत्पन्न करता है; एक शर्त अगले नोड का चयन करती है।
- Speaker selection ऑटोजेन ग्रुपचैट। एक चयनकर्ता फ़ंक्शन (कभी-कभी खुद एक एलएलएम कॉल) पूल को पढ़ता है और चुनता है कि अगला कौन बोलता है।
#### साझा राज्य
SharedState = { messages: [], artifacts: {}, context: {} }कम से कम, संदेशों की एक सूची। अक्सर अधिकः संरचित कलाकृतियां (क्रूएआई टास्क आउटपुट), टाइप किया गया संदर्भ (लंगग्राफ घटाने वाले), बाहरी मेमोरी (एमसीपी, वेक्टर डीबी) ।
दो शीर्षिकीएँ: full pool(हर एजेंट हर संदेश देखता है) और projected(एजेंटों को भूमिका-मानक दृश्य देखें) पूर्ण पूल सरल हैं और खराब पैमाने पर हैं। अनुमानित पूल पैमाने पर हैं लेकिन अग्रिम योजना डिजाइन की आवश्यकता है।
#### संगीतकार
Orchestrator = ({state, last_speaker}) -> next_agentचार स्वादः
- Static ग्राफ निर्माण समय पर तय है (लंगग्राफ निर्धारक, क्रूएआई अनुक्रमिक) ।
- LLM-selected एक LLM पूल पढ़ता है और अगले वक्ता (AutoGen, CrewAI Hierarchical) का चयन करता है।
- Handoff-driven वर्तमान एजेंट एक हस्तान्तरण उपकरण (स्वारम) को बुलाकर निर्णय लेता है।
- Queue-driven श्रमिक साझा कतार से खींचते हैं; कोई स्पष्ट अगला स्पीकर नहीं (स्वर्म आर्किटेक्चर, मैट्रिक्स) ।
ढांचे के बीच क्या परिवर्तन
एक बार आदिम वस्तुओं को तय कर दिया गया है, शेष डिजाइन निर्णय हैंः
- Memory strategy अल्पकालिक बनाम टिकाऊ चेकपोइंटर (लंगग्राफ चेकपोइंटर) ।
- Safety boundary जो एक हस्तान्तरण (मानव-इन-द-लूप) को मंजूरी दे सकता है।
- Cost accounting प्रति एजेंट टोकन बजट।
- Observability हाथों को ट्रैक करने, पुनरावृत्ति के लिए निरंतर स्थिति।
सभी आदिम के ऊपर लागू किया जा सकता है. उनमें से कोई भी नए आदिम नहीं हैं.
इसे बनाओ
code/main.pyकोई वास्तविक LLM नहीं है प्रत्येक एजेंट एक स्क्रिप्ट नीति है इसलिए ध्यान समन्वय संरचना पर रहता है।
फ़ाइल निर्यातः
Agentनाम, सिस्टम प्रॉम्प्ट, उपकरण, नीति कार्य का एक डेटा वर्ग।Handoffएक फ़ंक्शन जो एक नया एजेंट लौटाता है।SharedStateएक धागे-सुरक्षित संदेश पूल।Orchestratorतीन प्रकार:StaticOrchestrator,HandoffOrchestrator,LLMSelectorOrchestrator(अनुकरण) ।
डेमो तीन एजेंट पाइपलाइन (research → write → review) को तीनों ऑर्केस्ट्रेटर प्रकारों के माध्यम से चलाता है और अंत में संदेश पूल प्रिंट करता है। आप देख सकते हैं कि आउटपुट केवल किसे अगला चुनता है में भिन्न होता है; एजेंट और साझा राज्य रन के माध्यम से समान हैं।
इसे चलाओः
python3 code/main.pyअपेक्षित आउटपुटः तीन ऑर्केस्ट्रेटर रन, प्रति पैटर्न एक। प्रत्येक अंतिम संदेश पूल प्रिंट करता है। हस्तान्तरण-चालित रन कम एजेंटों तक पहुंचता है यदि शोधकर्ता यह जल्दी करने का निर्णय लेता है।
इसका प्रयोग करें
outputs/skill-primitive-mapper.mdएक कौशल है कि किसी भी बहु एजेंट कोडबेस या फ्रेमवर्क दस्तावेज़ को पढ़ता है और चार-प्राथमिक मानचित्रण लौटाता है। दस्तावेज़ों को गहराई से पढ़ने से पहले एक पैराग्राफ समझ प्राप्त करने के लिए इसे एक नए फ्रेमवर्क रिलीज पर चलाएं।
इसे भेजें
एक नए फ्रेमवर्क को अपनाने से पहले, इसके लिए आदिम मानचित्रण लिखें। यदि आप नहीं कर सकते हैं, तो डॉक्स अपूर्ण हैं या फ्रेमवर्क एक पांचवीं आदिम (असामान्य चेक करें कि आपने साझा-राज्य स्वाद नहीं देखा है) का आविष्कार कर रहा है।
अपने वास्तुकला दस्तावेज़ में मानचित्रण को संलग्न करें. जब कोई नया टीम सदस्य शामिल होता है, तो उन्हें एपीआई दस्तावेज़ों से पहले मानचित्रण भेजें। जब फ्रेमवर्क संस्करण बदलते हैं, तो मानचित्रण को अलग करें, परिवर्तन लॉग नहीं।
व्यायाम
- दौड़ें
code/main.pyतीन बार अलग-अलग एजेंट नीति के साथ. देखो कैसे ऑर्केस्ट्रेटर विकल्प बदलता है कि कौन से एजेंटों को चलाते हैं. - चौथे ऑर्केस्ट्रेटर प्रकार को लागू करेंः एक कतार-चालित एक जहां एजेंटों ने काम के लिए राज्य का सर्वेक्षण किया। क्या गतिरोध हो सकता है, और आप इसे कैसे पता लगा सकते हैं?
- LangGraph त्वरित प्रारंभ लें (https://docs.langchain.com/oss/python/langgraph/workflows-agentsलैंगग्राफ के सारणों में से कौन सा 1:1 है और कौन सा सुविधा के लिए wrappers है?
- OpenAI Swarm की रसोई पुस्तिका पढ़ें (https://developers.openai.com/cookbook/examples/orchestrating_agents) चार आदिमों में से किसको स्वार्म सबसे अधिक एर्गोनोमिक बनाता है, और किसको वह कॉल करने वाले को धक्का देता है।
- इस तालिका में एक ढांचा खोजें जो साझा स्थिति को पूरी तरह से छिपाता है। समझाएं कि क्या टूटता है जब एजेंटों को इतिहास को फिर से पढ़ने के बिना हस्तान्तरणों के बीच समन्वय करने की आवश्यकता होती है।
प्रमुख शर्तें
| Term | What people say | What 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. |
आगे पढ़ना
- OpenAI cookbook: Orchestrating Agents — Routines and Handoffs हस्तान्तरण संचालित संग्राहलय का सबसे स्पष्ट संक्षिप्त संक्षिप्त
- AutoGen stable docs ग्रुपचैट + स्पीकर चयन LLM द्वारा चुने गए ऑर्केस्ट्रेशन के लिए संदर्भ है
- LangGraph workflows and agents ग्राफ-एज ऑर्केस्ट्रेशन और रेड्यूसर आधारित साझा राज्य
- CrewAI introduction भूमिका-उद्देश्य-पछाड़ कहानी एजेंट, अनुक्रमिक/ Hierarchical processes
- AG2 (community AutoGen continuation) माइक्रोसॉफ्ट के बाद लाइव ऑटोजेन v0.2 लाइन v0.4 रखरखाव में ले जाया गया
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.