<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Workflows | The .NET Blog</title><link>https://thedotnetblog.com/hi/tags/workflows/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>hi</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/hi/tags/workflows/index.xml" rel="self" type="application/rss+xml"/><item><title>Microsoft Agent Framework भाग 3: टूल्स से वर्कफ्लो तक — बिल्डिंग ब्लॉक्स अपनी जगह पर क्लिक हो जाते हैं</title><link>https://thedotnetblog.com/hi/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/hi/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/</guid><description>.NET AI बिल्डिंग ब्लॉक्स सीरीज के भाग 3 में Microsoft Agent Framework को कवर किया गया है — टूल्स वाले सिंगल एजेंट से लेकर मेमोरी वाले मल्टी-एजेंट वर्कफ्लो तक। जानें क्या वाकई मायने रखता है।</description><content:encoded>&lt;p&gt;&lt;em&gt;यह पोस्ट स्वचालित रूप से अनुवादित की गई है। मूल संस्करण के लिए, &lt;a href="https://thedotnetblog.com/hi/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/"&gt;यहाँ क्लिक करें&lt;/a&gt;।&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;अगर आप .NET में Building Blocks for AI सीरीज को फॉलो कर रहे हैं, तो आप जानते हैं: भाग 1 ने हमें &lt;code&gt;IChatClient&lt;/code&gt; (यूनिवर्सल मॉडल इंटरफेस) दिया और भाग 2 ने &lt;code&gt;Microsoft.Extensions.VectorData&lt;/code&gt; (सिमेंटिक सर्च और RAG)। दोनों फंडामेंटल हैं, दोनों अपने आप में उपयोगी हैं। लेकिन यहाँ से सब कुछ कनेक्ट होना शुरू होता है।&lt;/p&gt;
&lt;p&gt;भाग 3 &lt;a href="https://github.com/microsoft/agent-framework"&gt;Microsoft Agent Framework&lt;/a&gt; के बारे में है — और ईमानदारी से, यह वही पीस है जिसे मैं .NET में देखने का इंतजार कर रहा था। 1.0 अप्रैल में शिप हुआ। API स्थिर है। असली एजेंट बनाने का समय आ गया है।&lt;/p&gt;
&lt;h2 id="एजट-वसतव-म-कय-ह-vs-चटबट"&gt;एजेंट वास्तव में क्या है (vs. चैटबॉट)&lt;/h2&gt;
&lt;p&gt;कोड में जाने से पहले, इस अंतर को समझ लेते हैं। एक चैटबॉट इनपुट रिसीव करता है, मॉडल कॉल करता है, आउटपुट रिटर्न करता है। सिंपल लूप।&lt;/p&gt;
&lt;p&gt;एक एजेंट के पास &lt;em&gt;ऑटोनॉमी&lt;/em&gt; होती है। वह किसी टास्क के बारे में रिजन कर सकता है, तय कर सकता है कि कौन से टूल्स इस्तेमाल करने हैं, उन्हें कॉल कर सकता है, रिजल्ट्स इवैल्युएट कर सकता है और तय कर सकता है कि आगे क्या करना है — यह सब बिना आपके हर सिनेरियो के लिए स्टेप-बाय-स्टेप लॉजिक लिखे। आप उसे टूल्स और इंस्ट्रक्शन देते हैं, और वह ऑर्केस्ट्रेशन खुद संभाल लेता है।&lt;/p&gt;
&lt;p&gt;इस तरह सोचें: &lt;code&gt;IChatClient&lt;/code&gt; एक बातचीत करने जैसा है। एक एजेंट किसी को टास्क लिस्ट सौंपने जैसा है।&lt;/p&gt;
&lt;h2 id="10-लइन-म-आपक-पहल-एजट"&gt;10 लाइनों में आपका पहला एजेंट&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Agents.AI
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;AzureOpenAIClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Uri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetChatClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deploymentName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;You are good at telling jokes.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Joker&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Tell me a joke about a pirate.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;.AsAIAgent()&lt;/code&gt; एक्सटेंशन मेथड ब्रिज है। MEAI के &lt;code&gt;.AsIChatClient()&lt;/code&gt; जैसा ही पैटर्न — प्रोवाइडर के SDK को एक स्थिर एब्स्ट्रैक्शन में रैप करता है। Azure OpenAI, OpenAI, GitHub Models, Microsoft Foundry या लोकल मॉडल्स के साथ काम करता है।&lt;/p&gt;
&lt;p&gt;स्ट्रीमिंग भी काम करती है:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunStreamingAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Tell me a joke about a pirate.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="एजट-क-टलस-दन"&gt;एजेंट को टूल्स देना&lt;/h2&gt;
&lt;p&gt;यहीं पर एजेंट फैंसी चैटबॉट्स नहीं रहते। टूल्स वो फंक्शन्स हैं जिन्हें मॉडल यूजर के रिक्वेस्ट के आधार पर कॉल करने का फैसला कर सकता है। आपकी तरफ से कोई रूटिंग लॉजिक नहीं चाहिए — मॉडल खुद समझ लेता है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[Description(&amp;#34;Get the weather for a given location.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;GetWeather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; [Description(&amp;#34;The location to get the weather for.&amp;#34;)]&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;The weather in {location} is cloudy with a high of 15°C.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;You are a helpful assistant&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;AIFunctionFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GetWeather&lt;/span&gt;&lt;span class="p"&gt;)]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;दो बातें ध्यान देने लायक। पहली, &lt;code&gt;AIFunctionFactory&lt;/code&gt; MEAI से है — वही टूल फैक्ट्री जो आप एक नॉर्मल &lt;code&gt;IChatClient&lt;/code&gt; के साथ इस्तेमाल करते। अगर आपने चैट सिनेरियोज़ के लिए टूल्स पहले से डिफाइन किए हैं, वो यहाँ भी काम करते हैं।&lt;/p&gt;
&lt;p&gt;दूसरी, &lt;code&gt;Description&lt;/code&gt; एट्रिब्यूट्स बहुत मायने रखते हैं। इसी तरह मॉडल समझता है कि कोई टूल क्या करता है और कब इस्तेमाल करना है। इन्हें इंसानों के लिए नहीं, अपनी AI के लिए डॉक्युमेंटेशन मानें।&lt;/p&gt;
&lt;h2 id="सशन-वकई-यद-रखन-वल-बतचत"&gt;सेशन: वाकई याद रखने वाली बातचीत&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AgentSession&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateSessionAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Tell me a joke about a pirate.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;Now add some emojis and tell it in the voice of a pirate&amp;#39;s parrot.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;बिना सेशन के, हर &lt;code&gt;RunAsync&lt;/code&gt; कॉल स्टेटलेस होती है। सेशन के साथ, एजेंट जानता है आप किस जोक की बात कर रहे हैं। &lt;code&gt;AgentSession&lt;/code&gt; टर्न्स के बीच कन्वर्सेशन हिस्ट्री प्रिजर्व करता है।&lt;/p&gt;
&lt;p&gt;प्रोडक्शन स्टेटलेस सर्विसेज के लिए, सेशन्स क्लीनली सीरियलाइज होते हैं:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;JsonElement&lt;/span&gt; &lt;span class="n"&gt;sessionState&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SerializeSessionAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ... कहीं स्टोर करें ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;restoredSession&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DeserializeSessionAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sessionState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;What were we just talking about?&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;restoredSession&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;यह क्रिटिकल है अगर आपका एजेंट सर्वरलेस या होरिजोंटली-स्केल्ड एनवायरनमेंट में रन करता है।&lt;/p&gt;
&lt;h2 id="aicontextprovider-सशनस-क-पर-परससटट-ममर"&gt;AIContextProvider: सेशन्स के पार परसिस्टेंट मेमोरी&lt;/h2&gt;
&lt;p&gt;सेशन्स एक सेशन &lt;em&gt;के भीतर&lt;/em&gt; कन्वर्सेशन हिस्ट्री प्रिजर्व करते हैं। लेकिन सेशन्स के पार किसी यूजर के बारे में जानकारी? &lt;code&gt;AIContextProvider&lt;/code&gt; यह हैंडल करता है।&lt;/p&gt;
&lt;p&gt;इसके दो हुक्स हैं:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ProvideAIContextAsync&lt;/code&gt;&lt;/strong&gt; — हर इंटरैक्शन से &lt;em&gt;पहले&lt;/em&gt; रन होता है, एजेंट में कॉन्टेक्स्ट इंजेक्ट करता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;StoreAIContextAsync&lt;/code&gt;&lt;/strong&gt; — हर इंटरैक्शन के &lt;em&gt;बाद&lt;/em&gt; रन होता है, सीखने और परसिस्ट करने की सुविधा देता है&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;पैटर्न एलीगेंट है: आप मल्टीपल प्रोवाइडर्स स्टैक कर सकते हैं — एक यूजर प्रेफरेंसेज के लिए, एक हालिया इंटरैक्शन्स के लिए, एक जो रिलेवेंट डॉक्यूमेंट्स के लिए VectorData स्टोर क्वेरी करे। आखिरी वाला भाग 2 का RAG पैटर्न है, जो अब हर एजेंट कॉल के पार्ट के रूप में ऑटोमैटिकली रन होता है।&lt;/p&gt;
&lt;h2 id="मलट-एजट-वरकफल"&gt;मल्टी-एजेंट वर्कफ्लो&lt;/h2&gt;
&lt;p&gt;यहाँ फ्रेमवर्क अपना नाम सार्थक करता है। इसमें एक ग्राफ-बेस्ड वर्कफ्लो सिस्टम है जहाँ एग्जीक्यूटर्स (एजेंट, फंक्शन्स, जो भी) एजेस के जरिए कनेक्ट होते हैं।&lt;/p&gt;
&lt;p&gt;नेटिवली सपोर्टेड कुछ पैटर्न:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;सीक्वेंशियल&lt;/strong&gt;: एजेंट A का आउटपुट एजेंट B में जाता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;कंकरेंट (फैन-आउट/फैन-इन)&lt;/strong&gt;: मल्टीपल एजेंट्स को पैरेलल में डिस्पैच, रिजल्ट्स कलेक्ट&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;कंडीशनल रूटिंग&lt;/strong&gt;: आउटपुट के आधार पर अलग-अलग एजेंट्स को वर्क रूट करें&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;राइटर-क्रिटिक लूप्स&lt;/strong&gt;: एक एजेंट लिखता है, दूसरा इवैल्युएट करता है, अप्रूव होने तक लूप&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;सब-वर्कफ्लो&lt;/strong&gt;: वर्कफ्लो को हायरार्किकली कम्पोज करें&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;राइटर-क्रिटिक एग्जाम्पल:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;WorkflowBuilder&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;writerAgent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;writerAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;criticAgent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;criticAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;writerAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IsApproved&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithOutputFrom&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;criticAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IsApproved&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;क्लीन, रीडेबल, और कंडीशन-बेस्ड रूटिंग का मतलब है कि आपको खुद लूप लॉजिक नहीं लिखनी।&lt;/p&gt;
&lt;h2 id="हयमन-इन-द-लप"&gt;ह्यूमन-इन-द-लूप&lt;/h2&gt;
&lt;p&gt;हर चीज पूरी तरह ऑटोनॉमस तरीके से नहीं चलनी चाहिए। सेंसिटिव ऑपरेशन्स के लिए — डेटाबेस राइट्स, फाइनेंशियल ट्रांजेक्शन्स, कम्युनिकेशन भेजना — आप चाहते हैं कि एजेंट एग्जीक्यूट करने से पहले कोई इंसान अप्रूव करे।&lt;/p&gt;
&lt;p&gt;फ्रेमवर्क में इसके लिए &lt;code&gt;FunctionApprovalRequestContent&lt;/code&gt; और &lt;code&gt;FunctionApprovalResponseContent&lt;/code&gt; के जरिए बिल्ट-इन सपोर्ट है। एजेंट टूल कॉल प्रोपोज करता है, आपका एप्लिकेशन कोड इसे यूजर को प्रेजेंट करता है, और रिस्पॉन्स तय करता है कि एग्जीक्यूशन आगे बढ़ेगा या नहीं।&lt;/p&gt;
&lt;p&gt;एंटरप्राइज सेटिंग्स में एजेंट्स के बारे में सोचने का यही सही तरीका है: पूरी तरह ऑटोनॉमस नहीं, बल्कि &lt;em&gt;गार्डरेल्स के साथ ऑटोनॉमी&lt;/em&gt;।&lt;/p&gt;
&lt;h2 id="पर-तसवर"&gt;पूरी तस्वीर&lt;/h2&gt;
&lt;p&gt;एक कदम पीछे जाकर देखें:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MEAI&lt;/strong&gt; किसी भी मॉडल का यूनिवर्सल इंटरफेस देता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VectorData&lt;/strong&gt; सिमेंटिक सर्च के जरिए एजेंट्स को आपके ऑर्गेनाइजेशन की नॉलेज तक पहुंचने देता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Framework&lt;/strong&gt; सब कुछ ऑर्केस्ट्रेट करता है — इंटर्नली &lt;code&gt;IChatClient&lt;/code&gt; इस्तेमाल करता है, कॉन्टेक्स्ट प्रोवाइडर्स के साथ कम्पोज होता है, वर्कफ्लो के जरिए कोऑर्डिनेट करता है&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;हर पीस को दूसरों के साथ कम्पोज होने के लिए डिजाइन किया गया है। &lt;a href="https://devblogs.microsoft.com/dotnet/microsoft-agent-framework-building-blocks-for-ai-part-3/"&gt;Jeremy Likness के ओरिजिनल पोस्ट&lt;/a&gt; और &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet"&gt;Agent Framework GitHub रेपो&lt;/a&gt; में पूरे सैंपल देखें।&lt;/p&gt;
&lt;h2 id="नषकरष"&gt;निष्कर्ष&lt;/h2&gt;
&lt;p&gt;Microsoft Agent Framework भाग 3 का पोस्ट बिल्डिंग ब्लॉक्स सीरीज का लूप बंद करता है। .NET डेवलपर्स के लिए जो AI एजेंट बनाना चाहते हैं — सिर्फ चैटबॉट नहीं, असली एजेंट जो टूल्स इस्तेमाल करें, चीजें याद रखें और कोऑर्डिनेट करें — यही आगे बढ़ने का रास्ता है।&lt;/p&gt;
&lt;p&gt;स्टेबल 1.0 रिलीज का मतलब है कि आप प्रोडक्शन में इस पर बिल्ड कर सकते हैं। अगर आप .NET में एजेंट डेवलपमेंट में कूदने का इंतजार कर रहे थे, तो अभी सही समय है।&lt;/p&gt;</content:encoded></item></channel></rss>