![]()
अब तक इस कोर्स में आपने ऐसे एजेंट बनाए हैं जो आपके लैपटॉप पर, नोटबुक के अंदर चलते हैं, az login और कुछ पर्यावरण चर द्वारा संचालित होते हैं। यह सीखने का बिलकुल सही तरीका है। लेकिन यह उस एजेंट को चलाने का सही तरीका नहीं है जिस पर हजारों ग्राहक 3 बजे सुबह भरोसा करते हैं।
यह पाठ “यह मेरी मशीन पर काम करता है” और “यह उत्पादन में विश्वसनीयता और किफायती तरीके से काम करता है” के बीच के अंतर के बारे में है। हम इस अंतर को Microsoft Foundry और Microsoft Foundry Agent Service का उपयोग करके बंद करते हैं, और ऐसा एक वास्तविक ग्राहक सहायता एजेंट बनाकर करते हैं जिसमें टूल्स, पुनःप्राप्ति, मेमोरी, मूल्यांकन, और निगरानी शामिल हैं।
यह पाठ निम्नलिखित को कवर करेगा:
इस पाठ को पूरा करने के बाद, आप जान पाएंगे कि कैसे:
यह पाठ मानता है कि आपने पिछले पाठ पूरे कर लिए हैं और निम्नलिखित में आरामदायक हैं:
आपको निम्नलिखित की भी आवश्यकता होगी:
az login)।requirements.txt।एक प्रोटोटाइप एजेंट और एक प्रोडक्शन एजेंट का कोर लूप समान होता है — कारण बताएं, टूल्स को कॉल करें, प्रतिक्रिया दें। जो बदलता है वह उस लूप के चारों ओर लिपटी हुई हर चीज़ है। मॉडल लगभग 20% प्रोडक्शन एजेंट का होता है; बाकी 80% परिचालन कंकाल है।
| चिंता | प्रोटोटाइप | प्रोडक्शन |
|---|---|---|
| होस्टिंग | आपके नोटबुक में चलता है | एक होस्टेड सेवा के रूप में चलता है, संस्करणित और जारी किया जाता है |
| पहचान | आपका az login टोकन |
स्कोप्ड RBAC के साथ प्रबंधित पहचान |
| राज्य | इन-मेमोरी, पुनः आरंभ पर खो जाता है | बाहरी (थ्रेड स्टोर, मेमोरी सेवा) |
| विफलता | आप ट्रेसबैक देखते हैं | पुनः प्रयास, फॉलबैक, डेड-लेटर, अलर्ट |
| लागत | “यह कुछ सेंट्स है” | प्रति अनुरोध ट्रैक किया जाता है, रूटेड, कैश्ड, बजट किया गया |
| गुणवत्ता | आप आउटपुट को आंख से जांचते हैं | हर रिलीज से पहले स्वचालित रूप से मूल्यांकन किया जाता है |
| विश्वास | आप हर क्रिया को मंजूरी देते हैं | जोखिम भरे कार्यों के लिए नीति + मानव-इन-द-लूप |
इस तालिका को ध्यान में रखें। नीचे हर अनुभाग इन पंक्तियों में से एक से मेल खाता है।
तीन पैटर्न हैं जिन्हें आप अक्सर संयोजन में उपयोग करेंगे।
एजेंट वस्तु आपके एप्लिकेशन प्रक्रिया के अंदर रहती है। आपका कोड सीधे मॉडल प्रदाता को कॉल करता है; तर्क लूप आपकी सेवा में चलता है। यह वह है जो हर पिछले पाठ में किया गया है।
एजेंट Microsoft Foundry में एक संसाधन के रूप में पंजीकृत है। Foundry तर्क लूप होस्ट करता है, थ्रेड स्टोर करता है, कंटेंट सुरक्षा और RBAC लागू करता है, और एजेंट को Foundry पोर्टल में दृश्य बनाता है। आपका ऐप एक पतला क्लाइंट बन जाता है जो थ्रेड बनाता है और प्रतिक्रियाएँ पढ़ता है।
कई एजेंट (और टूल्स) को स्पष्ट नियंत्रण प्रवाह वाले एक ग्राफ में जोड़ा जाता है — अनुक्रमिक चरण, शाखा बनाना, मानव अनुमोदन नोड्स, और टिकाऊ चेकपॉइंट जो रोक सकते हैं और पुनः शुरू कर सकते हैं। यह Microsoft Agent Framework का वर्कफ़्लोज़ फीचर है जो तैनाती स्तर पर लागू होता है।
flowchart TB
subgraph P1[Client-Hosted]
A1[Your App Process] --> M1[Model Provider]
end
subgraph P2[Hosted Agent]
A2[Thin Client] --> F2[Foundry Agent Service]
F2 --> M2[Model + Tools + Thread Store]
end
subgraph P3[Agent Workflow]
A3[Orchestrator] --> S1[Triage Agent]
S1 --> S2[Resolver Agent]
S2 --> H[Human Approval Node]
H --> S3[Action Agent]
end
एक एजेंट को तैनात करना एक एकबारगी push नहीं है। यह एक लूप है, और यह सॉफ्टवेयर रिलीज़ साइकिल की तरह दिखता है क्योंकि वास्तव में यही है।
flowchart LR
Create[Create / Author] --> Version[Version]
Version --> Evaluate[Evaluate offline]
Evaluate -->|passes gate| Deploy[Deploy hosted]
Evaluate -->|fails gate| Create
Deploy --> Observe[Observe online]
Observe --> Improve[Collect failures]
Improve --> Create
Deploy --> Retire[Retire old version]
मूल विचार, जो पाठ 10 से लिया गया है: ऑफ़लाइन मूल्यांकन एक गेट है, बाद की सोच नहीं। जब तक नया एजेंट संस्करण आपकी मूल्यांकन सीमाओं को पार नहीं करता, तब तक यह जारी नहीं होता। ऑनलाइन पर्यवेक्षण फिर वास्तविक विश्व की विफलताओं को आपके ऑफ़लाइन परीक्षण सेट में वापस भेजता है। यह पूरा लूप है।
एक एजेंट को स्केल करना एक स्टेटलेस वेब API को स्केल करने से अलग है, क्योंकि प्रत्येक अनुरोध कई महंगे मॉडल और टूल कॉल को ट्रिगर कर सकता है। चार तकनीकें अधिकांश लोड संभालती हैं।
स्टेटलेस अनुरोध हैंडलिंग। अपनी प्रक्रिया मेमोरी में किसी यूजर का राज्य न रखें। बातचीत के थ्रेड को Foundry थ्रेड स्टोर या मेमोरी सेवा में स्थायी बनाएं ताकि कोई भी उदाहरण किसी भी अनुरोध को संभाल सके। यही आपको क्षैतिज स्केलिंग की अनुमति देता है — उदाहरण जोड़ें, कोई स्टिकी सेशन नहीं।
मॉडल रूटिंग। हर अनुरोध को आपके सबसे सक्षम (और सबसे महंगे) मॉडल की आवश्यकता नहीं होती। सरल अनुरोधों — इरादा वर्गीकरण, संक्षिप्त तथ्यात्मक उत्तर — को एक छोटे, तेज मॉडल पर रूट करें, और बड़े मॉडल को वास्तविक तर्क के लिए आरक्षित रखें। Foundry का Model Router इसे आपके लिए कर सकता है, या आप स्वयं एक हल्का वर्गीकर्ता लागू कर सकते हैं। आप लैब में DIY संस्करण बनाएंगे।
प्रतिक्रिया कैशिंग। कई समर्थन प्रश्न करीब-दुहरीकरण होते हैं (“मैं अपना पासवर्ड कैसे रीसेट करूं?”)। सामान्य प्रश्नों के उत्तर कैश करें और बिना मॉडल को हिट किए उन्हें सेवा दें। एक मामूली कैश हिट दर भी लागत और विलंबता को महत्वपूर्ण रूप से कम करती है।
समवर्तीता और बैकप्रेशर। मॉडल प्रदाताओं के पास दर सीमाएँ होती हैं। अपनी समवर्तीता को सीमित करें, गुणोत्तर बैकऑफ के साथ पुनः प्रयास करें, और विनम्रतापूर्वक विफल हों (क्यूड “हम उस पर हैं” प्रतिक्रिया 500 से बेहतर है)।
flowchart LR
Q[User query] --> C{Cache hit?}
C -->|yes| R[Return cached answer]
C -->|no| Router{Complexity?}
Router -->|simple| SLM[Small model]
Router -->|complex| LLM[Large model]
SLM --> Out[Response]
LLM --> Out
Out --> Store[Cache + trace]
आप वह नहीं चला सकते जो आप नहीं देख सकते। जैसा कि पाठ 10 में कवर किया गया है, Microsoft Agent Framework स्वाभाविक रूप से OpenTelemetry ट्रेस जारी करता है — हर मॉडल कॉल, टूलInvocation, और ऑर्केस्ट्रेशन चरण एक स्पैन बन जाता है। उत्पादन में आप उन स्पैनों को Microsoft Foundry (या किसी भी OTel-अनुकूल बैकेंड) को निर्यात करते हैं ताकि आप:
from agent_framework.observability import get_tracer
tracer = get_tracer()
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("customer.tier", "enterprise")
span.set_attribute("routed.model", "gpt-5-nano")
# agent execution is traced automatically inside this span
customer.tier और routed.model जैसे गुण एक ट्रेस की दीवार को उत्तर योग्य प्रश्नों में बदल देते हैं (“क्या एंटरप्राइज ग्राहक बहुत बार छोटे मॉडल पर रूट हो रहे हैं?”)।
उत्पादन एजेंट्स में लागत टोकन द्वारा नियंत्रित होती है। तीन लीवर, प्रभाव के क्रम में:
मूल्यांकन गेट और लागत नियंत्रण दो कोणों से देखी जाने वाली एक ही अनुशासन हैं: मूल्यांकन आपको गुणवत्ता का न्यूनतम स्तर बताता है, रूटिंग और कैशिंग लागत को उस स्तर के जितना संभव हो कम रखती हैं।
गवर्नेंस। होस्टेड एजेंट्स Foundry के RBAC, कंटेंट सुरक्षा, और ऑडिट लॉगिंग विरासत में पाते हैं। प्रत्येक एजेंट को न्यूनतम आवश्यक विशेषाधिकार के साथ प्रबंधित पहचान दें — ज्ञान आधार केवल पढ़ने की पहुँच, टिकटिंग API के लिए स्कोप्ड पहुँच, और कुछ नहीं।
मानव-इन-द-लूप। कुछ क्रियाएं इतनी महत्वपूर्ण होती हैं कि उन्हें पूरी तरह से स्वचालित करना उचित नहीं होता — रिफंड जारी करना, खाता हटाना, कानूनी टीम को बढ़ाना। Microsoft Agent Framework अनुमोदन-आवश्यक टूल्स का समर्थन करता है: एजेंट क्रिया प्रस्तावित करता है, निष्पादन रोका जाता है, मानव मंजूर या अस्वीकार करता है, और वर्कफ़्लो फिर चलता है। आपने पाठ 6 में इस प्रिमिटिव को देखा; यहाँ आप इसे तैनात कर रहे हैं।
उत्पादन में MCP। MCP आपके एजेंट को बाहरी टूल्स मानक इंटरफ़ेस के माध्यम से उपभोग करने देता है। उत्पादन में, हर MCP सर्वर को एक अविश्वसनीय सीमा मानें: सर्वर संस्करण पिन करें, इसे स्कोप्ड पहचान के साथ चलाएं, इसके आउटपुट का सत्यापन करें, और कभी भी इसे गुप्त जानकारी न दें। MCP सर्वर एक निर्भरता है, और निर्भरता पैच, ऑडिट, और दर-सीमित होती हैं।
flowchart TB
subgraph Dev[Development Architecture]
D1[Notebook] --> D2[Agent Framework]
D2 --> D3[Model Provider]
D2 --> D4[Local tools]
end
subgraph Deploy[Deployment Architecture]
E1[CI pipeline] --> E2[Evaluation gate]
E2 -->|pass| E3[Foundry Agent Service]
E3 --> E4[Versioned hosted agent]
end
subgraph Run[Runtime Architecture]
F1[Client app] --> F2[Hosted agent]
F2 --> F3[Model Router]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Memory service]
F2 --> F6[MCP tools]
F2 --> F7[OTel -> Foundry tracing]
F2 --> F8[Human approval]
end
ये तीन चित्र — विकास, तैनाती, रनटाइम — एजेंट के जीवन के तीन चरण हैं। इसके बाद की लैब आपको इसे बनाने के लिए मार्गदर्शित करेगी।
code_samples/16-python-agent-framework.ipynb खोलें और इसे अंत तक पूरा करें। आप एक Contoso ग्राहक सहायता एजेंट बनाएंगे जिसमें हर उत्पादन चिंता जुड़ी होगी:
नोटबुक का आयोजन इस प्रकार है कि हर उत्पादन चिंता एक स्व-निहित, चलाने योग्य अनुभाग है। इसका दिल रूटिंग-प्लस-कैशिंग अनुरोध हैंडलर है:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Serve from cache when we can.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Route by complexity to control cost.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Run the agent inside a trace span for observability.
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("routed.model", model)
span.set_attribute("customer.id", customer_id)
response = await support_agent.run(query, model=model)
# 4. Cache and return.
response_cache.set(normalize(query), response.text)
return response.text
रिलीज़ की रक्षा करने वाला मूल्यांकन गेट कुछ इस तरह दिखता है:
async def evaluation_gate(agent, test_cases, threshold: float = 0.8) -> bool:
passed = 0
for case in test_cases:
result = await agent.run(case["input"])
if score_response(result.text, case["expected"]) >= 0.8:
passed += 1
pass_rate = passed / len(test_cases)
print(f"Evaluation pass rate: {pass_rate:.0%} (gate: {threshold:.0%})")
return pass_rate >= threshold # only deploy if the gate passes
हर पंक्ति पढ़ें — नोटबुक उद्देश रूप से प्रिमिटिव्स को छोटा रखता है ताकि इसके पीछे कोई फ्रेमवर्क कॉल छिपा ना हो।
उपरोक्त मूल्यांकन गेट आपके एजेंट वस्तु के खिलाफ ऑफ़लाइन चलता है। एक बार एजेंट को Hosted Agent के रूप में तैनात करने के बाद, आपको एक और, इससे भी सस्ता परीक्षण चाहिए: क्या तैनात एंडपॉइंट वास्तव में उत्तर दे रहा है?
“सफलतापूर्वक” तैनात करना केवल यह साबित करता है कि नियंत्रण विमान परिभाषा स्वीकार करता है — यह साबित नहीं करता कि एजेंट उत्तर देता है। एक गायब निर्भरता, खराब मॉडल रूटिंग, या समाप्त कनेक्शन एक हरा तैनाती छोड़ सकता है जो कुछ लौटाता नहीं। एक धूम्रपान परीक्षण इसे सेकंडों में पकड़ लेता है, हर तैनाती पर, पूरी मूल्यांकन लागत के बिना।
यह रिपोजिटरी AI स्मोक टेस्ट GitHub Action पर आधारित तैयार-सुई-सेट स्मोक टेस्ट पाइपलाइन प्रदान करता है:
tests/lesson-16-smoke-tests.json में Contoso सपोर्ट एजेंट के लिए प्रॉम्प्ट्स और एसेर्शन हैं (ग्राउंडेड पॉलिसी उत्तर, ऑर्डर लुकअप, विषय पर बने रहना, और मल्टी-टर्न थ्रेड कंटिन्यूटी)। अन्य पाठों के एजेंटों के कैटलॉग भी इसके साथ रहते हैं — देखें tests/README.md।.github/workflows/smoke-test.yml Azure OIDC के साथ लॉगिन करता है और हर प्रॉम्प्ट को एजेंट के Responses एंडपॉइंट पर POST करता है, किसी भी एसेर्शन मिस पर जॉब फेल कर देता है।- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
अपने एजेंट को तैनात करने के बाद, Actions टैब से इसे चलाएँ, अपने Foundry प्रोजेक्ट एंडपॉइंट और एजेंट नाम प्रदान करते हुए। संयुक्त पहचान को Foundry प्रोजेक्ट स्कोप पर Azure AI User भूमिका की आवश्यकता होती है। लेयर्स को पिरामिड के रूप में सोचें: स्मोक टेस्ट (पहुंच योग्य और प्रतिक्रिया दे रहा है?) हर परिनियोजन पर चलता है, ऑफ़लाइन मूल्यांकन (पर्याप्त अच्छा है क्या भेजने के लिए?) प्रमोशन से पहले चलता है, और ऑनलाइन मूल्यांकन (यह वास्तविक उपयोग में कैसा कर रहा है?) लगातार चलता रहता है।
असाइनमेंट पर जाने से पहले अपनी समझ का परीक्षण करें।
1. एक प्रोडक्शन एजेंट में लगभग कितना हिस्सा “मॉडल” होता है, और बाकी क्या होता है?
2. आप कब क्लाइंट-होस्टेड एजेंट के बजाए Hosted Agent का चयन करेंगे?
3. एक स्केलेबल एजेंट को अपनी प्रोसेस मेमोरी में स्टेटलेस क्यों होना चाहिए?
4. मॉडल रूटिंग किस समस्या को हल करता है, और इसका मूल्यांकन से क्या संबंध है?
5. “मूल्यांकन गेट” क्या है और यह जीवनचक्र में कहाँ होता है?
6. प्रोडक्शन में MCP सर्वर को अविश्वसनीय सीमा के रूप में क्यों माना जाना चाहिए?
7. प्रोडक्शन एजेंट की लागत पर आमतौर पर सबसे बड़ा प्रभाव डालने वाला एकल परिवर्तन क्या है, और क्यों?
8. निरीक्षणीयता में customer.tier और routed.model जैसे स्पैन गुण क्या भूमिका निभाते हैं?
लैब से ग्राहक समर्थन एजेंट लें और इसे एक विशेष परिदृश्य के लिए मजबूत करें: एक SaaS कंपनी के लिए सदस्यता बिलिंग समर्थन एजेंट।
आपकी प्रस्तुतिकरण को निम्नलिखित होना चाहिए:
get_subscription_status, get_invoice, और issue_credit (50 डॉलर से ऊपर के क्रेडिट के लिए मानव अनुमोदन आवश्यक)।एक संक्षिप्त अनुच्छेद (मार्कडाउन सेल में) लिखें जिसमें यह बताएं कि आपने कौन सा मॉडल-रूटिंग नियम चुना और आप इसे वास्तविक ट्रैफ़िक के साथ कैसे सत्यापित करेंगे। कोई एक सही उत्तर नहीं है — आपको यह आंका जाएगा कि उत्पादन संबंधी चिंताएं संयोजित रूप से तार्किक हैं या नहीं।
इस पाठ में आपने Microsoft Foundry के साथ एक एजेंट को प्रोटोटाइप से प्रोडक्शन में स्थानांतरित किया:
अगला पाठ विपरीत यात्रा है: एजेंट्स को क्लाउड में स्केल करने के बजाय, आप उन्हें एकल डेवलपर मशीन पर लाते हैं और पूरी तरह स्थानीय रूप से चलाते हैं।
कंप्यूटर उपयोग एजेंट (CUA) बनाना
अस्वीकरण: इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा Co-op Translator का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।