किसी न किसी बिंदु पर, हर मल्टी-एजेंट सिस्टम एक साधारण राउटर से आगे निकल जाता है। पहला संकेत आमतौर पर तब होता है जब किसी विशेषज्ञ एजेंट को फॉलो-अप प्रश्न पूछना होता है, या टर्न के बीच में यह महसूस होता है कि किसी अन्य एजेंट को जारी रखना चाहिए। वहाँ फिक्स्ड पाइपलाइन विफल होती है। वन-शॉट राउटर वहाँ विफल होता है।
यही वह समस्या है जिसे Microsoft Agent Framework में Handoff ऑर्केस्ट्रेशन पैटर्न हल करने के लिए डिज़ाइन किया गया है।
Handoff कैसे काम करता है
डेवलपर एक ग्राफ घोषित करता है: ये एजेंट हैं, ये उनके बीच के एज हैं। फ्रेमवर्क बाकी काम करता है — प्रत्येक आउटगोइंग एज के लिए एक हैंडऑफ टूल बनाता है और प्रत्येक एजेंट में इंजेक्ट करता है। जब कोई एजेंट नियंत्रण सौंपने का फैसला करता है, तो वह टूल को कॉल करता है। फ्रेमवर्क टोपोलॉजी को लागू करता है।
तीन चीजें इसे एजेंट्स के एक-दूसरे को कॉल करने से अलग बनाती हैं:
- एक साझा ट्रांसक्रिप्ट — प्राप्त करने वाला एजेंट पूरी बातचीत का इतिहास देखता है। शुरू से शुरू किए बिना।
- टोपोलॉजी प्रवर्तन — एजेंट केवल घोषित लक्ष्यों को हैंडऑफ कर सकता है। रूटिंग बग ऑथरिंग के समय पकड़े जाते हैं, प्रोडक्शन में नहीं।
- प्राकृतिक समाप्ति — जब सक्रिय एजेंट हैंडऑफ टूल को कॉल किए बिना अपना टर्न समाप्त करता है, तो वर्कफ्लो उपयोगकर्ता को सौंप देता है। कोई पोलिंग नहीं, कोई स्पष्ट एग्जिट शर्त नहीं।
एक न्यूनतम उदाहरण
.NET में, हैंडऑफ वर्कफ्लो बनाना ऐसा दिखता है:
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Workflows;
AIAgent triage = chatClient.AsAIAgent(
instructions: "Route to the right specialist.",
name: "Triage");
AIAgent billing = chatClient.AsAIAgent(
instructions: "Handle billing questions.",
name: "Billing");
AIAgent tech = chatClient.AsAIAgent(
instructions: "Handle technical support.",
name: "Tech");
var workflow = HandoffWorkflow.Create()
.Add(triage, targets: [billing, tech])
.Add(billing, targets: [triage])
.Add(tech, targets: [triage, billing]);
Triage किसी भी विशेषज्ञ को भेज सकता है। दोनों विशेषज्ञ triage को वापस भेज सकते हैं। ग्राफ एसाइक्लिक के अनुकूल है लेकिन जरूरत पड़ने पर बैक-एज का समर्थन करता है (“मुझे अधिक जानकारी चाहिए” → रिसर्च पर वापस)।
Handoff का उपयोग कब करें (और कब नहीं)
Handoff एक अच्छा विकल्प है जब:
- बातचीत के बीच में स्वामित्व बदल सकता है — एजेंट को एहसास हो सकता है कि वह गलत विशेषज्ञ है
- बैक-एज महत्वपूर्ण हैं — रिस्टार्ट के बिना पिछले चरण पर वापस जाने की जरूरत हो सकती है
- रूटिंग निर्णय सूक्ष्म हैं — हैंडऑफ करने का निर्णय प्रासंगिक है और टाइप्ड प्रेडिकेट के बजाय मॉडल द्वारा बेहतर लिया जाता है
यह सही विकल्प नहीं है जब:
- आपकी पाइपलाइन फिक्स्ड और सीक्वेंशियल है — उसके लिए
Sequentialवर्कफ्लो का उपयोग करें - प्रत्येक चरण स्वतंत्र है — एजेंट एक ट्रांसक्रिप्ट साझा कर रहे हैं जहां केवल एक को इसकी जरूरत थी, वह सिर्फ शोर है
- आपको कड़े प्रोसेसिंग गारंटी की जरूरत है — मॉडल-चालित रूटिंग का अनिर्धारणवाद वह नहीं है जो आप चाहते हैं
बैक-एज और Human-in-the-Loop
Handoff जो सबसे दिलचस्प रूप सक्षम करता है उनमें से एक असली बैक-एज है। एजेंट तय कर सकता है “मेरे पास पर्याप्त जानकारी नहीं है” और एक रिसर्च चरण पर वापस रूट कर सकता है — हार्डकोडेड लूप के साथ नहीं, बल्कि इसलिए कि मॉडल तय करता है कि यह सही निर्णय है।
Human-in-the-loop इंटरैक्शन भी स्वाभाविक रूप से कंपोज होती हैं। जब किसी विशेषज्ञ को उपयोगकर्ता इनपुट की जरूरत होती है, तो वर्कफ्लो डिफ़ॉल्ट टर्न लूप के माध्यम से उपयोगकर्ता को सौंप देता है, प्रतिक्रिया एकत्र करता है, और पूर्ण संदर्भ के साथ फिर से शुरू होता है। एजेंट ने कभी बातचीत नहीं खोई।
निष्कर्ष
Handoff उन पैटर्न में से एक है जो सरल लगता है लेकिन एक बार आंतरिक होने के बाद बहुत कुछ सक्षम करता है: विकेंद्रीकृत रूटिंग, साझा संदर्भ, लागू टोपोलॉजी, प्राकृतिक समाप्ति। यह सही अगला कदम है जब आपके एजेंट “वास्तव में, किसी और को इसे संभालना चाहिए” कहना शुरू करते हैं।
मूल पोस्ट में पूरा वॉकथ्रू पढ़ें: A Tour of the Handoff Orchestration Pattern
