<?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>AI Agents | The .NET Blog</title><link>https://thedotnetblog.com/tr/tags/ai-agents/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>tr</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/tr/tags/ai-agents/index.xml" rel="self" type="application/rss+xml"/><item><title>Microsoft Agent Framework Bölüm 3: Araçlardan İş Akışlarına — Yapı Taşları Yerine Oturdu</title><link>https://thedotnetblog.com/tr/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/tr/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/</guid><description>.NET AI yapı taşları serisinin 3. bölümü Microsoft Agent Framework'ü ele alıyor — araçlara sahip tek agentlardan belleğe sahip çok agentlı iş akışlarına kadar. İşte gerçekten önemli olan.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal sürüm için &lt;a href="https://thedotnetblog.com/tr/news/emiliano-montesdeoca/maf-building-blocks-part-3-agents-tools-workflows/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;.NET&amp;rsquo;teki Building Blocks for AI serisini takip ettiyseniz: Bölüm 1 bize &lt;code&gt;IChatClient&lt;/code&gt;&amp;lsquo;ı (evrensel model arayüzü), Bölüm 2 ise &lt;code&gt;Microsoft.Extensions.VectorData&lt;/code&gt;&amp;lsquo;yı (semantik arama ve RAG) verdi. Her ikisi de temel yapı taşları ve kendi başlarına kullanışlı. Ama her şeyin birbirine bağlanmaya başladığı yer burası.&lt;/p&gt;
&lt;p&gt;Bölüm 3 &lt;a href="https://github.com/microsoft/agent-framework"&gt;Microsoft Agent Framework&lt;/a&gt; hakkında — dürüst olmak gerekirse, .NET&amp;rsquo;te görmek için sabırsızlandığım parça bu. 1.0 Nisan&amp;rsquo;da çıktı. API kararlı. Gerçek agentlar inşa etme zamanı geldi.&lt;/p&gt;
&lt;h2 id="agent-gerçekte-nedir-chatbota-karşı"&gt;Agent gerçekte nedir (chatbot&amp;rsquo;a karşı)&lt;/h2&gt;
&lt;p&gt;Koda dalmadan önce bu ayrımı netleştirelim. Chatbot girdi alır, modeli çağırır, çıktı döndürür. Basit döngü.&lt;/p&gt;
&lt;p&gt;Agentın &lt;em&gt;özerkliği&lt;/em&gt; vardır. Bir görev hakkında akıl yürütebilir, hangi araçları kullanacağına karar verebilir, onları çağırabilir, sonuçları değerlendirebilir ve sıradaki adıma karar verebilir — her senaryo için açık adım adım mantık yazmadan. Araçlar ve talimatlar verirsiniz, orkestrasyon kendiliğinden gerçekleşir.&lt;/p&gt;
&lt;p&gt;Şöyle düşünün: &lt;code&gt;IChatClient&lt;/code&gt; bir konuşma yapmak gibi. Agent, birine görev listesi devretmek gibi.&lt;/p&gt;
&lt;h2 id="10-satırda-ilk-agentınız"&gt;10 satırda ilk agentınız&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; uzantı yöntemi köprüdür. MEAI&amp;rsquo;dan &lt;code&gt;.AsIChatClient()&lt;/code&gt; ile aynı desen — sağlayıcının SDK&amp;rsquo;sını kararlı bir soyutlamaya sarar. Azure OpenAI, OpenAI, GitHub Models, Microsoft Foundry veya yerel modellerle çalışır.&lt;/p&gt;
&lt;p&gt;Akış da işe yarar:&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="agenta-araçlar-vermek"&gt;Agenta araçlar vermek&lt;/h2&gt;
&lt;p&gt;Burada agentlar süslü chatbot olmaktan çıkar. Araçlar, modelin kullanıcının istediklerine göre çağırmaya karar verebileceği fonksiyonlardır. Yönlendirme mantığına gerek yok — model kendisi çözüyor.&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;İki şeye dikkat edin. Birincisi, &lt;code&gt;AIFunctionFactory&lt;/code&gt; MEAI&amp;rsquo;dan — normal bir &lt;code&gt;IChatClient&lt;/code&gt; ile kullanacağınız araç fabrikasıyla aynı. Sohbet senaryoları için araç tanımladıysanız, burada da çalışır.&lt;/p&gt;
&lt;p&gt;İkincisi, &lt;code&gt;Description&lt;/code&gt; öznitelikleri çok önemlidir. Modelin bir aracın ne yaptığını ve ne zaman kullanılacağını anlama biçimi budur. Bunlara insanlar için değil, yapay zekanız için belgeler gibi davranın.&lt;/p&gt;
&lt;h2 id="oturumlar-gerçekten-hatırlayan-konuşmalar"&gt;Oturumlar: Gerçekten hatırlayan konuşmalar&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;Oturum olmadan her &lt;code&gt;RunAsync&lt;/code&gt; çağrısı durumsuz. Oturumla, agent hangi şakadan bahsettiğinizi bilir. &lt;code&gt;AgentSession&lt;/code&gt;, turlar arasında konuşma geçmişini korur.&lt;/p&gt;
&lt;p&gt;Üretim durumsuz servisleri için oturumlar temiz bir şekilde serileştirilebilir:&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;// ... bir yerde saklayın ...&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;Agentınız sunucusuz veya yatay ölçeklenmiş ortamda çalışıyorsa bu kritiktir.&lt;/p&gt;
&lt;h2 id="aicontextprovider-oturumlar-arası-kalıcı-bellek"&gt;AIContextProvider: Oturumlar arası kalıcı bellek&lt;/h2&gt;
&lt;p&gt;Oturumlar, konuşma geçmişini bir oturum &lt;em&gt;içinde&lt;/em&gt; korur. Peki oturumlar arasında kullanıcı hakkında bir şeyler bilmek? &lt;code&gt;AIContextProvider&lt;/code&gt; bunu ele alır.&lt;/p&gt;
&lt;p&gt;İki kancası var:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ProvideAIContextAsync&lt;/code&gt;&lt;/strong&gt; — her etkileşimden &lt;em&gt;önce&lt;/em&gt; çalışır, agenta bağlam enjekte eder&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;StoreAIContextAsync&lt;/code&gt;&lt;/strong&gt; — her etkileşimden &lt;em&gt;sonra&lt;/em&gt; çalışır, öğrenmeye ve kalıcılaştırmaya olanak tanır&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Desen zarif: birden fazla sağlayıcıyı yığın şeklinde kullanabilirsiniz — biri kullanıcı tercihleri için, biri son etkileşimler için, biri ilgili belgeler için VectorData deposunu sorgulayan. Sonuncusu tam olarak Bölüm 2&amp;rsquo;den RAG deseni, artık her agent çağrısında otomatik olarak çalışıyor.&lt;/p&gt;
&lt;h2 id="çok-agentlı-iş-akışları"&gt;Çok agentlı iş akışları&lt;/h2&gt;
&lt;p&gt;Framework&amp;rsquo;ün adını hak ettiği yer burası. Yürütücülerin (agentlar, fonksiyonlar, her neyse) kenarlar üzerinden bağlandığı grafik tabanlı bir iş akışı sistemi içerir.&lt;/p&gt;
&lt;p&gt;Yerel olarak desteklenen bazı desenler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sıralı&lt;/strong&gt;: Agent A&amp;rsquo;nın çıktısı Agent B&amp;rsquo;ye gider&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eşzamanlı (fan-out/fan-in)&lt;/strong&gt;: Paralel olarak birden fazla agenta gönderir, sonuçları toplar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Koşullu yönlendirme&lt;/strong&gt;: Çıktıya göre farklı agentlara iş yönlendirir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yazar-eleştirmen döngüleri&lt;/strong&gt;: Bir agent yazar, diğeri değerlendirir, onaylanana kadar döngü&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt iş akışları&lt;/strong&gt;: İş akışlarını hiyerarşik olarak oluşturur&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yazar-eleştirmen örneği:&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;Temiz, okunabilir ve koşul tabanlı yönlendirme, döngü mantığını kendiniz yazmanız gerekmediği anlamına gelir.&lt;/p&gt;
&lt;h2 id="human-in-the-loop"&gt;Human-in-the-Loop&lt;/h2&gt;
&lt;p&gt;Her şey tamamen özerk çalışmamalı. Hassas operasyonlar için — veritabanı yazmaları, finansal işlemler, iletişim gönderme — agentın yürütmeden önce bir insanın onaylamasını istersiniz.&lt;/p&gt;
&lt;p&gt;Framework, &lt;code&gt;FunctionApprovalRequestContent&lt;/code&gt; ve &lt;code&gt;FunctionApprovalResponseContent&lt;/code&gt; aracılığıyla bunun için yerleşik desteğe sahip. Agent araç çağrısını önerir, uygulama kodunuz bunu kullanıcıya sunar ve yanıt yürütmenin devam edip etmeyeceğini belirler.&lt;/p&gt;
&lt;p&gt;Kurumsal ortamlarda agentlar hakkında düşünmenin doğru yolu bu: tam özerk değil, &lt;em&gt;muhafızlı özerklik&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="tam-tablo"&gt;Tam tablo&lt;/h2&gt;
&lt;p&gt;Bir adım geri çekilirseniz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MEAI&lt;/strong&gt; herhangi bir modele evrensel arayüz sağlar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VectorData&lt;/strong&gt; semantik arama yoluyla agentlarınıza kuruluşunuzun bilgisine erişim verir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Framework&lt;/strong&gt; her şeyi orkestre eder — dahili olarak &lt;code&gt;IChatClient&lt;/code&gt; kullanır, bağlam sağlayıcılarıyla birleşir ve iş akışları üzerinden koordinasyon sağlar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Her parça diğerleriyle birleşecek şekilde tasarlanmış. &lt;a href="https://devblogs.microsoft.com/dotnet/microsoft-agent-framework-building-blocks-for-ai-part-3/"&gt;Jeremy Likness&amp;rsquo;ın orijinal gönderisi&lt;/a&gt; ve tam örnekler için &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet"&gt;Agent Framework GitHub deposuna&lt;/a&gt; bakın.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Microsoft Agent Framework Bölüm 3 gönderisi yapı taşları serisindeki döngüyü kapatıyor. Araçları kullanan, şeyleri hatırlayan ve koordine eden gerçek AI agentları — sadece chatbot değil — oluşturmak isteyen .NET geliştiricileri için bu ilerlemenin yolu.&lt;/p&gt;
&lt;p&gt;Kararlı 1.0 sürümü, bunu üretimde inşa edebileceğiniz anlamına gelir. .NET&amp;rsquo;te agent geliştirmeye atlamak için bekliyordunuz, doğru zaman şu an.&lt;/p&gt;</content:encoded></item><item><title>SQL MCP Server Azure App Service'te — Konteyner Gerekmez</title><link>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/sql-mcp-server-azure-app-service-no-containers/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/sql-mcp-server-azure-app-service-no-containers/</guid><description>SQL MCP Server artık Docker veya Kubernetes olmadan Azure App Service'te çalışabiliyor. SQL veritabanlarıyla iletişim kuran AI ajanları geliştiren .NET geliştiricileri için ne anlama geldiğini ele alıyoruz.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal sürüm için &lt;a href="https://thedotnetblog.com/tr/news/emiliano-montesdeoca/sql-mcp-server-azure-app-service-no-containers/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dürüst olmak gerekirse: bir öğreticide &amp;ldquo;konteyner gerektirir&amp;rdquo; ifadesini her gördüğümde içimden bir ah çıkıyor. Konteynerler harika — ta ki ekibinizin bir konteyner stratejisi olmayana kadar, ve basit görünen bir özellik aniden kimsenin planlamadığı beklenmedik orkestrasyon karmaşıklığına takılıp kalıyor.&lt;/p&gt;
&lt;p&gt;İşte bu yüzden bu dikkatimi çekti. SQL MCP Server artık Azure App Service&amp;rsquo;te çalışabiliyor — Docker yok, Kubernetes yok, yalnızca SQL veritabanınızı MCP, REST ve GraphQL üzerinden açığa çıkaran aynı Data API Builder (DAB) yapılandırma dosyasıyla.&lt;/p&gt;
&lt;h2 id="sql-mcp-server-nedir"&gt;SQL MCP Server Nedir?&lt;/h2&gt;
&lt;p&gt;Henüz tanışmadıysanız hızlı bir giriş. SQL MCP Server, AI ajanınız ile SQL veritabanı arasına konumlanır. Ajana veritabanına doğrudan erişim vermek yerine (berbat bir fikir), tablolarınızı ve görünümlerinizi tanımlı izinlere sahip varlıklar olarak bir soyutlama katmanıyla açığa çıkarır.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/tr-tr/azure/data-api-builder/"&gt;Data API Builder&lt;/a&gt; üzerine inşa edilmiştir; bu da tek bir yapılandırma dosyasının MCP &lt;em&gt;ve&lt;/em&gt; REST &lt;em&gt;ve&lt;/em&gt; GraphQL&amp;rsquo;i aynı anda yönettiği anlamına gelir. Ajanınız MCP uç noktasıyla konuşur. Geleneksel uygulamanız REST veya GraphQL ile konuşur. Aynı yapılandırma, aynı çalışma zamanı, farklı yüzeyler.&lt;/p&gt;
&lt;p&gt;Bu gerçekten kullanışlı — iki ayrı API katmanını sürdürmenize gerek yok.&lt;/p&gt;
&lt;h2 id="konteyner-sorunu-ve-çözümü"&gt;Konteyner Sorunu (ve Çözümü)&lt;/h2&gt;
&lt;p&gt;SQL MCP Server&amp;rsquo;ın orijinal dağıtım modeli konteyner kullanıyordu. Pek çok ekip için iyi çalışıyor — ama hepsi için değil. Birçok .NET ekibi Azure App Service veya sanal makinelerde standartlaşmış. Yalnızca bir SQL uç noktasını açığa çıkarmak için konteyner çalışma zamanı gerektirmek, kimsenin istemediği bir sürtünme yaratıyor.&lt;/p&gt;
&lt;p&gt;Yeni kılavuz konteyneri tamamen atlama yöntemini gösteriyor. Her şey &lt;code&gt;dab start&lt;/code&gt; komutuyla çalışıyor ve App Service üzerinde standart bir .NET 8 web süreci olarak barındırılıyor.&lt;/p&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;&lt;span class="c1"&gt;# Data API Builder&amp;#39;ı yükleyin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet tool install microsoft.dataapibuilder --prerelease -g
&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="c1"&gt;# Yapılandırmayı başlatın&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab init --database-type mssql --host-mode Development --connection-string &lt;span class="s2"&gt;&amp;#34;@env(&amp;#39;SQL_CONNECTION_STRING&amp;#39;)&amp;#34;&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="c1"&gt;# Bir varlık ekleyin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab add products --source dbo.products --permissions &lt;span class="s2"&gt;&amp;#34;authenticated:*&amp;#34;&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="c1"&gt;# App Service kimlik doğrulama sağlayıcısını yapılandırın&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab configure --runtime.host.authentication.provider AppService
&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="c1"&gt;# Sunucuyu başlatın&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bu noktada &lt;code&gt;/mcp&lt;/code&gt;&amp;lsquo;de MCP&amp;rsquo;niz var, aynı süreçten REST ve GraphQL var — ve hiçbir şey bir konteynerde çalışmıyor.&lt;/p&gt;
&lt;h2 id="paylaşılan-api-anahtarı-olmadan-kimlik-doğrulama"&gt;Paylaşılan API Anahtarı Olmadan Kimlik Doğrulama&lt;/h2&gt;
&lt;p&gt;En çok değer verdiğim kısım bu. App Service&amp;rsquo;e dağıtırken Microsoft Entra ID&amp;rsquo;yi kimlik doğrulama sağlayıcısı olarak yapılandırıyorsunuz. Yapılandırma dosyalarında paylaşılan sır yok, döndürülecek API anahtarı yok.&lt;/p&gt;
&lt;p&gt;Bağlantı dizesi App Service ortam değişkenlerinde tutuluyor (&lt;code&gt;dab-config.json&lt;/code&gt;&amp;lsquo;da değil) ve MCP uç noktası platform kimlik doğrulamasıyla korunuyor. Azure iş yükleriniz Entra ID ile zaten uyumluysa bu doğal bir şekilde entegre oluyor.&lt;/p&gt;
&lt;p&gt;Yerel geliştirme için &lt;code&gt;Simulator&lt;/code&gt; moduna ve STDIO aktarımına geçin. Dağıtımdan önce &lt;code&gt;AppService&lt;/code&gt; moduna geri dönün. Temiz ve açık.&lt;/p&gt;
&lt;h2 id="app-servicee-dağıtım"&gt;App Service&amp;rsquo;e Dağıtım&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;az appservice plan create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &amp;lt;plan-name&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --sku B1 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --is-linux
&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;az webapp create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &amp;lt;app-name&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --plan &amp;lt;plan-name&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --runtime &lt;span class="s2"&gt;&amp;#34;DOTNETCORE:8.0&amp;#34;&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;az webapp config &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &amp;lt;app-name&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --startup-file &lt;span class="s2"&gt;&amp;#34;dab start&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ardından ekibinizin halihazırda kullandığı kod dağıtım yöntemini kullanarak DAB projenizi dağıtın. Önemli nokta: bu bir &lt;strong&gt;kod&lt;/strong&gt; dağıtımıdır, konteyner dağıtımı değil.&lt;/p&gt;
&lt;h2 id="net-geliştiricileri-için-neden-önemli"&gt;.NET Geliştiricileri İçin Neden Önemli&lt;/h2&gt;
&lt;p&gt;.NET&amp;rsquo;te AI ajanları geliştiriyorsanız, er ya da geç ajanınızın bir veritabanıyla iletişim kurması gerekecek. SQL MCP Server, ham bağlantı dizelerini açığa çıkarmadan bunu yapmanın yapılandırılmış bir yolunu sunuyor.&lt;/p&gt;
&lt;p&gt;Tam kılavuzu &lt;a href="https://devblogs.microsoft.com/azure-sql/sql-mcp-server-app-service/"&gt;orijinal blog yazısında&lt;/a&gt; ve &lt;a href="https://github.com/Azure-Samples/SQL-MCP-NoContainer"&gt;GitHub örnek deposunda&lt;/a&gt; inceleyin.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;App Service&amp;rsquo;teki SQL MCP Server, konteyner stratejisi olmaksızın ajanlara yapılandırılmış SQL veri erişimi sağlamak isteyen .NET ekipleri için pratik bir seçenek. Deneyin — ajanlarınız temiz API yüzeyini takdir edecek.&lt;/p&gt;</content:encoded></item><item><title>Agent Governance Toolkit ile .NET'te MCP Araç Çağrılarını Yönetme</title><link>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/governing-mcp-tool-calls-dotnet/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/governing-mcp-tool-calls-dotnet/</guid><description>MCP tabanlı .NET ajanları için yönetişim, ilke denetimleri ve daha güvenli araç yürütmenin nasıl sağlanacağı.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu gönderi otomatik olarak çevrilmiştir. Orijinal sürüm için &lt;a href="https://thedotnetblog.com/tr/news/emiliano-montesdeoca/governing-mcp-tool-calls-dotnet/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/governing-mcp-tool-calls-in-dotnet-with-the-agent-governance-toolkit/"&gt;Governing MCP Tool Calls in .NET with the Agent Governance Toolkit&lt;/a&gt; .NET sistemlerini büyük ölçekte oluşturuyorsanız veya çalıştırıyorsanız, yakından incelemeye değer.&lt;/p&gt;
&lt;p&gt;Benim bakış açıma göre, önemli olan başlık özelliği değil; bir ekibin bunu ne kadar hızlı daha güvenli ve tekrarlanabilir bir mühendislik iş akışına dönüştürebileceğidir.&lt;/p&gt;
&lt;h2 id="net-ekipleri-için-neden-önemli"&gt;.NET ekipleri için neden önemli&lt;/h2&gt;
&lt;p&gt;Çoğu ekip, teslimat hızı, platform tutarlılığı ve yönetim arasında denge kurmaya çalışmaktadır. Bu güncelleme, her şeyi yeniden yazmadan bu kısıtlamalardan birini iyileştirmek için daha somut bir yol sunduğu için faydalıdır.&lt;/p&gt;
&lt;h2 id="pratik-sonraki-adımlar"&gt;Pratik sonraki adımlar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Özelliği, üretime benzer verilerle küçük bir .NET pilotunda doğrulayın.&lt;/li&gt;
&lt;li&gt;Daha geniş bir dağıtımdan önce net geri alma ve gözlemlenebilirlik kontrol noktaları ekleyin.&lt;/li&gt;
&lt;li&gt;Uygulama kalıbını iç şablonlarınıza kaydedin, böylece diğer ekipler onu yeniden kullanabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="kaynak"&gt;Kaynak&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Orijinal makale: &lt;a href="https://devblogs.microsoft.com/dotnet/governing-mcp-tool-calls-in-dotnet-with-the-agent-governance-toolkit/"&gt;https://devblogs.microsoft.com/dotnet/governing-mcp-tool-calls-in-dotnet-with-the-agent-governance-toolkit/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Visual Studio Nisan Güncellemesi: .NET İş Akışları için Cloud Agent Entegrasyonu</title><link>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/visual-studio-april-update-cloud-agent-integration/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/news/emiliano-montesdeoca/visual-studio-april-update-cloud-agent-integration/</guid><description>Nisan Visual Studio güncellemesinin ayrıntılı bir incelemesi ve Cloud Agent entegrasyonunun .NET iş akışlarında neyi değiştirdiği.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu gönderi otomatik olarak çevrilmiştir. Orijinal sürüm için &lt;a href="https://thedotnetblog.com/tr/news/emiliano-montesdeoca/visual-studio-april-update-cloud-agent-integration/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-april-update-cloud-agent-integration/"&gt;Visual Studio April Update: Cloud Agent Integration for .NET Workflows&lt;/a&gt; .NET sistemlerini büyük ölçekte oluşturuyorsanız veya çalıştırıyorsanız, yakından incelemeye değer.&lt;/p&gt;
&lt;p&gt;Benim bakış açıma göre, önemli olan başlık özelliği değil; bir ekibin bunu ne kadar hızlı daha güvenli ve tekrarlanabilir bir mühendislik iş akışına dönüştürebileceğidir.&lt;/p&gt;
&lt;h2 id="net-ekipleri-için-neden-önemli"&gt;.NET ekipleri için neden önemli&lt;/h2&gt;
&lt;p&gt;Çoğu ekip, teslimat hızı, platform tutarlılığı ve yönetim arasında denge kurmaya çalışmaktadır. Bu güncelleme, her şeyi yeniden yazmadan bu kısıtlamalardan birini iyileştirmek için daha somut bir yol sunduğu için faydalıdır.&lt;/p&gt;
&lt;h2 id="pratik-sonraki-adımlar"&gt;Pratik sonraki adımlar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Özelliği, üretime benzer verilerle küçük bir .NET pilotunda doğrulayın.&lt;/li&gt;
&lt;li&gt;Daha geniş bir dağıtımdan önce net geri alma ve gözlemlenebilirlik kontrol noktaları ekleyin.&lt;/li&gt;
&lt;li&gt;Uygulama kalıbını iç şablonlarınıza kaydedin, böylece diğer ekipler onu yeniden kullanabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="kaynak"&gt;Kaynak&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Orijinal makale: &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-april-update-cloud-agent-integration/"&gt;https://devblogs.microsoft.com/visualstudio/visual-studio-april-update-cloud-agent-integration/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item></channel></rss>