एक backend सेवा को Foundry प्रोजेक्ट में परिभाषित मॉडल और agents को कॉल करना होगा।
→मॉडल और agent क्लाइंट प्राप्त करने के लिए प्रोजेक्ट कनेक्शन स्ट्रिंग और DefaultAzureCredential के साथ Azure AI Foundry SDK (AIProjectClient) का उपयोग करें।
क्यों: प्रोजेक्ट क्लाइंट कनेक्शन और डिप्लॉयमेंट को केंद्रीकृत रूप से हल करता है; प्रति-मॉडल endpoints और keys को हार्डकोड करना प्रोजेक्ट governance को बाईपास करता है।
संदर्भ↗
नीति दस्तावेज़ों पर आधारित एक Q&A ऐप बनाएँ।
→दस्तावेज़ों को embed और इंडेक्स करें, प्रति क्वेरी top-k chunks पुनः प्राप्त करें, और उन्हें cite-your-sources निर्देश के साथ चैट completion में context के रूप में पास करें।
क्यों: RAG retraining के बिना ज्ञान को वर्तमान और उद्धृत करने योग्य रखता है; प्रॉम्प्ट में पूर्ण corpus को पास करने से context window और लागत बढ़ जाती है।
बातचीत के दौरान मॉडल को लाइव ऑर्डर स्थिति देखनी होगी।
→JSON schema के साथ एक tool परिभाषित करें, मॉडल को tool call उत्सर्जित करने दें, इसे सर्वर-साइड निष्पादित करें, और परिणाम मॉडल को संक्षेप में प्रस्तुत करने के लिए लौटाएँ।
क्यों: Function/tool calling मॉडल को वास्तविक प्रणालियों को deterministically रूप से लागू करने देता है; स्थिति का "अनुमान" लगाने के लिए कहने से fabrications उत्पन्न होते हैं।
संदर्भ↗
एक कार्य को अंतिम उत्तर से पहले कई आश्रित tool calls की आवश्यकता होती है।
→एक tool-use लूप चलाएँ: प्रत्येक tool परिणाम को वापस मॉडल में फीड करें और तब तक iterate करें जब तक कि वह अधिकतम iteration कैप के साथ अंतिम संदेश वापस न कर दे।
क्यों: Iterative tool loops multistep reasoning का समर्थन करते हैं; एक single round trip आश्रित लुकअप को चेन नहीं कर सकता है, और एक uncapped लूप नियंत्रण से बाहर हो सकता है।
शिपिंग से पहले, यह निर्धारित करें कि एक RAG ऐप कितनी बार hallucinate करता है या विषय से भटक जाता है।
→एक labeled test set पर groundedness, relevance और coherence के लिए Foundry evaluators चलाएँ और threshold scores पर release को गेट करें।
क्यों: Built-in evaluators मापने योग्य गुणवत्ता और सुरक्षा संकेत देते हैं; कुछ नमूनों को सरसरी तौर पर देखने से व्यवस्थित fabrication नहीं पकड़ में आती है।
संदर्भ↗
एक support agent को एक स्पष्ट persona, लक्ष्यों और सीमाओं के साथ परिभाषित करें।
→agent के सिस्टम निर्देश (भूमिका, लक्ष्य, अस्वीकृति नियम) सेट करें और केवल वही tools संलग्न करें जिनकी उसे अपने दायरे के लिए आवश्यकता है।
क्यों: सख्त निर्देश और न्यूनतम tool एक्सेस agent को कार्य पर बनाए रखते हैं; व्यापक निर्देश और प्रत्येक tool scope creep और असुरक्षित कार्यों को आमंत्रित करते हैं।
एक agent को एक सत्र के भीतर बातचीत के दौरान context याद रखना चाहिए।
→Foundry Agent Service threads का उपयोग करें, जो प्रति बातचीत संदेश इतिहास को बनाए रखते हैं ताकि प्रत्येक run पिछली बातचीत देख सके।
क्यों: Threads प्रबंधित बातचीत स्मृति प्रदान करते हैं; प्रत्येक कॉल पर मैन्युअल रूप से पूरे ट्रांसक्रिप्ट को फिर से भेजना नाजुक है और गलत तरीके से truncate करना आसान है।
संदर्भ↗
एक agent को custom plumbing के बिना web grounding और कोड execution की आवश्यकता है।
→हाथ से integrations को रोल करने के बजाय Grounding with Bing Search और Code Interpreter जैसे built-in Foundry agent tools संलग्न करें।
क्यों: Managed tools out of the box शासित और समर्थित होते हैं; custom reimplementations रखरखाव जोड़ते हैं और platform safety controls को छोड़ देते हैं।
एक प्राथमिक agent को बिलिंग प्रश्नों को एक विशेष बिलिंग agent को सौंपना चाहिए।
→connected agents का उपयोग करें: बिलिंग agent को एक tool के रूप में उजागर करें जिसे मुख्य agent कॉल कर सकता है, ताकि यह उप-कार्यों को विशेषज्ञों को रूट कर सके।
क्यों: Connected agents hierarchical delegation को सक्षम करते हैं; प्रत्येक डोमेन को एक मेगा-agent में cramming से निर्देश bloated हो जाते हैं और सटीकता खराब होती है।
संदर्भ↗
एक वर्कफ़्लो को एक planner, एक researcher, और एक writer की आवश्यकता होती है जो साझा स्थिति के साथ सहयोग करते हैं।
→उन्हें एक multi-agent फ्रेमवर्क (Semantic Kernel / AutoGen on Foundry) के साथ एक परिभाषित orchestration pattern और साझा context का उपयोग करके ऑर्केस्ट्रेट करें।
क्यों: फ्रेमवर्क turn-taking, state और termination का प्रबंधन करते हैं; agents के बीच ad-hoc स्ट्रिंग पासिंग में कोई समन्वय या स्टॉप कंडीशन नहीं होती है।
एक agent रात भर unattended चलता है और अकेले जोखिम भरे काम नहीं करना चाहिए।
→इसे allow-listed tools, प्रति-कार्य बजट, content फ़िल्टर और एक checkpoint के साथ बांधें जो अनुमोदन के लिए उच्च-प्रभाव वाले चरणों को escalate करता है।
क्यों: Layered safeguards स्वायत्तता को सुरक्षित रखते हैं; पूर्ण tool एक्सेस और बिना अनुमोदन गेट के एक autonomous लूप अपरिवर्तनीय क्षति का कारण बन सकता है।
एक agent कार्य के बीच-बीच में रुक-रुक कर विफल हो जाता है और आपको विफल होने वाले चरण का पता लगाना होगा।
→विफल tool या गलत तर्क का पता लगाने के लिए Foundry में run के traced steps और tool-call inputs/outputs का निरीक्षण करें।
क्यों: Step-level traces यह इंगित करते हैं कि एक run कहाँ टूटा; एक एकल अंतिम त्रुटि संदेश यह छुपाता है कि वास्तव में कौन सा tool call या reasoning step विफल हुआ।
आउटपुट असंगत हैं और formatting निर्देशों को अनदेखा करते हैं।
→एक स्पष्ट सिस्टम संदेश, few-shot उदाहरण और स्पष्ट आउटपुट बाधाओं का उपयोग करें; सख्त आकार के लिए, structured outputs / JSON schema सक्षम करें।
क्यों: Structured prompting और schema-enforced outputs परिणामों को विश्वसनीय बनाते हैं; temperature बढ़ाना या आँख बंद करके पुनः प्रयास करना instruction-following को ठीक नहीं करता है।
संदर्भ↗
एक creative कॉपी कार्य बहुत दोहराव वाला लगता है; एक डेटा-extraction कार्य बहुत यादृच्छिक है।
→creative कार्य के लिए temperature/top-p बढ़ाएँ और extraction के लिए उन्हें 0 की ओर कम करें ताकि इसे deterministic बनाया जा सके।
क्यों: Sampling params विविधता और determinism के बीच व्यापार करते हैं; जब पैरामीटर सेटिंग वास्तविक कारण हो तो मॉडल बदलना overkill है।
एक reasoning agent कठिन कार्यों पर टालने योग्य तर्क त्रुटियां करता है।
→एक reflection / self-critique चरण जोड़ें जहाँ agent अपने ड्राफ्ट की समीक्षा और संशोधन करता है, या इस चरण के लिए एक reasoning मॉडल का उपयोग करें।
क्यों: Chain-of-thought और self-critique कठिन-कार्य सटीकता में सुधार करते हैं; एक एकल फॉरवर्ड पास को अपनी गलती पकड़ने का कोई मौका नहीं मिलता है।
ऑपरेशंस को प्रोडक्शन में प्रति अनुरोध टोकन खर्च, लेटेंसी और सुरक्षा संकेतों की आवश्यकता है।
→ऐप से Azure Monitor / Application Insights में OpenTelemetry traces और मेट्रिक्स उत्सर्जित करें, टोकन, लेटेंसी और content-safety फ़्लैग कैप्चर करें।
क्यों: एकीकृत observability लागत, प्रदर्शन और सुरक्षा को एक साथ बांधती है; मैन्युअल रूप से लॉग scraping एक धीमी बारी को उसके टोकन उपयोग से सहसंबंधित नहीं कर सकता।
संदर्भ↗
एक ऐप सस्ती classification को कभी-कभी जटिल तर्क के साथ मिलाता है।
→कई डिप्लॉयमेंट को ऑर्केस्ट्रेट करें: सरल बारीकियों को SLM पर रूट करें और एक ऐप लेयर के पीछे एक frontier LLM पर कठिन बारीकियों को escalate करें।
क्यों: मॉडल रूटिंग प्रति बारी लागत और गुणवत्ता को अनुकूलित करता है; हर चीज के लिए एक premium मॉडल का उपयोग करना आसान बहुमत के लिए अधिक भुगतान करता है।