<?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/ar/tags/workflows/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ar</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/ar/tags/workflows/index.xml" rel="self" type="application/rss+xml"/><item><title>Microsoft Agent Framework الجزء الثالث: من الأدوات إلى سير العمل — تتشابك قطع البناء في مكانها</title><link>https://thedotnetblog.com/ar/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/ar/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/</guid><description>يغطي الجزء الثالث من سلسلة Building Blocks for AI في .NET إطار عمل Microsoft Agent Framework — من الوكلاء المفردين بالأدوات إلى سير عمل متعدد الوكلاء مع الذاكرة. إليك ما يهم حقاً.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذه المقالة تلقائياً. للاطلاع على النسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;إذا كنت تتابع سلسلة Building Blocks for AI في .NET، فأنت تعلم: الجزء الأول أعطانا &lt;code&gt;IChatClient&lt;/code&gt; (الواجهة العالمية للنماذج)، والجزء الثاني أعطانا &lt;code&gt;Microsoft.Extensions.VectorData&lt;/code&gt; (البحث الدلالي وRAG). كلاهما أساسي ومفيد بمفرده. لكن هنا يبدأ كل شيء في الاتصال ببعضه.&lt;/p&gt;
&lt;p&gt;الجزء الثالث عن &lt;a href="https://github.com/microsoft/agent-framework"&gt;Microsoft Agent Framework&lt;/a&gt; — وبصراحة، هذه القطعة التي كنت أنتظر رؤيتها في .NET. الإصدار 1.0 شُحن في أبريل. الواجهة البرمجية مستقرة. حان وقت بناء وكلاء حقيقيين.&lt;/p&gt;
&lt;h2 id="ما-هو-الوكيل-فعلا-مقابل-روبوت-المحادثة"&gt;ما هو الوكيل فعلاً (مقابل روبوت المحادثة)&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; هو الجسر. نفس النمط مثل &lt;code&gt;.AsIChatClient()&lt;/code&gt; من MEAI — يلف 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; مهمة جداً. هذه هي الطريقة التي يفهم بها النموذج ما تفعله الأداة ومتى يستخدمها. تعامل معها كتوثيق لذكاءك الاصطناعي، لا للبشر.&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;هذا أمر بالغ الأهمية إذا كان وكيلك يعمل في بيئة serverless أو مُوسَّعة أفقياً.&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 الخاص بك عن المستندات ذات الصلة. هذا الأخير هو بالضبط نمط 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;مستودع GitHub لـ Agent Framework&lt;/a&gt; للحصول على الأمثلة الكاملة.&lt;/p&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة&lt;/h2&gt;
&lt;p&gt;منشور الجزء الثالث من Microsoft Agent Framework يُغلق حلقة سلسلة Building Blocks. لمطوري .NET الذين يريدون بناء وكلاء الذكاء الاصطناعي — ليس فقط روبوتات المحادثة، بل وكلاء حقيقيين يستخدمون الأدوات ويتذكرون الأشياء وينسقون — هذا هو طريقك للأمام.&lt;/p&gt;
&lt;p&gt;الإصدار المستقر 1.0 يعني أنه يمكنك البناء بهذا في الإنتاج. إذا كنت تنتظر للقفز في تطوير الوكلاء في .NET، فالوقت الآن مناسب.&lt;/p&gt;</content:encoded></item></channel></rss>