एजेंटों के लिए अभिनेता मॉडल असिनक संदेश और टाइप किए गए रनटाइम
Type: Learn + Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns)
Time: ~75 minutes
सीखने के लक्ष्य
- अभिनेता मॉडल का वर्णन करेंः एजेंटों को अभिनेता के रूप में, संदेशों को एकमात्र आईपीसी के रूप में, प्रति अभिनेता विफलता अलगाव।
- AutoGen v0.4 के तीन एपीआई परतों का नाम कोर, एजेंटचैट, एक्सटेंशन और प्रत्येक के लिए क्या है।
- यह समझाएं कि संदेश वितरण को संभाल से अलग करने से दोष पृथक्करण और प्राकृतिक समवर्तीता क्यों होती है।
- पायथन में एक stdlib अभिनेता रनटाइम लागू करें और दो एजेंट कोड समीक्षा प्रवाह को उस पर पोर्ट करें।
समस्या
अधिकांश एजेंट फ्रेमवर्क सिंक्रोनस होते हैंः एक एजेंट कॉल स्टैक में उत्पादन करता है, एक एजेंट खपत करता है। विफलता स्टैक को क्रैश करती है। समवर्तीता को घुमाया जाता है। वितरण को फिर से लिखने की आवश्यकता होती है।
ऑटोजेन v0.4 का जवाबः अभिनेता मॉडल। प्रत्येक एजेंट एक निजी इनबॉक्स वाला एक अभिनेता है। संदेश एकमात्र बातचीत हैं। रनटाइम डिलीवरी को हैंडलिंग से अलग करता है। विफलता एक अभिनेता को अलग करती है। प्रतिस्पर्धा मूल है। वितरण सिर्फ अलग परिवहन है।
अवधारणा
अभिनेता
एक अभिनेता के पास हैः
- एक निजी राज्य (जो कभी भी बाहर से सीधे छुआ नहीं गया) ।
- इनबॉक्स (संदेश कतार)
- एक संचालक:
receive(message) -> effectsजहां प्रभाव "जवाब", "दूसर अभिनेता को भेजें", "नया अभिनेता को स्पैन करें", "अपडेट की स्थिति", "स्वयं को रोकें।"
दो अभिनेता स्मृति साझा नहीं कर सकते। वे केवल संदेश भेज सकते हैं।
तीन एपीआई परतें
ऑटोजेन v0.4 तीन में अपनी सतह विभाजितः
- Core.निम्न स्तर के अभिनेता ढांचे।
AgentRuntime,Agent,Message,Topic. असिनक्रॉन संदेश विनिमय, घटना संचालित. - AgentChat.कार्य-चालित उच्च-स्तरीय एपीआई (v0.2 के लिए प्रतिस्थापन ConversableAgent) ।
AssistantAgent,UserProxyAgent,RoundRobinGroupChat,SelectorGroupChat. . - Extensions.एकीकरण ओपनएआई, मानविकी, अज़ूर, उपकरण, स्मृति।
क्यों अलग होना महत्वपूर्ण है
v0.2 मॉडल में, कॉल agent_a.chat(agent_b)एजेंट_ब वापस आने तक एजेंट_ए को समवर्ती रूप से ब्लॉक करता है।send(agent_b, msg)एजेंट_बी के इनबॉक्स में संदेश डालता है और लौटाता है. रनटाइम बाद में वितरित करता है. तीन परिणामः
- Fault isolation.एजेंट बी क्रैश नहीं करता एजेंट ए रनटाइम बी के हैंडलर में विफलता को पकड़ता है और यह तय करता है कि क्या करना है (लॉग, पुनः प्रयास, मृत पत्र) ।
- Natural concurrency.एक ही समय में कई संदेश उड़ रहे हैं; अभिनेता एक साथ अपने इनबॉक्स को संसाधित कर रहे हैं।
- Distribution-ready.इनबॉक्स + ट्रांसपोर्ट एक ही अमूर्तता है चाहे अभिनेता प्रक्रिया में हो या किसी अन्य मेजबान पर।
स्थलाकृति
- RoundRobinGroupChat.एजेंट एक निश्चित रोटेशन में बारी बारी करते हैं।
- SelectorGroupChat.एक चयन एजेंट वार्तालाप संदर्भ के आधार पर अगला कौन जाता है चुनता है।
- Magentic-One.वेब ब्राउज़िंग, कोड निष्पादन, फ़ाइल संभाल के लिए संदर्भ बहु एजेंट टीम. एजेंट चैट पर बनाया गया.
अवलोकनशीलता
OpenTelemetry समर्थन में निर्मित है. प्रत्येक संदेश एक अवधि जारी करता है; उपकरण कॉल ले जाते हैं gen_ai.*2026 OTel GenAI के अर्थशास्त्र सम्मेलनों के अनुसार विशेषताएं (पाठ 23) ।
स्थितिः रखरखाव मोड
2026 की शुरुआतः अनुसंधान और प्रोटोटाइप के लिए ऑटोजेन v0.7.x स्थिर है। माइक्रोसॉफ्ट ने सक्रिय विकास को माइक्रोसॉफ्ट एजेंट फ्रेमवर्क, उत्पादन उत्तराधिकारी (सार्वजनिक पूर्वावलोकन 1 अक्टूबर 2025; 1.0 GA को Q1 2026 के अंत के लिए लक्षित किया गया था) में स्थानांतरित कर दिया है। ऑटोजेन पैटर्न साफ-सुथरा आगे पोर्ट करते हैं।
इसे बनाओ
code/main.pyएक stdlib अभिनेता रनटाइम लागू करता हैः
Messageके साथ टाइप किया गया उपयोगिता लोडsender,recipient,topic,body. .Actorअमूर्त के साथreceive(message, runtime). .Runtimeघटना लूप के साथ साझा कतार, वितरण, विफलता अलगाव।- दो अभिनेताओं का डेमो:
ReviewerAgentसमीक्षा कोड,ChecklistAgentएक चेकलिस्ट चलाता है; वे सहमति तक संदेशों का आदान-प्रदान करते हैं।
इसे चलाओः
python3 code/main.pyनिशान संदेश वितरण दिखाता है, एक अभिनेता में एक अनुकरणीय विफलता जो दूसरे को क्रैश नहीं करती है, और एक साझा निर्णय पर अभिसरण।
इसका प्रयोग करें
- AutoGen v0.4/v0.7(रक्षण) अनुसंधान, प्रोटोटाइप, बहु एजेंट पैटर्न के लिए स्थिर।
- Microsoft Agent Framework उत्पादन उत्तराधिकारी (सार्वजनिक पूर्वावलोकन अक्टूबर 2025); एक ताज़ा एपीआई में एक ही अभिनेता-मॉडल विचार।
- LangGraph swarm topology(पाठ 13) समान पैटर्न साझा-सामग्री हस्तान्तरण के माध्यम से।
- Custom actor runtime जब आपको विशिष्ट परिवहन की आवश्यकता होती है (NATS, RabbitMQ, gRPC) ।
इसे भेजें
outputs/skill-actor-runtime.mdएक दिए गए मल्टी-एजेंट कार्य के लिए न्यूनतम अभिनेता रनटाइम प्लस एक टीम टेम्पलेट (राउंडरॉबिन या चयनकर्ता) उत्पन्न करता है।
व्यायाम
- एक मृत अक्षर कतार जोड़ेंः जब एक संचालक उठाता है, मानव निरीक्षण के लिए विफलता संदेश पार्क. कितनी बार DLQ अपने खिलौना में मारा जाता है?
- कार्यान्वयन
SelectorGroupChat: एक चयनकर्ता अभिनेता वार्तालाप स्थिति के आधार पर अगले संदेश को संसाधित करने वाले का चयन करता है। - वितरित परिवहन जोड़ेंः प्रक्रिया में कतार को JSON-over-HTTP सर्वर के लिए स्विच करें ताकि अभिनेता अलग-अलग प्रक्रियाओं में चल सकें।
- प्रति संदेश (या कोई-ऑप स्टैंड-इन) एक OTel अवधि तार।
gen_ai.agent.name,gen_ai.operation.nameपाठ 23 के अनुसार। - ऑटोजेन v0.4 के वास्तुकला पोस्ट पढ़ें. अपने खिलौने को वास्तविक में ले जाओ।
autogen_coreआप उत्पादन में क्या महत्वपूर्ण है छोड़ दिया?
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| Actor | "Agent" | Private state + inbox + handler; no shared memory |
| Message | "Event" | Typed payload; the only way actors interact |
| Inbox | "Mailbox" | Per-actor queue of pending messages |
| Runtime | "Agent host" | Event loop that routes messages and isolates failures |
| Topic | "Channel" | Named publish-subscribe route between actors |
| Fault isolation | "Let it crash" | One actor failing does not crash others |
| RoundRobinGroupChat | "Fixed-rotation team" | Agents take turns in order |
| SelectorGroupChat | "Context-routed team" | Selector picks who goes next |
| Magentic-One | "Reference team" | Multi-agent squad for web + code + files |
आगे पढ़ना
- AutoGen v0.4, Microsoft Research पुनः डिजाइन पोस्ट
- LangGraph overview ग्राफ के रूप में वैकल्पिक
- OpenTelemetry GenAI semantic conventions अवधि ऑटोजेन डिफ़ॉल्ट रूप से उत्सर्जित करता है
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.