<?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 | The .NET Blog</title><link>https://thedotnetblog.com/tr/tags/ai/</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>Sat, 25 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/tr/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent Framework'te CodeAct: Ajanınızın Gecikmesini Yarıya Nasıl İndirirsiniz</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/codeact-agent-framework-hyperlight-50-percent-faster/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/codeact-agent-framework-hyperlight-50-percent-faster/</guid><description>CodeAct, çok adımlı araç zincirlerini tek bir sandbox kod bloğunda birleştirir — gecikmeyi %52, token kullanımını %64 azaltır.</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/posts/emiliano-montesdeoca/codeact-agent-framework-hyperlight-50-percent-faster/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Her ajan projesinde, izlemeye bakıp &amp;ldquo;bu neden bu kadar uzun sürüyor?&amp;rdquo; diye düşündüğünüz bir an gelir. Model iyi çalışıyor. Araçlar çalışıyor. Ama tek seferinde hesaplanabilecek bir sonuç için yedi gidiş-dönüş oluyor.&lt;/p&gt;
&lt;p&gt;CodeAct&amp;rsquo;ın tam olarak çözdüğü sorun bu — ve &lt;a href="https://devblogs.microsoft.com/agent-framework/codeact-with-hyperlight/"&gt;Agent Framework ekibi yeni &lt;code&gt;agent-framework-hyperlight&lt;/code&gt; paketiyle alfa destek yayınladı&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="codeact-nedir"&gt;CodeAct Nedir?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2402.01030"&gt;CodeAct deseni&lt;/a&gt; zarifçe basittir: Modele tek tek çağrılacak araçların listesini vermek yerine, tek bir &lt;code&gt;execute_code&lt;/code&gt; aracı verin ve &lt;em&gt;planın tamamını&lt;/em&gt; kısa bir Python programı olarak ifade etmesine izin verin.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Yaklaşım&lt;/th&gt;
&lt;th&gt;Süre&lt;/th&gt;
&lt;th&gt;Token&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Geleneksel&lt;/td&gt;
&lt;td&gt;27.81s&lt;/td&gt;
&lt;td&gt;6.890&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CodeAct&lt;/td&gt;
&lt;td&gt;13.23s&lt;/td&gt;
&lt;td&gt;2.489&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;İyileştirme&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;%52.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;%63.9&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="güvenlik-hyperlight-mikro-vmleri"&gt;Güvenlik: Hyperlight Mikro-VM&amp;rsquo;leri&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;agent-framework-hyperlight&lt;/code&gt; paketi &lt;a href="https://github.com/hyperlight-dev/hyperlight"&gt;Hyperlight&lt;/a&gt; mikro-VM&amp;rsquo;leri kullanır. Her &lt;code&gt;execute_code&lt;/code&gt; çağrısı kendi yeni mikro-VM&amp;rsquo;ini alır. Başlatma milisaniyelerle ölçülür. İzolasyon neredeyse ücretsizdir.&lt;/p&gt;
&lt;p&gt;Araçlarınız ana bilgisayarda çalışmaya devam eder. Modelin oluşturduğu &lt;em&gt;yapıştırıcı kod&lt;/em&gt; sandbox&amp;rsquo;ta çalışır. Bu doğru ayrımdır.&lt;/p&gt;
&lt;h2 id="minimum-kurulum"&gt;Minimum Kurulum&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;agent_framework&lt;/span&gt; &lt;span class="kn"&gt;import&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;tool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;agent_framework_hyperlight&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;HyperlightCodeActProvider&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;codeact&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HyperlightCodeActProvider&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="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_weather&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;approval_mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;never_require&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Agent&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;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;client&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="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CodeActAgent&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;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&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;context_providers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;codeact&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="codeact-ne-zaman-kullanılır-ne-zaman-kullanılmaz"&gt;CodeAct Ne Zaman Kullanılır (Ne Zaman Kullanılmaz)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;CodeAct kullanın:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Görev birçok küçük araç çağrısını zincirliyor (aramalar, birleştirmeler, hesaplamalar)&lt;/li&gt;
&lt;li&gt;Gecikme ve token maliyeti önemliyse&lt;/li&gt;
&lt;li&gt;Model tarafından oluşturulan kod için güçlü izolasyon istiyorsanız&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Geleneksel araç çağrısında kalın:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ajan tur başına yalnızca bir iki araç çağrısı yapıyorsa&lt;/li&gt;
&lt;li&gt;Her çağrının bireysel onay gerektiren yan etkileri varsa&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="şimdi-deneyin"&gt;Şimdi Deneyin&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;pip install agent-framework-hyperlight --pre
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/agent-framework/codeact-with-hyperlight/"&gt;Agent Framework blogundaki tam gönderiyi&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Ajanınız Şeyleri Nerede Hatırlıyor? Sohbet Geçmişi Depolama için Pratik Rehber</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/chat-history-storage-patterns-agent-framework/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/chat-history-storage-patterns-agent-framework/</guid><description>Servis tarafından mı yoksa istemci tarafından mı yönetiliyor? Doğrusal mı yoksa dallanma destekli mi? AI ajanınızın ne yapabileceğini belirleyen mimari karar — C# ve Python örnekleriyle.</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/posts/emiliano-montesdeoca/chat-history-storage-patterns-agent-framework/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Bir AI ajanı oluştururken enerjinizin büyük bölümünü modele, araçlara ve istemlere harcarsınız. &lt;em&gt;Konuşma geçmişinin nerede tutulduğu&lt;/em&gt; sorusu bir uygulama ayrıntısı gibi görünür — ancak alacağınız en önemli mimari kararlardan biridir.&lt;/p&gt;
&lt;p&gt;Kullanıcıların konuşmaları dallandırıp dallandıramayacağını, yanıtları geri alıp alamayacağını, yeniden başlatmadan sonra oturumları devam ettirip ettiremeyeceğini ve verilerinizin altyapınızı terk edip etmediğini belirler. &lt;a href="https://devblogs.microsoft.com/agent-framework/chat-history-storage-patterns-in-microsoft-agent-framework/"&gt;Agent Framework ekibi derinlemesine bir analiz yayımladı&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="iki-temel-desen"&gt;İki temel desen&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Servis tarafından yönetilen&lt;/strong&gt;: AI servisi konuşma durumunu depolar. Uygulamanız bir referans tutar ve servis her istekte ilgili geçmişi otomatik olarak ekler.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;İstemci tarafından yönetilen&lt;/strong&gt;: Uygulamanız tam geçmişi tutar ve her istekte ilgili mesajları gönderir. Servis durumsuzdur. Her şeyi siz kontrol edersiniz.&lt;/p&gt;
&lt;h2 id="agent-framework-bunu-nasıl-soyutlar"&gt;Agent Framework bunu nasıl soyutlar&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 class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;first&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;Adım Alice.&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 class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;second&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;Benim adım ne?&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_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="n"&gt;first&lt;/span&gt; &lt;span class="o"&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="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Adım Alice.&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="o"&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="n"&gt;second&lt;/span&gt; &lt;span class="o"&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="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Benim adım ne?&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="o"&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sağlayıcı-hızlı-referans"&gt;Sağlayıcı hızlı referans&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sağlayıcı&lt;/th&gt;
&lt;th&gt;Depolama&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Sıkıştırma&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI/Azure Chat Completions&lt;/td&gt;
&lt;td&gt;İstemci&lt;/td&gt;
&lt;td&gt;Yok&lt;/td&gt;
&lt;td&gt;Siz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foundry Agent Service&lt;/td&gt;
&lt;td&gt;Servis&lt;/td&gt;
&lt;td&gt;Doğrusal&lt;/td&gt;
&lt;td&gt;Servis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Responses API (varsayılan)&lt;/td&gt;
&lt;td&gt;Servis&lt;/td&gt;
&lt;td&gt;Dallanma&lt;/td&gt;
&lt;td&gt;Servis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic Claude, Ollama&lt;/td&gt;
&lt;td&gt;İstemci&lt;/td&gt;
&lt;td&gt;Yok&lt;/td&gt;
&lt;td&gt;Siz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="nasıl-seçilir"&gt;Nasıl seçilir&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Dallanma veya &amp;ldquo;geri al&amp;rdquo; gerekiyor mu?&lt;/strong&gt; → Servis tarafından yönetilen Responses API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veri egemenliği gerekiyor mu?&lt;/strong&gt; → DB destekli istemci tarafından yönetilen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Basit bir sohbet botu mu?&lt;/strong&gt; → Servis tarafından yönetilen doğrusal yeterli&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tam karar ağacı için &lt;a href="https://devblogs.microsoft.com/agent-framework/chat-history-storage-patterns-in-microsoft-agent-framework/"&gt;tam makaleyi&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Azure MCP Server Artık .mcpb — Herhangi Bir Runtime Olmadan Yükle</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>Azure MCP Server artık MCP Bundle (.mcpb) olarak kullanılabilir — indirin, Claude Desktop'a sürükleyin ve bitti. Node.js, Python veya .NET gerekmiyor.</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/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;MCP sunucularını kurarken can sıkıcı olan ne olduğunu biliyor musunuz? Bir runtime gerekiyordu. npm sürümü için Node.js, pip/uvx için Python, dotnet varyantı için .NET SDK.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;Azure MCP Server bunu değiştirdi&lt;/a&gt;. Artık &lt;code&gt;.mcpb&lt;/code&gt; — MCP Bundle — olarak kullanılabilir ve kurulum sürükle-bıraktır.&lt;/p&gt;
&lt;h2 id="mcp-bundle-nedir"&gt;MCP Bundle Nedir?&lt;/h2&gt;
&lt;p&gt;VS Code uzantısı (&lt;code&gt;.vsix&lt;/code&gt;) veya tarayıcı uzantısı (&lt;code&gt;.crx&lt;/code&gt;) gibi düşünün, ama MCP sunucuları için. &lt;code&gt;.mcpb&lt;/code&gt; dosyası, sunucu ikilisini ve tüm bağımlılıklarını içeren bağımsız bir ZIP arşividir.&lt;/p&gt;
&lt;h2 id="nasıl-kurulur"&gt;Nasıl Kurulur&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Platformunuz için bundle&amp;rsquo;ı indirin&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;GitHub Releases sayfasına&lt;/a&gt; gidin ve OS ve mimarinize uygun &lt;code&gt;.mcpb&lt;/code&gt; dosyasını indirin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Claude Desktop&amp;rsquo;a kurun&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En kolay yol: Uzantılar ayarları sayfasındayken (&lt;code&gt;☰ → Dosya → Ayarlar → Uzantılar&lt;/code&gt;) &lt;code&gt;.mcpb&lt;/code&gt; dosyasını Claude Desktop penceresine sürükleyip bırakın. Sunucu ayrıntılarını inceleyin, Yükle&amp;rsquo;ye tıklayın, onaylayın.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Azure&amp;rsquo;da kimlik doğrulaması yapın&lt;/strong&gt;&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;az login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="başlamak-için"&gt;Başlamak için&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;İndirme&lt;/strong&gt;: &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server-"&gt;GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Depo&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp"&gt;aka.ms/azmcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Belgeler&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp/docs"&gt;aka.ms/azmcp/docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;Tam makaleye&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>GPT-5.5 Burada ve Azure Foundry'e Geliyor — .NET Geliştiricilerinin Bilmesi Gerekenler</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/gpt-55-foundry-ga-what-dotnet-developers-need-to-know/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/gpt-55-foundry-ga-what-dotnet-developers-need-to-know/</guid><description>GPT-5.5 Microsoft Foundry'de genel kullanıma sunuldu. GPT-5'ten 5.5'e evrim, gerçekte ne gelişti ve bugün agentlarınızda nasıl kullanmaya başlayacağınız.</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/posts/emiliano-montesdeoca/gpt-55-foundry-ga-what-dotnet-developers-need-to-know/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Microsoft, &lt;a href="https://azure.microsoft.com/en-us/blog/openais-gpt-5-5-in-microsoft-foundry-frontier-intelligence-on-an-enterprise-ready-platform/"&gt;GPT-5.5&amp;rsquo;in Microsoft Foundry&amp;rsquo;de genel kullanıma sunulduğunu&lt;/a&gt; duyurdu. Azure&amp;rsquo;da agent oluşturuyorsanız, beklediğiniz güncelleme bu.&lt;/p&gt;
&lt;h2 id="gpt-5-evrimi"&gt;GPT-5 Evrimi&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5&lt;/strong&gt;: akıl yürütme ve hızı tek bir sistemde birleştirdi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.4&lt;/strong&gt;: daha güçlü çok adımlı akıl yürütme, enterprise için erken ajansal özellikler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.5&lt;/strong&gt;: daha derin uzun bağlam akıl yürütme, daha güvenilir ajansal yürütme, daha iyi token verimliliği&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="gerçekte-ne-değişti"&gt;Gerçekte ne değişti&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Geliştirilmiş ajansal kodlama&lt;/strong&gt;: GPT-5.5, büyük kod tabanlarında bağlamı korur, mimari düzeydeki hataları teşhis eder ve test gereksinimlerini öngörür. Model, harekete geçmeden önce bir düzeltmenin &lt;em&gt;başka neyi&lt;/em&gt; etkilediğini akıl yürütür.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Token verimliliği&lt;/strong&gt;: Daha az token ve daha az yeniden denemeyle daha yüksek kaliteli çıktılar. Üretimde doğrudan düşük maliyet ve gecikme.&lt;/p&gt;
&lt;h2 id="fiyatlandırma"&gt;Fiyatlandırma&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Girdi ($/M token)&lt;/th&gt;
&lt;th&gt;Önbelleğe alınmış&lt;/th&gt;
&lt;th&gt;Çıktı ($/M token)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5&lt;/td&gt;
&lt;td&gt;$5,00&lt;/td&gt;
&lt;td&gt;$0,50&lt;/td&gt;
&lt;td&gt;$30,00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td&gt;$30,00&lt;/td&gt;
&lt;td&gt;$3,00&lt;/td&gt;
&lt;td&gt;$180,00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="foundry-neden-önemli"&gt;Foundry Neden Önemli&lt;/h2&gt;
&lt;p&gt;Foundry Agent Service, agentları YAML&amp;rsquo;de tanımlamanıza veya Microsoft Agent Framework, GitHub Copilot SDK, LangGraph ya da OpenAI Agents SDK ile bağlamanıza olanak tanır — ve bunları kalıcı dosya sistemi, Microsoft Entra kimliği ve sıfıra ölçekleme fiyatlandırmasıyla izole barındırılan agentlar olarak çalıştırır.&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;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;aiProjectClient&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 class="s"&gt;&amp;#34;gpt-5.5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&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;Yardımcı bir asistansınız.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&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;BenimAgentim&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;Tüm ayrıntılar için &lt;a href="https://azure.microsoft.com/en-us/blog/openais-gpt-5-5-in-microsoft-foundry-frontier-intelligence-on-an-enterprise-ready-platform/"&gt;tam duyuruya&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: Tüm Ajan Araçları için Tek Bir Endpoint</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>Microsoft Foundry, Toolboxes'ı genel önizleme olarak yayımladı — AI ajan araçlarını tek bir MCP uyumlu endpoint üzerinden yönetmenin ve sunmanın yolu.</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/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Bizzat yaşayana kadar önemsiz görünen bir sorun var: Kuruluş birden fazla yapay zeka ajanı oluşturuyor, her birinin araçlara ihtiyacı var ve her ekip sıfırdan yapılandırıyor. Aynı web arama entegrasyonu, aynı Azure AI Search yapılandırması, aynı GitHub MCP sunucusu bağlantısı — ama farklı bir depoda, farklı bir ekip tarafından, farklı kimlik bilgileriyle ve paylaşılan yönetim olmadan.&lt;/p&gt;
&lt;p&gt;Microsoft Foundry, genel önizlemede &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; yayımladı ve bu soruna doğrudan bir yanıt niteliğinde.&lt;/p&gt;
&lt;h2 id="toolbox-nedir"&gt;Toolbox nedir?&lt;/h2&gt;
&lt;p&gt;Toolbox, Foundry&amp;rsquo;de bir kez tanımlanıp tek bir MCP uyumlu endpoint üzerinden sunulan, adlandırılmış ve yeniden kullanılabilir bir araç paketidir. MCP konuşabilen herhangi bir ajan çalışma zamanı bunu tüketebilir — Foundry Agents&amp;rsquo;a bağımlılık yoktur.&lt;/p&gt;
&lt;p&gt;Vaat basittir: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. Araçları tanımla, kimlik doğrulamayı merkezi olarak yapılandır (OAuth doğrudan geçiş, Entra yönetilen kimlik), endpoint&amp;rsquo;i yayımla. Bu araçlara ihtiyaç duyan her ajan endpoint&amp;rsquo;e bağlanır ve tümünü alır.&lt;/p&gt;
&lt;h2 id="dört-sütun-bugün-ikisi-mevcut"&gt;Dört sütun (bugün ikisi mevcut)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sütun&lt;/th&gt;
&lt;th&gt;Durum&lt;/th&gt;
&lt;th&gt;Ne yapar&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Discover&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yakında&lt;/td&gt;
&lt;td&gt;Elle arama yapmadan onaylı araçları bulma&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mevcut&lt;/td&gt;
&lt;td&gt;Araçları yeniden kullanılabilir pakete gruplama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Consume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mevcut&lt;/td&gt;
&lt;td&gt;Tek MCP endpoint tüm araçları sunar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Govern&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yakında&lt;/td&gt;
&lt;td&gt;Merkezi kimlik doğrulama + tüm araç çağrılarının gözlemlenebilirliği&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="pratik-örnek"&gt;Pratik örnek&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&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;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&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;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;FOUNDRY_PROJECT_ENDPOINT&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;credential&lt;/span&gt;&lt;span class="o"&gt;=&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&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;toolbox_version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toolboxes&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_toolbox_version&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;toolbox_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;customer-feedback-triaging-toolbox&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;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Dokümanlarda arama yap ve GitHub sorunlarına yanıt ver.&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="o"&gt;=&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;web_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Genel belgelerde arama yap&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 class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;azure_ai_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;index_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;internal-docs&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 class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcp_server&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;server_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://your-github-mcp-server.com&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="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yayımlandıktan sonra Foundry birleşik bir endpoint sağlar. Tek bağlantı, tüm araçlar.&lt;/p&gt;
&lt;h2 id="foundry-agentsa-bağımlılık-yok"&gt;Foundry Agents&amp;rsquo;a bağımlılık yok&lt;/h2&gt;
&lt;p&gt;Toolboxes, Foundry&amp;rsquo;de &lt;strong&gt;oluşturulur ve yönetilir&lt;/strong&gt;; ancak tüketim yüzeyi açık MCP protokolüdür. Bunları özel ajanlardan (Microsoft Agent Framework, LangGraph), GitHub Copilot ve diğer MCP destekli IDE&amp;rsquo;lerden kullanabilirsiniz.&lt;/p&gt;
&lt;h2 id="neden-şimdi-önemli"&gt;Neden şimdi önemli?&lt;/h2&gt;
&lt;p&gt;Çoklu ajan dalgası üretime ulaşıyor. Her yeni ajan, yinelenen yapılandırma, eski kimlik bilgileri ve tutarsız davranış için yeni bir yüzeydir. Build + Consume temeli merkezileşmeye başlamak için yeterlidir. Govern sütunu geldiğinde, tüm ajan filosu için tam gözlemlenebilir ve merkezi olarak kontrol edilen bir araç katmanı elde edilmiş olacak.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Henüz erken — genel önizleme, önce Python SDK, Discover ve Govern henüz yolda. Ancak model sağlam ve MCP yerel tasarımı, zaten inşa ettiğiniz araçlarla çalıştığı anlamına geliyor. Ayrıntılar için &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;resmi duyuruya&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>Windows App Dev CLI v0.3: Terminalden F5 Hata Ayıklama ve Ajanlar için UI Otomasyonu</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3, terminalden hata ayıklama başlatmak için winapp run, UI otomasyonu için winapp ui ve paketlenmiş uygulamalarla dotnet run'ı çalıştıran yeni bir NuGet paketi getiriyor.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu gönderi otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio&amp;rsquo;nun F5 deneyimi harika. Ama yalnızca paketlenmiş bir Windows uygulamasını başlatıp hata ayıklamak için VS&amp;rsquo;yi açmak — bir CI boru hattında, otomatik bir iş akışında veya bir yapay zeka ajanı testleri çalıştırırken — fazla ağır bir yük.&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3 &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;yayınlandı&lt;/a&gt; ve bunu iki temel özellikle doğrudan ele alıyor: &lt;code&gt;winapp run&lt;/code&gt; ve &lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-her-yerden-f5"&gt;winapp run: Her yerden F5&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt; paketlenmemiş bir uygulama klasörü ve manifest alır; VS&amp;rsquo;nin hata ayıklama başlatmasında yaptığı her şeyi yapar: loose paket kaydeder, uygulamayı başlatır ve yeniden dağıtımlar arasında &lt;code&gt;LocalState&lt;/code&gt;&amp;lsquo;i korur.&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;# Uygulamayı derleyin, ardından paketlenmiş uygulama olarak çalıştırın&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp run ./bin/Debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;WinUI, WPF, WinForms, Console, Avalonia ve daha fazlası için çalışır. Modlar hem geliştiriciler hem de otomatik iş akışları için tasarlanmıştır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: Başlatır ve hemen terminale kontrolü geri döndürür. CI için ideal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: Uygulama kapatıldığında kayıtlı paketi temizler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: &lt;code&gt;OutputDebugString&lt;/code&gt; mesajlarını ve istisnaları gerçek zamanlı yakalar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="yeni-nuget-paketi-paketlenmiş-uygulamalar-için-dotnet-run"&gt;Yeni NuGet Paketi: Paketlenmiş uygulamalar için dotnet run&lt;/h2&gt;
&lt;p&gt;.NET geliştiricileri için yeni bir NuGet paketi var: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;. Kurulumdan sonra &lt;code&gt;dotnet run&lt;/code&gt; tüm iç döngüyü yönetir: derleme, loose-layout paketi hazırlama, Windows&amp;rsquo;ta kayıt ve başlatma — tek adımda.&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;winapp init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# veya&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="winapp-ui-komut-satırından-ui-otomasyonu"&gt;winapp ui: Komut satırından UI Otomasyonu&lt;/h2&gt;
&lt;p&gt;Bu, ajan senaryolarını açan özellik. &lt;code&gt;winapp ui&lt;/code&gt;, terminalden çalışan herhangi bir Windows uygulamasına (WPF, WinForms, Win32, Electron, WinUI3) tam UI Automation erişimi sağlar.&lt;/p&gt;
&lt;p&gt;Yapılabilecekler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tüm üst düzey pencereleri listele&lt;/li&gt;
&lt;li&gt;Herhangi bir pencerenin tam UI Automation ağacında gezin&lt;/li&gt;
&lt;li&gt;Ad, tür veya otomasyon kimliğine göre öğe ara&lt;/li&gt;
&lt;li&gt;Tıkla, çağır ve değer ayarla&lt;/li&gt;
&lt;li&gt;Ekran görüntüsü al&lt;/li&gt;
&lt;li&gt;Öğelerin görünmesini bekle — test senkronizasyonu için ideal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;winapp ui&lt;/code&gt; ile &lt;code&gt;winapp run&lt;/code&gt;&amp;lsquo;ı birleştirmek, terminalden eksiksiz bir derleme → başlatma → doğrulama iş akışı sağlar. Bir ajan uygulamayı çalıştırabilir, UI durumunu inceleyebilir, programatik olarak etkileşime girebilir ve sonucu doğrulayabilir.&lt;/p&gt;
&lt;h2 id="diğer-yenilikler"&gt;Diğer yenilikler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: Tamamlandığında yandan yüklenmiş paketi kaldırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: Terminalden adıyla uygulama başlatmak için takma ad ekler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sekme tamamlama&lt;/strong&gt;: PowerShell tamamlamayı tek komutla yapılandırın.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="nasıl-edinilir"&gt;Nasıl edinilir&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;winget install Microsoft.WinAppCli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# veya&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @microsoft/winappcli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CLI genel önizleme aşamasında. Tam belgeleme için &lt;a href="https://github.com/microsoft/WinAppCli"&gt;GitHub deposuna&lt;/a&gt;, tüm ayrıntılar için &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;orijinal duyuruya&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.117: Agentlar Artık Kendi Git Dallarını Alıyor ve Ben Bunun İçin Buradayım</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</guid><description>VS Code 1.117, agent oturumları için worktree izolasyonu, kalıcı Autopilot modu ve alt-agent desteği sunuyor. Ajanlı kodlama iş akışı çok daha gerçek hale geldi.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;AI asistanı&amp;rdquo; ile &amp;ldquo;AI takım üyesi&amp;rdquo; arasındaki çizgi giderek inceliyor. VS Code 1.117 az önce yayınlandı ve &lt;a href="https://code.visualstudio.com/updates/v1_117"&gt;tam sürüm notları&lt;/a&gt; çok şey içeriyor, ancak buradaki hikaye açık: agentlar geliştirme iş akışınızda birinci sınıf vatandaş haline geliyor.&lt;/p&gt;
&lt;p&gt;İşte gerçekten önemli olan şeyler.&lt;/p&gt;
&lt;h2 id="autopilot-modu-artık-tercihinizi-hatırlıyor"&gt;Autopilot modu artık tercihinizi hatırlıyor&lt;/h2&gt;
&lt;p&gt;Daha önce her yeni oturum başlattığınızda Autopilot&amp;rsquo;u yeniden etkinleştirmeniz gerekiyordu. Can sıkıcıydı. Artık izin modunuz oturumlar arasında korunuyor ve varsayılanı yapılandırabiliyorsunuz.&lt;/p&gt;
&lt;p&gt;Agent Host üç oturum yapılandırmasını destekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default&lt;/strong&gt; — araçlar çalışmadan önce onay istiyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass&lt;/strong&gt; — her şeyi otomatik onaylıyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — tamamen özerk, kendi sorularını yanıtlıyor ve devam ediyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Migrasyonlar, Docker ve CI ile yeni bir .NET projesi kuruyorsanız — Autopilot&amp;rsquo;u bir kez ayarlayın ve unutun. O tercih kalıcı.&lt;/p&gt;
&lt;h2 id="agent-oturumları-için-worktree-ve-git-izolasyonu"&gt;Agent oturumları için worktree ve git izolasyonu&lt;/h2&gt;
&lt;p&gt;Bu en büyük özellik. Agent oturumları artık tam worktree ve git izolasyonunu destekliyor. Bu, bir agent bir görev üzerinde çalışırken kendi dalını ve çalışma dizinini aldığı anlamına geliyor. Ana dalınız dokunulmadan kalıyor.&lt;/p&gt;
&lt;p&gt;Daha da iyisi — Copilot CLI bu worktree oturumları için anlamlı dal adları üretiyor. Artık &lt;code&gt;agent-session-abc123&lt;/code&gt; yok. Agentin ne yaptığını gerçekten açıklayan bir şey alıyorsunuz.&lt;/p&gt;
&lt;p&gt;Birden fazla özellik dalı üzerinde çalışan veya uzun bir iskele görevi çalışırken hata düzelten .NET geliştiricileri için bu oyun değiştirici. Bir worktree&amp;rsquo;de API controller&amp;rsquo;larınızı oluşturan bir agent varken siz başka bir worktree&amp;rsquo;de servis katmanı sorununu ayıklıyor olabilirsiniz. Çakışma yok. Stash yok. Karmaşa yok.&lt;/p&gt;
&lt;h2 id="alt-agentlar-ve-agent-ekipleri"&gt;Alt-agentlar ve agent ekipleri&lt;/h2&gt;
&lt;p&gt;Agent Host Protocol artık alt-agentları destekliyor. Bir agent, bir görevin parçalarını yönetmek için başka agentlar çalıştırabilir. Görevlendirme gibi düşünün — ana agent koordine eder, uzman agentlar parçaları yönetir.&lt;/p&gt;
&lt;p&gt;Bu erken aşamada, ancak .NET iş akışları için potansiyel açık. EF Core migrasyonlarınızı yöneten bir agent varken diğeri entegrasyon testlerinizi kuruyor, bunu hayal edin. Tam olarak oraya henüz ulaşmadık, ancak protokol desteğinin şimdi gelmesi tooling&amp;rsquo;in hızla takip edeceği anlamına geliyor.&lt;/p&gt;
&lt;h2 id="agentlar-girdi-gönderdiğinde-terminal-çıktısı-otomatik-dahil-ediliyor"&gt;Agentlar girdi gönderdiğinde terminal çıktısı otomatik dahil ediliyor&lt;/h2&gt;
&lt;p&gt;Küçük ama anlamlı. Bir agent terminale girdi gönderdiğinde, terminal çıktısı artık otomatik olarak bağlama dahil ediliyor. Daha önce, agent ne olduğunu görmek için ekstra bir tur atmak zorundaydı.&lt;/p&gt;
&lt;p&gt;Bir agentin &lt;code&gt;dotnet build&lt;/code&gt; çalıştırdığını, başarısız olduğunu ve ardından hatayı görmek için başka bir gidiş-dönüş yaptığını izlediyseniz — bu sürtünme gitti. Çıktıyı hemen görüyor ve tepki veriyor.&lt;/p&gt;
&lt;h2 id="macosta-agents-uygulaması-kendi-kendini-güncelliyor"&gt;macOS&amp;rsquo;ta Agents uygulaması kendi kendini güncelliyor&lt;/h2&gt;
&lt;p&gt;macOS&amp;rsquo;taki bağımsız Agents uygulaması artık kendi kendini güncelliyor. Artık yeni sürümleri manuel olarak indirmeye gerek yok. Güncel kalıyor.&lt;/p&gt;
&lt;h2 id="bilmeye-değer-küçük-şeyler"&gt;Bilmeye değer küçük şeyler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;package.json hover&amp;rsquo;ları&lt;/strong&gt; artık hem yüklü sürümü hem de mevcut en son sürümü gösteriyor. .NET projelerinizin yanında npm tooling yönetiyorsanız kullanışlı.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSDoc&lt;/strong&gt; yorumlarındaki &lt;strong&gt;resimler&lt;/strong&gt; hover ve tamamlamalarda doğru şekilde render ediliyor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot CLI oturumları&lt;/strong&gt; artık VS Code tarafından mı yoksa harici olarak mı oluşturulduklarını gösteriyor — terminaller arasında atlıyorsanız kullanışlı.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot CLI, Claude Code ve Gemini CLI&lt;/strong&gt; kabuk türleri olarak tanınıyor. Editör ne çalıştırdığınızı biliyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;VS Code 1.117 gösterişli bir özellik yığını değil. Altyapı. Worktree izolasyonu, kalıcı izinler, alt-agent protokolleri — bunlar, agentların kodunuza basmadan gerçek, paralel görevleri üstlendiği bir iş akışının yapı taşları.&lt;/p&gt;
&lt;p&gt;.NET ile geliştirme yapıyorsanız ve henüz ajanlı iş akışına girmediyseniz, dürüstçe söylemek gerekirse, başlamak için şimdi tam zamanı.&lt;/p&gt;</content:encoded></item><item><title>Azure'daki AI Deneyimleriniz Para Yakıyor — İşte Bunu Düzeltmenin Yolu</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/</guid><description>Azure'daki AI iş yükleri hızla pahalıya gelebilir. Geliştirmenizi yavaşlatmadan maliyetleri kontrol altında tutmak için gerçekten işe yarayan yöntemlerden bahsedelim.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Şu an Azure üzerinde AI destekli uygulamalar geliştiriyorsanız, muhtemelen şunu fark etmişsinizdir: bulut faturanız eskisinden farklı görünüyor. Sadece daha yüksek değil — daha tuhaf. Ani sıçramalar yapıyor. Tahmin etmesi güç.&lt;/p&gt;
&lt;p&gt;Microsoft, &lt;a href="https://azure.microsoft.com/en-us/blog/cloud-cost-optimization-principles-that-still-matter/"&gt;hâlâ geçerliliğini koruyan bulut maliyet optimizasyon ilkeleri&lt;/a&gt; üzerine harika bir yazı yayımladı ve dürüst olmak gerekirse, zamanlama daha iyi olamazdı. Çünkü AI iş yükleri, maliyetler söz konusu olduğunda oyunun kurallarını değiştirdi.&lt;/p&gt;
&lt;h2 id="ai-iş-yükleri-neden-farklı-hissettiriyor"&gt;AI iş yükleri neden farklı hissettiriyor&lt;/h2&gt;
&lt;p&gt;Şöyle düşünün. Geleneksel .NET iş yükleri görece tahmin edilebilir. App Service katmanınızı bilirsiniz, SQL DTU&amp;rsquo;larınızı bilirsiniz, aylık harcamayı makul ölçüde doğru tahmin edebilirsiniz. AI iş yükleri? O kadar da değil.&lt;/p&gt;
&lt;p&gt;Hangisinin uygun olduğunu görmek için birden fazla modeli test ediyorsunuz. İnce ayar için GPU destekli altyapı kuruyorsunuz. Prompt uzunluğuna ve kullanıcı davranışına göre token tüketiminin çılgınca değiştiği Azure OpenAI&amp;rsquo;ya API çağrıları yapıyorsunuz. Her deney gerçek para maliyeti içeriyor ve doğru yaklaşımı bulmadan önce düzinelerce deneme yapabiliyorsunuz.&lt;/p&gt;
&lt;p&gt;Bu öngörülemezlik, maliyet optimizasyonunu kritik kılıyor — sonradan düşünülecek bir şey olarak değil, ilk günden itibaren.&lt;/p&gt;
&lt;h2 id="yönetim-ile-optimizasyon--farkı-bilin"&gt;Yönetim ile optimizasyon — farkı bilin&lt;/h2&gt;
&lt;p&gt;Makaledeki geliştiricilerin gözden kaçırdığını düşündüğüm bir ayrım var: maliyet &lt;em&gt;yönetimi&lt;/em&gt; ile maliyet &lt;em&gt;optimizasyonu&lt;/em&gt; arasında bir fark var.&lt;/p&gt;
&lt;p&gt;Yönetim, takip etmek ve raporlamaktır. Azure Cost Management&amp;rsquo;ta bütçeler kurarsınız, uyarılar alırsınız, panolar görürsünüz. Bu temel gereksinimdir.&lt;/p&gt;
&lt;p&gt;Optimizasyon, gerçek kararlar aldığınız yerdir. O S3 katmanına gerçekten ihtiyacınız var mı, yoksa S1 yükü kaldırır mı? O her zaman açık hesaplama örneği hafta sonları boşta mı oturuyor? Eğitim işleriniz için spot instance kullanabilir misiniz?&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri olarak koda odaklanma ve altyapı kararlarını &amp;ldquo;operasyon ekibine&amp;rdquo; bırakma eğilimindeyiz. Ama Azure&amp;rsquo;a dağıtıyorsanız, o kararlar sizin kararlarınızdır.&lt;/p&gt;
&lt;h2 id="gerçekten-işe-yarayan-şeyler"&gt;Gerçekten işe yarayan şeyler&lt;/h2&gt;
&lt;p&gt;Makaleye ve kendi deneyimlerime dayanarak, fark yaratan şeyler şunlar:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ne harcadığınızı ve nerede harcadığınızı bilin.&lt;/strong&gt; Kaynaklarınızı etiketleyin. Gerçekten. Hangi projenin ya da deneyin bütçenizi tükettiğini söyleyemiyorsanız hiçbir şeyi optimize edemezsiniz. Uygun etiketlemeyle Azure Cost Management en iyi dostunuzdur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deney yapmadan önce güvenlik sınırları koyun.&lt;/strong&gt; Geliştirme/test ortamlarında pahalı SKU&amp;rsquo;ları kısıtlamak için Azure Policy kullanın. Azure OpenAI dağıtımlarınıza harcama limitleri belirleyin. Hafta sonu biri GPU kümesini çalışır durumda bırakmış diye fatura gelene kadar beklemeyin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sürekli boyutlandırın.&lt;/strong&gt; Prototip aşamasında seçtiğiniz VM? Üretim için muhtemelen yanlış. Azure Advisor size öneriler sunuyor — gerçekten bakın. Yıllık değil, aylık olarak gözden geçirin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yaşam döngüsünü düşünün.&lt;/strong&gt; Geliştirme kaynakları kapanabilmeli. Test ortamlarının 7/24 çalışması gerekmez. Otomatik kapatma politikaları kullanın. AI iş yükleri için özellikle, hesaplamayı sıcak tutmak yerine kullanım başına ödeme yaptığınız sunucusuz seçenekleri değerlendirin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maliyeti değil, değeri ölçün.&lt;/strong&gt; Bunu unutmak kolay. Daha pahalı ama önemli ölçüde daha iyi sonuçlar veren bir model doğru seçim olabilir. Amaç en az harcamak değil — akıllıca harcamaktır.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Bulut maliyet optimizasyonu tek seferlik bir temizlik değildir. Bir alışkanlıktır. AI iş yükleri harcamayı her zamankinden daha az öngörülebilir hale getirirken, bu alışkanlığı erken edinmek sizi daha sonra acı sürprizlerden kurtarır.&lt;/p&gt;
&lt;p&gt;Azure üzerinde geliştiren bir .NET geliştiricisiyseniz, bulut faturanıza kodunuza baktığınız gibi bakmaya başlayın — düzenli olarak gözden geçirin, karmaşıklaştığında yeniden yapılandırın ve ne kadara mal olacağını anlamadan asla dağıtmayın.&lt;/p&gt;</content:encoded></item><item><title>Foundry'nin RFT'si Daha Ucuz ve Daha Akıllı Hale Geldi — İşte Neler Değişti</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-fine-tuning-april-2026-rft-graders/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-fine-tuning-april-2026-rft-graders/</guid><description>Microsoft Foundry bu ay üç RFT güncellemesi gönderdi: o4-mini için global eğitim, yeni GPT-4.1 model grader'ları ve saatlerince hata ayıklamadan tasarruf etmenizi sağlayacak en iyi pratikler kılavuzu.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-fine-tuning-april-2026-rft-graders/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Fine-tune edilmiş modellere dayanan .NET uygulamaları geliştiriyorsanız, bu ayki Foundry güncellemeleri dikkat etmeye değer. Reinforcement Fine-Tuning daha erişilebilir ve önemli ölçüde daha ucuz hale geldi.&lt;/p&gt;
&lt;p&gt;Tüm ayrıntılar &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-foundry-finetune-april-2026/"&gt;resmi duyuruda&lt;/a&gt; mevcut, ancak işte pratik özet.&lt;/p&gt;
&lt;h2 id="o4-mini-için-global-eğitim"&gt;o4-mini için Global Eğitim&lt;/h2&gt;
&lt;p&gt;o4-mini, akıl yürütme ağırlıklı ve agentic iş yükleri için tercih edilen modeldir. Büyük haber: artık 13+ Azure bölgesinden fine-tuning işleri başlatabilirsiniz; Standart eğitime kıyasla daha düşük token başına eğitim maliyetiyle. Aynı altyapı, aynı kalite, daha geniş erişim.&lt;/p&gt;
&lt;p&gt;Ekibiniz coğrafi olarak dağıtılmışsa bu önemlidir. Artık eğitim yapabilmek için birkaç bölgeyle sınırlı değilsiniz.&lt;/p&gt;
&lt;p&gt;Global bir eğitim işi başlatmak için REST API çağrısı:&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;curl -X POST &lt;span class="s2"&gt;&amp;#34;https://&amp;lt;your-resource&amp;gt;.openai.azure.com/openai/fine_tuning/jobs?api-version=2025-04-01-preview&amp;#34;&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; -H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/json&amp;#34;&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; -H &lt;span class="s2"&gt;&amp;#34;api-key: &lt;/span&gt;&lt;span class="nv"&gt;$AZURE_OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&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; -d &lt;span class="s1"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;model&amp;#34;: &amp;#34;o4-mini&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;training_file&amp;#34;: &amp;#34;&amp;lt;your-training-file-id&amp;gt;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;method&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;type&amp;#34;: &amp;#34;reinforcement&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;reinforcement&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;grader&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;type&amp;#34;: &amp;#34;string_check&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;name&amp;#34;: &amp;#34;answer-check&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;input&amp;#34;: &amp;#34;{{sample.output_text}}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;reference&amp;#34;: &amp;#34;{{item.reference_answer}}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;operation&amp;#34;: &amp;#34;eq&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;hyperparameters&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;n_epochs&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;compute_multiplier&amp;#34;: 1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;trainingType&amp;#34;: &amp;#34;globalstandard&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;trainingType: globalstandard&lt;/code&gt; bayrağı temel farktır.&lt;/p&gt;
&lt;h2 id="yeni-model-graderlar-gpt-41-ailesi"&gt;Yeni Model Grader&amp;rsquo;lar: GPT-4.1 Ailesi&lt;/h2&gt;
&lt;p&gt;Grader&amp;rsquo;lar, modelinizin optimize ettiği ödül sinyalini tanımlar. Şimdiye kadar model tabanlı grader&amp;rsquo;lar daha küçük bir model setiyle sınırlıydı. Artık üç yeni seçenek var: GPT-4.1, GPT-4.1-mini ve GPT-4.1-nano.&lt;/p&gt;
&lt;p&gt;Deterministik grader&amp;rsquo;lar yerine model grader&amp;rsquo;larına ne zaman başvurmalısınız? Görev çıktınız açık uçluysa, birden fazla boyutta kısmi puan almanız gerekiyorsa veya araç çağrısının doğruluğunun semantik bağlama bağlı olduğu agentic iş akışları oluşturuyorsanız.&lt;/p&gt;
&lt;p&gt;Kademeli strateji pratik:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;İlk iterasyonlar için &lt;strong&gt;GPT-4.1-nano&lt;/strong&gt;. Düşük maliyet, hızlı geri bildirim döngüleri.&lt;/li&gt;
&lt;li&gt;Grading rubric&amp;rsquo;iniz stabil olduğunda ve daha yüksek doğruluğa ihtiyaç duyduğunuzda &lt;strong&gt;GPT-4.1-mini&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Üretim grading&amp;rsquo;i veya her puanlama kararının önemli olduğu karmaşık rubric&amp;rsquo;ler için &lt;strong&gt;GPT-4.1&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tek bir RFT işinde grader türlerini bile karıştırabilirsiniz. &amp;ldquo;Doğru cevap&amp;rdquo; boyutu için string eşleşmesi ve akıl yürütme kalitesini değerlendirmek için model grader kullanın. Bu esneklik, gerçek iş yükleri için kullanışlı kılan şey.&lt;/p&gt;
&lt;h2 id="rft-veri-formatı-tuzağı"&gt;RFT Veri Formatı Tuzağı&lt;/h2&gt;
&lt;p&gt;Bu insanları tökezletiyor. RFT veri formatı SFT&amp;rsquo;den farklıdır. Her satırdaki son mesaj User veya Developer rolünde olmalıdır — Assistant değil. Beklenen cevap, grader&amp;rsquo;ın doğrudan referans aldığı &lt;code&gt;reference_answer&lt;/code&gt; gibi üst düzey bir anahtara gider.&lt;/p&gt;
&lt;p&gt;Denetimli fine-tuning yapıyorsanız ve RFT&amp;rsquo;ye geçmek istiyorsanız, eğitim verilerinizi yeniden yapılandırmanız gerekir. Bu adımı atlarsanız işleriniz sessizce başarısız olur.&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;Azure OpenAI SDK üzerinden fine-tune edilmiş modelleri .NET uygulamalarınızdan çağırıyorsanız, daha ucuz eğitim daha agresif iterasyon yapabileceğiniz anlamına gelir. Model grader seçenekleri, nüanslı görevler için fine-tuning yapabileceğiniz anlamına gelir — yalnızca tam eşleşme senaryoları için değil. &lt;a href="https://github.com/microsoft-foundry/fine-tuning/blob/main/Demos/Agentic_RFT_PrivatePreview/RFT_Best_Practice.md"&gt;GitHub&lt;/a&gt;&amp;lsquo;daki en iyi pratikler kılavuzu size gerçek hata ayıklama süresi kazandıracak.&lt;/p&gt;
&lt;p&gt;Küçük başlayın. On ila yüz örnek. Basit grader. Döngüyü doğrulayın. Sonra ölçeklendirin.&lt;/p&gt;</content:encoded></item><item><title>Docker Sandbox, Copilot Agent'larının Makinenizi Tehlikeye Atmadan Kodunuzu Yeniden Düzenlemesini Sağlıyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>Docker Sandbox, GitHub Copilot agent'larına yeniden düzenleme işlemleri için güvenli bir microVM ortamı sunuyor — izin isteği yok, ana sisteminize risk yok. Bu durum büyük ölçekli .NET modernizasyonunda neden her şeyi değiştiriyor, işte açıklıyoruz.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Copilot&amp;rsquo;un agent modunu küçük düzenlemelerin ötesinde bir şey için kullandıysanız, acısını bilirsiniz. Her dosya yazma işlemi, her terminal komutu — bir izin isteği daha. Bunu 50 proje boyunca çalıştırdığınızı düşünün. Hiç eğlenceli değil.&lt;/p&gt;
&lt;p&gt;Azure ekibi, &lt;a href="https://devblogs.microsoft.com/all-things-azure/best-of-both-worlds-for-agentic-refactoring-github-copilot-microvms-via-docker-sandbox/"&gt;GitHub Copilot agent&amp;rsquo;ları için Docker Sandbox&lt;/a&gt; hakkında bir yazı yayımladı ve dürüst olmak gerekirse, bu gördüğüm en pratik agentic araç geliştirmelerinden biri. MicroVM&amp;rsquo;ler kullanarak Copilot&amp;rsquo;a tamamen izole bir ortam sağlıyor; orada istediği gibi davranabilir — paket yükleyebilir, build çalıştırabilir, testleri yürütebilir — ana sisteminize dokunmadan.&lt;/p&gt;
&lt;h2 id="docker-sandbox-size-gerçekte-ne-veriyor"&gt;Docker Sandbox size gerçekte ne veriyor&lt;/h2&gt;
&lt;p&gt;Temel fikir basit: tam Linux ortamıyla hafif bir microVM başlatın, çalışma alanınızı içine senkronize edin ve Copilot agent&amp;rsquo;ının içinde serbestçe çalışmasına izin verin. İşi bittiğinde değişiklikler geri senkronize edilir.&lt;/p&gt;
&lt;p&gt;Bunu sadece &amp;ldquo;bir container&amp;rsquo;da bir şeyler çalıştır&amp;quot;dan fazlası yapan şeyler şunlar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mutlak yolları koruyan çift yönlü çalışma alanı senkronizasyonu&lt;/strong&gt;. Proje yapınız sandbox içinde tamamen aynı görünür. Yol kaynaklı build hataları yok.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MicroVM içinde çalışan özel Docker daemon&lt;/strong&gt;. Agent, ana makinenizin Docker soketini bağlamak zorunda kalmadan container oluşturabilir ve çalıştırabilir. Güvenlik açısından bu büyük bir kazanım.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent&amp;rsquo;ın ağda neye erişebileceğini kontrol eden HTTP/HTTPS filtreleme proxy&amp;rsquo;leri&lt;/strong&gt;. Hangi registry&amp;rsquo;lere ve endpoint&amp;rsquo;lere izin verildiğine siz karar verirsiniz. Sandbox içindeki bir &lt;code&gt;npm install&lt;/code&gt;&amp;lsquo;dan gelen tedarik zinciri saldırıları mı? Engellendi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YOLO modu&lt;/strong&gt; — evet, gerçekten böyle çağırıyorlar. Agent izin istemi olmadan çalışıyor çünkü ana makinenize gerçekten zarar veremez. Her yıkıcı eylem sandbox içinde kalıyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="net-geliştiricilerinin-neden-önemsemesi-gerekiyor"&gt;.NET geliştiricilerinin neden önemsemesi gerekiyor&lt;/h2&gt;
&lt;p&gt;Pek çok ekibin şu an karşı karşıya olduğu modernizasyon işini düşünün. .NET 9&amp;rsquo;a taşımanız gereken, 30 projelik bir .NET Framework çözümünüz var. Bu yüzlerce dosya değişikliği demek — proje dosyaları, namespace güncellemeleri, API değişiklikleri, NuGet geçişleri.&lt;/p&gt;
&lt;p&gt;Docker Sandbox ile bir Copilot agent&amp;rsquo;ını bir projeye yönlendirebilir, microVM içinde serbestçe yeniden düzenlemesine izin verebilir, doğrulama için &lt;code&gt;dotnet build&lt;/code&gt; ve &lt;code&gt;dotnet test&lt;/code&gt; çalıştırabilir ve yalnızca gerçekten çalışan değişiklikleri kabul edebilirsiniz. Denemeler yaparken yerel geliştirme ortamınızı yanlışlıkla mahvetme riski yok.&lt;/p&gt;
&lt;p&gt;Yazı ayrıca &lt;strong&gt;paralel agent filosu&lt;/strong&gt; çalıştırmayı da anlatıyor — her biri kendi sandbox&amp;rsquo;ında — farklı projeleri aynı anda ele alıyor. Büyük .NET çözümleri veya microservice mimarileri için bu muazzam bir zaman tasarrufu. Servis başına bir agent, hepsi izole çalışıyor, hepsi bağımsız olarak doğrulanıyor.&lt;/p&gt;
&lt;h2 id="güvenlik-boyutu-önemli"&gt;Güvenlik boyutu önemli&lt;/h2&gt;
&lt;p&gt;İnsanların çoğunlukla atladığı şey şu: bir AI agent&amp;rsquo;ının rastgele komutlar yürütmesine izin verdiğinizde, ona tüm makinenizle güveniyorsunuz demektir. Docker Sandbox bu modeli tersine çeviriyor. Agent, tek kullanımlık bir ortam içinde tam özerklik alıyor. Ağ proxy&amp;rsquo;si yalnızca onaylanan kaynaklardan çekebilmesini sağlıyor. Ana makine dosya sisteminiz, Docker daemon&amp;rsquo;unuz ve kimlik bilgileriniz dokunulmadan kalıyor.&lt;/p&gt;
&lt;p&gt;Uyumluluk gereksinimleri olan ekipler için — ki bu çoğu kurumsal .NET mağazasıdır — bu, &amp;ldquo;agentic AI kullanamayız&amp;rdquo; ile &amp;ldquo;güvenle benimseyelim&amp;rdquo; arasındaki farktır.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Docker Sandbox, agentic kodlamanın temel gerilimini çözüyor: agent&amp;rsquo;ların kullanışlı olabilmek için özgürlüğe ihtiyacı var, ama ana makinenizde özgürlük tehlikelidir. MicroVM&amp;rsquo;ler her ikisini de sunuyor. Büyük ölçekli herhangi bir .NET yeniden düzenleme veya modernizasyon planı yapıyorsanız, bunu şimdi kurmaya değer. Copilot&amp;rsquo;un kod zekasını güvenli bir yürütme ortamıyla birleştirmek, üretim ekiplerinin beklediği tam olarak bu.&lt;/p&gt;</content:encoded></item><item><title>Azure'da AI Ajanlarınızı Nerede Barındırmalısınız? Pratik Bir Karar Rehberi</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</guid><description>Azure, AI ajanları barındırmak için ham container'lardan tam yönetimli Foundry Hosted Agents'a kadar altı yol sunuyor. .NET iş yükünüz için doğru seçeneği nasıl belirleyeceğinizi burada bulabilirsiniz.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Şu an .NET ile AI ajanları geliştiriyorsanız, muhtemelen bunu fark etmişsinizdir: Azure&amp;rsquo;da bunları barındırmanın &lt;em&gt;pek çok&lt;/em&gt; yolu var. Container Apps, AKS, Functions, App Service, Foundry Agents, Foundry Hosted Agents — ve gerçekten birini seçmeniz gerekene kadar hepsi makul görünüyor. Microsoft, bunu netleştiren &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;Azure AI ajan barındırma için kapsamlı bir rehber&lt;/a&gt; yayımladı ve ben bunu pratik bir .NET geliştirici perspektifinden ele almak istiyorum.&lt;/p&gt;
&lt;h2 id="altı-seçeneğe-genel-bakış"&gt;Altı seçeneğe genel bakış&lt;/h2&gt;
&lt;p&gt;Ortamı şöyle özetlerim:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Seçenek&lt;/th&gt;
&lt;th&gt;En iyi kullanım&lt;/th&gt;
&lt;th&gt;Siz yönetirsiniz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Container Apps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;K8s karmaşıklığı olmadan tam container kontrolü&lt;/td&gt;
&lt;td&gt;Gözlemlenebilirlik, durum, yaşam döngüsü&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AKS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kurumsal uyumluluk, çok kümeli, özel ağ&lt;/td&gt;
&lt;td&gt;Her şey (bu onun amacı)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Azure Functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Olay odaklı, kısa süren ajan görevleri&lt;/td&gt;
&lt;td&gt;Çok az — gerçek serverless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;App Service&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Basit HTTP ajanları, öngörülebilir trafik&lt;/td&gt;
&lt;td&gt;Dağıtım, ölçeklendirme yapılandırması&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Foundry Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Portal/SDK aracılığıyla kod gerektirmeyen ajanlar&lt;/td&gt;
&lt;td&gt;Neredeyse hiçbir şey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Foundry Hosted Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yönetilen altyapıyla özel framework ajanları&lt;/td&gt;
&lt;td&gt;Yalnızca ajan kodunuz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;İlk dördü genel amaçlı işlem — üzerlerinde ajan &lt;em&gt;çalıştırabilirsiniz&lt;/em&gt;, ancak bunlar bunun için tasarlanmadı. Son ikisi ajan doğasında: konuşmaları, araç çağrılarını ve ajan yaşam döngülerini birinci sınıf kavramlar olarak anlıyorlar.&lt;/p&gt;
&lt;h2 id="foundry-hosted-agents--net-ajan-geliştiricileri-için-tatlı-nokta"&gt;Foundry Hosted Agents — .NET ajan geliştiricileri için tatlı nokta&lt;/h2&gt;
&lt;p&gt;İşte dikkatimi çeken kısım. Foundry Hosted Agents tam ortada duruyor: kendi kodunuzu çalıştırma esnekliğini alıyorsunuz (Semantic Kernel, Agent Framework, LangGraph — her neyse), ancak platform altyapıyı, gözlemlenebilirliği ve konuşma yönetimini üstleniyor.&lt;/p&gt;
&lt;p&gt;Kilit parça &lt;strong&gt;Hosting Adapter&lt;/strong&gt; — ajan framework&amp;rsquo;ünüzü Foundry platformuna köprüleyen ince bir soyutlama katmanı. Microsoft Agent Framework için şöyle görünüyor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.agentserver.agentframework&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;from_agent_framework&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;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ChatAgent&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;chat_client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;AzureAIAgentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&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="o"&gt;=&lt;/span&gt;&lt;span class="s2"&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="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_local_time&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&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;from_agent_framework&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&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;Barındırma hikayenizin tamamı bu. Adapter, protokol çevirisini, server-sent events aracılığıyla streaming&amp;rsquo;i, konuşma geçmişini ve OpenTelemetry izlemeyi otomatik olarak hallediyor. Özel middleware yok, manuel bağlantı yok.&lt;/p&gt;
&lt;h2 id="dağıtım-gerçekten-basit"&gt;Dağıtım gerçekten basit&lt;/h2&gt;
&lt;p&gt;Daha önce Container Apps&amp;rsquo;e ajan dağıttım ve çalışıyor, ancak durum yönetimi ve gözlemlenebilirlik için çok fazla yapıştırıcı kod yazıyorsunuz. Hosted Agents ve &lt;code&gt;azd&lt;/code&gt; ile dağıtım şöyle:&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;# AI agent uzantısını yükle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ext install azure.ai.agents
&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 şablondan başlat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent init
&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;# Derle, gönder, dağıt — tamam&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tek &lt;code&gt;azd up&lt;/code&gt; komutu, container&amp;rsquo;ınızı derliyor, ACR&amp;rsquo;a gönderiyor, Foundry projesini oluşturuyor, model endpoint&amp;rsquo;lerini dağıtıyor ve ajanınızı başlatıyor. Beş adım tek komuta indirgeniyor.&lt;/p&gt;
&lt;h2 id="yerleşik-konuşma-yönetimi"&gt;Yerleşik konuşma yönetimi&lt;/h2&gt;
&lt;p&gt;Bu, üretimde en çok zaman kazandıran kısım. Kendi konuşma durum deposunuzu oluşturmak yerine, Hosted Agents bunu doğal olarak hallediyor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Kalıcı bir konuşma oluştur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conversations&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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="c1"&gt;# İlk tur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&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;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&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="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Unutma: favori numaram 42.&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# İkinci tur — bağlam korunuyor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&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;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&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="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Favori numamı 10 ile çarp.&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Redis yok. Cosmos DB oturum deposu yok. Mesaj serileştirme için özel middleware yok. Platform sadece hallediyor.&lt;/p&gt;
&lt;h2 id="karar-çerçevem"&gt;Karar çerçevem&lt;/h2&gt;
&lt;p&gt;Altı seçeneğin tamamını inceledikten sonra, işte hızlı zihinsel modelim:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sıfır altyapı mı istiyorsunuz?&lt;/strong&gt; → Foundry Agents (portal/SDK, container yok)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Özel ajan kodunuz var ama yönetilen barındırma mı istiyorsunuz?&lt;/strong&gt; → Foundry Hosted Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olay odaklı, kısa ömürlü ajan görevlerine mi ihtiyacınız var?&lt;/strong&gt; → Azure Functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K8s olmadan maksimum container kontrolü mü istiyorsunuz?&lt;/strong&gt; → Container Apps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Katı uyumluluk ve çok kümeli mimariye mi ihtiyacınız var?&lt;/strong&gt; → AKS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Öngörülebilir trafikli basit bir HTTP ajanınız mı var?&lt;/strong&gt; → App Service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Semantic Kernel veya Microsoft Agent Framework ile geliştiren çoğu .NET geliştirici için, Hosted Agents muhtemelen doğru başlangıç noktası. Sıfıra ölçekleme, yerleşik OpenTelemetry, konuşma yönetimi ve framework esnekliği alıyorsunuz — Kubernetes yönetmeden veya kendi gözlemlenebilirlik yığınınızı bağlamadan.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Azure&amp;rsquo;daki ajan barındırma ortamı hızla olgunlaşıyor. Bugün yeni bir AI ajan projesi başlatıyorsanız, alışkanlıkla Container Apps veya AKS&amp;rsquo;e uzanmadan önce Foundry Hosted Agents&amp;rsquo;ı ciddi olarak değerlendirirdim. Yönetilen altyapı gerçek zaman kazandırıyor ve hosting adapter modeli, framework seçiminizi korumanıza olanak tanıyor.&lt;/p&gt;
&lt;p&gt;Çalışan örnekler için &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;Microsoft&amp;rsquo;ın tam rehberine&lt;/a&gt; ve &lt;a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/samples/python/hosted-agents"&gt;Foundry Samples reposuna&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>.NET'te Agent Skills Ciddi Anlamda Esnek Hale Geldi</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-skills-dotnet-three-authoring-patterns/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-skills-dotnet-three-authoring-patterns/</guid><description>Microsoft Agent Framework artık skill yazmak için üç yol destekliyor — dosya tabanlı, sınıf tabanlı ve satır içi kod — hepsi tek bir provider üzerinden birleştiriliyor. Bunun neden önemli olduğu ve her birini nasıl kullanacağınız.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-skills-dotnet-three-authoring-patterns/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Microsoft Agent Framework ile agent geliştiriyorsanız rutini bilirsiniz: skill&amp;rsquo;leri tanımlarsınız, bir provider&amp;rsquo;a bağlarsınız ve agentın hangisini çağıracağına karar vermesini beklersiniz. Yeni olan şey ise bu skill&amp;rsquo;leri &lt;em&gt;nasıl&lt;/em&gt; yazdığınız — ve esneklik sıçraması önemli.&lt;/p&gt;
&lt;p&gt;Son güncelleme, agent skill&amp;rsquo;leri için üç farklı yazım deseni sunuyor: &lt;strong&gt;dosya tabanlı&lt;/strong&gt;, &lt;strong&gt;sınıf tabanlı&lt;/strong&gt; ve &lt;strong&gt;satır içi kod tanımlı&lt;/strong&gt;. Üçü de tek bir &lt;code&gt;AgentSkillsProviderBuilder&lt;/code&gt;&amp;lsquo;a takılır; yani herhangi bir yönlendirme mantığı veya özel bağlantı kodu olmadan bunları karıştırıp eşleştirebilirsiniz. Her birini ve ne zaman kullanacağınızı anlatalım.&lt;/p&gt;
&lt;h2 id="dosya-tabanlı-skilller-başlangıç-noktası"&gt;Dosya tabanlı skill&amp;rsquo;ler: başlangıç noktası&lt;/h2&gt;
&lt;p&gt;Dosya tabanlı skill&amp;rsquo;ler tam olarak adından anlaşıldığı gibi — diskte bir &lt;code&gt;SKILL.md&lt;/code&gt; dosyası, isteğe bağlı scriptler ve referans belgelerle dolu bir dizin. Agentınıza yeni yetenekler vermenin en doğrudan yolu olarak düşünün:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;skills/
└── onboarding-guide/
├── SKILL.md
├── scripts/
│ └── check-provisioning.py
└── references/
└── onboarding-checklist.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; frontmatter&amp;rsquo;ı skill adını ve açıklamasını bildirir, talimatlar bölümü ise agenta scriptleri ve referansları nasıl kullanacağını söyler:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&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;name: onboarding-guide
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: &amp;gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Walk new hires through their first-week setup checklist.
&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Instructions
&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="k"&gt;1.&lt;/span&gt; Ask for the employee&amp;#39;s name and start date.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; Run &lt;span class="sb"&gt;`scripts/check-provisioning.py`&lt;/span&gt; to verify accounts.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; Walk through &lt;span class="sb"&gt;`references/onboarding-checklist.md`&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;4.&lt;/span&gt; Follow up on incomplete items.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ardından script yürütmesi için &lt;code&gt;SubprocessScriptRunner.RunAsync&lt;/code&gt; ile bağlantı kurarsınız:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;skillsProvider&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;AgentSkillsProvider&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;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BaseDirectory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;skills&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;SubprocessScriptRunner&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&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="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 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 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;GetResponsesClient&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 class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ChatClientAgentOptions&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;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;HRAgent&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;ChatOptions&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="p"&gt;{&lt;/span&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 HR 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;AIContextProviders&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;skillsProvider&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;model&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Agent, skill&amp;rsquo;i otomatik olarak keşfeder ve hesap durumunu kontrol etmesi gerektiğinde provisioning scriptini çağırır. Temiz ve basit.&lt;/p&gt;
&lt;h2 id="sınıf-tabanlı-skilller-nuget-üzerinden-yayımlayın"&gt;Sınıf tabanlı skill&amp;rsquo;ler: NuGet üzerinden yayımlayın&lt;/h2&gt;
&lt;p&gt;İşte ekipler için ilginç kısım. Sınıf tabanlı skill&amp;rsquo;ler &lt;code&gt;AgentClassSkill&amp;lt;T&amp;gt;&lt;/code&gt;&amp;lsquo;dan türetilir ve &lt;code&gt;[AgentSkillResource]&lt;/code&gt; ile &lt;code&gt;[AgentSkillScript]&lt;/code&gt; gibi attribute&amp;rsquo;lar kullanır; framework her şeyi yansıma (reflection) yoluyla keşfeder:&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="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;sealed&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BenefitsEnrollmentSkill&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;AgentClassSkill&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;BenefitsEnrollmentSkill&lt;/span&gt;&lt;span class="p"&gt;&amp;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="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;override&lt;/span&gt; &lt;span class="n"&gt;AgentSkillFrontmatter&lt;/span&gt; &lt;span class="n"&gt;Frontmatter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;benefits-enrollment&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="s"&gt;&amp;#34;Enroll an employee in health, dental, or vision plans.&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="kd"&gt;protected&lt;/span&gt; &lt;span class="kd"&gt;override&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Instructions&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;1.&lt;/span&gt; &lt;span class="n"&gt;Read&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;available&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;plans&lt;/span&gt; &lt;span class="n"&gt;resource&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="m"&gt;2.&lt;/span&gt; &lt;span class="n"&gt;Confirm&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;plan&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt; &lt;span class="n"&gt;wants&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="m"&gt;3.&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;enroll&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;complete&lt;/span&gt; &lt;span class="n"&gt;enrollment&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;&amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&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; [AgentSkillResource(&amp;#34;available-plans&amp;#34;)]&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;Plan options with monthly pricing.&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;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;AvailablePlans&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="n"&gt;Available&lt;/span&gt; &lt;span class="n"&gt;Plans&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2026&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;Health&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Basic&lt;/span&gt; &lt;span class="n"&gt;HMO&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;Premium&lt;/span&gt; &lt;span class="n"&gt;PPO&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;month&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;Dental&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Standard&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;Enhanced&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;month&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;Vision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Basic&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;month&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;&amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&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; [AgentSkillScript(&amp;#34;enroll&amp;#34;)]&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;Enrolls employee in the specified benefit plan.&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;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Enroll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;planCode&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="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;success&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HrClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;EnrollInPlan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;planCode&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;return&lt;/span&gt; &lt;span class="n"&gt;JsonSerializer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Serialize&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;success&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;planCode&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="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Buradaki güzellik, bir ekibin bunu NuGet paketi olarak paketleyebilmesidir. Projenize eklersiniz, builder&amp;rsquo;a bırakırsınız ve dosya tabanlı skill&amp;rsquo;lerinizle sıfır koordinasyonla birlikte çalışır:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;skillsProvider&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;AgentSkillsProviderBuilder&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;UseFileSkill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BaseDirectory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;skills&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 class="n"&gt;UseSkill&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;BenefitsEnrollmentSkill&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;UseFileScriptRunner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SubprocessScriptRunner&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="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;Her iki skill de agentın sistem prompt&amp;rsquo;unda görünür. Agent, konuşmaya göre hangisini kullanacağına karar verir — yönlendirme kodu gerekmez.&lt;/p&gt;
&lt;h2 id="satır-içi-skilller-hızlı-köprü"&gt;Satır içi skill&amp;rsquo;ler: hızlı köprü&lt;/h2&gt;
&lt;p&gt;Başka bir ekibin tam ihtiyacınız olan skill&amp;rsquo;i geliştirdiğini ama bir sprint boyunca yayımlanmayacağını bildiğiniz anı tanıyor musunuz? &lt;code&gt;AgentInlineSkill&lt;/code&gt; köprünüzdür:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;timeOffSkill&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;AgentInlineSkill&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;time-off-balance&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;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Calculate remaining vacation and sick days.&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;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;1.&lt;/span&gt; &lt;span class="n"&gt;Ask&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;provided&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="m"&gt;2.&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;calculate&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;remaining&lt;/span&gt; &lt;span class="n"&gt;balance&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="m"&gt;3.&lt;/span&gt; &lt;span class="n"&gt;Present&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;remaining&lt;/span&gt; &lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="n"&gt;clearly&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;&amp;#34;&amp;#34;)
&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;AddScript&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;calculate-balance&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;leaveType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;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="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;totalDays&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HrDatabase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetAnnualAllowance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;leaveType&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;int&lt;/span&gt; &lt;span class="n"&gt;daysUsed&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HrDatabase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetDaysUsed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;leaveType&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;int&lt;/span&gt; &lt;span class="n"&gt;remaining&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;totalDays&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;daysUsed&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;return&lt;/span&gt; &lt;span class="n"&gt;JsonSerializer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Serialize&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;employeeId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;leaveType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;totalDays&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daysUsed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;remaining&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;p&gt;Diğerleri gibi builder&amp;rsquo;a ekleyin:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;skillsProvider&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;AgentSkillsProviderBuilder&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;UseFileSkill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BaseDirectory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;skills&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 class="n"&gt;UseSkill&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;BenefitsEnrollmentSkill&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;UseSkill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;timeOffSkill&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;UseFileScriptRunner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SubprocessScriptRunner&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="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;NuGet paketi sonunda yayımlandığında, satır içi skill&amp;rsquo;i sınıf tabanlıyla değiştirirsiniz. Agent farkı anlamaz.&lt;/p&gt;
&lt;p&gt;Ancak satır içi skill&amp;rsquo;ler sadece köprü için değil. Çalışma zamanında dinamik olarak skill üretmeniz gerektiğinde de doğru seçimdir — config&amp;rsquo;den yüklenen iş birimi başına bir skill gibi — veya bir scriptin DI container&amp;rsquo;ına ait olmayan yerel durumu kapatması (closure) gerektiğinde.&lt;/p&gt;
&lt;h2 id="script-onayı-human-in-the-loop"&gt;Script onayı: human-in-the-loop&lt;/h2&gt;
&lt;p&gt;Üretim agentları geliştiren .NET geliştiricileri için bu, dağıtım konuşmalarını gerçekten açık eden kısım. Bazı scriptlerin gerçek sonuçları var — birini sigorta planına kaydetmek, üretim altyapısını sorgulamak. &lt;code&gt;UseScriptApproval&lt;/code&gt;&amp;lsquo;ı açın ve agent herhangi bir scripti çalıştırmadan önce duraklar:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;skillsProvider&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;AgentSkillsProviderBuilder&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;UseFileSkill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BaseDirectory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;skills&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 class="n"&gt;UseSkill&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;BenefitsEnrollmentSkill&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;UseSkill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;timeOffSkill&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;UseFileScriptRunner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SubprocessScriptRunner&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UseScriptApproval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&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;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;Agent bir script çalıştırmak istediğinde, bunun yerine bir onay isteği döndürür. Uygulamanız kararı toplar — onayla veya reddet — ve agent buna göre devam eder. Düzenlenmiş ortamlarda bu, &amp;ldquo;bunu dağıtabiliriz&amp;rdquo; ile &amp;ldquo;hukuk hayır diyor&amp;rdquo; arasındaki farktır.&lt;/p&gt;
&lt;h2 id="bu-kombinasyonun-önemi"&gt;Bu kombinasyonun önemi&lt;/h2&gt;
&lt;p&gt;Gerçek güç tek bir yazım deseninde değil — kompozisyondadır. Şunları yapabilirsiniz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Küçük başlayın&lt;/strong&gt; dosya tabanlı skill ile, talimatlarda yineleyin ve C# yazmadan yayımlayın&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yeniden kullanılabilir skill&amp;rsquo;ler yayımlayın&lt;/strong&gt; NuGet paketleri olarak; diğer ekipler tek satırla ekleyebilir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boşlukları kapatın&lt;/strong&gt; satır içi skill&amp;rsquo;lerle ihtiyacınız olan şeyi &lt;em&gt;hemen&lt;/em&gt; geliştirmek için&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paylaşılan skill dizinlerini filtreleyin&lt;/strong&gt; predicate&amp;rsquo;lerle, agentınızın yalnızca gereken şeyi yüklemesi için&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İnsan denetimi ekleyin&lt;/strong&gt; üretim sistemlerine dokunan scriptler için&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bunların tümü &lt;code&gt;AgentSkillsProviderBuilder&lt;/code&gt; üzerinden birleşir. Özel yönlendirme, koşullu mantık, skill tür kontrolleri yok.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;.NET&amp;rsquo;te agent skill&amp;rsquo;leri artık gerçekten esnek bir yazım modeline sahip. İster dosya tabanlı skill&amp;rsquo;lerle prototip çizen solo bir geliştirici olun, ister NuGet aracılığıyla paketlenmiş yetenekler yayımlayan kurumsal bir ekip, desenler her duruma uyuyor. Ve script onay mekanizması, insan denetim noktasına ihtiyaç duyduğunuz ortamlar için üretime hazır hale getiriyor.&lt;/p&gt;
&lt;p&gt;Tam rehber için &lt;a href="https://devblogs.microsoft.com/agent-framework/agent-skills-in-net-three-ways-to-author-one-provider-to-run-them/"&gt;orijinal duyuruya&lt;/a&gt;, Microsoft Learn&amp;rsquo;deki &lt;a href="https://learn.microsoft.com/en-us/agent-framework/agents/skills"&gt;Agent Skills belgelerine&lt;/a&gt; ve uygulamalı deneyim için &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/02-agents/AgentSkills"&gt;GitHub&amp;rsquo;daki .NET örneklerine&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>Azure MCP Server 2.0 Yayınlandı — Self-Hosted Agentic Bulut Otomasyonu Artık Burada</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-server-2-self-hosted-agentic-cloud/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-server-2-self-hosted-agentic-cloud/</guid><description>Azure MCP Server 2.0, self-hosted uzak dağıtımlar, 57 Azure servisi genelinde 276 araç ve kurumsal düzeyde güvenlikle kararlı sürüme ulaştı — agentic iş akışları geliştiren .NET geliştiricileri için önemli olan her şey burada.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-server-2-self-hosted-agentic-cloud/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Son zamanlarda MCP ve Azure ile bir şeyler geliştirdiyseniz, yerel deneyimin gayet iyi çalıştığını muhtemelen zaten biliyorsunuzdur. Bir MCP server bağlayın, AI agent&amp;rsquo;ınızın Azure kaynaklarıyla konuşmasına izin verin, devam edin. Ama bu kurulumu bir ekip genelinde paylaşmanız gerektiğinde? İşte orada işler karmaşıklaşıyordu.&lt;/p&gt;
&lt;p&gt;Artık değil. Azure MCP Server &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;2.0 kararlı sürüme ulaştı&lt;/a&gt; ve başlık özelliği tam olarak kurumsal ekiplerin istediği şey: &lt;strong&gt;self-hosted uzak MCP server desteği&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="azure-mcp-server-nedir"&gt;Azure MCP Server nedir?&lt;/h2&gt;
&lt;p&gt;Kısa bir hatırlatma. Azure MCP Server, &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro"&gt;Model Context Protocol&lt;/a&gt; spesifikasyonunu uygular ve Azure yeteneklerini AI agent&amp;rsquo;larının çağırabileceği yapılandırılmış, keşfedilebilir araçlar olarak sunar. Agent&amp;rsquo;ınız ile Azure arasında standartlaştırılmış bir köprü olarak düşünebilirsiniz — sağlama, dağıtım, izleme, tanılama, hepsi tek tutarlı bir arayüz üzerinden.&lt;/p&gt;
&lt;p&gt;Rakamlar kendisi konuşuyor: &lt;strong&gt;57 Azure servisi genelinde 276 MCP aracı&lt;/strong&gt;. Bu ciddi bir kapsam.&lt;/p&gt;
&lt;h2 id="büyük-haber-self-hosted-uzak-dağıtımlar"&gt;Büyük haber: self-hosted uzak dağıtımlar&lt;/h2&gt;
&lt;p&gt;Şöyle ki. MCP&amp;rsquo;yi kendi makinenizde yerel olarak çalıştırmak geliştirme ve deneyler için sorun değil. Ama gerçek bir ekip senaryosunda şunlara ihtiyacınız var:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geliştiriciler ve dahili agent sistemleri için paylaşımlı erişim&lt;/li&gt;
&lt;li&gt;Merkezi yapılandırma (tenant bağlamı, abonelik varsayılanları, telemetri)&lt;/li&gt;
&lt;li&gt;Kurumsal ağ ve politika sınırları&lt;/li&gt;
&lt;li&gt;CI/CD pipeline&amp;rsquo;larına entegrasyon&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Azure MCP Server 2.0 tüm bunları ele alıyor. HTTP tabanlı taşıma, uygun kimlik doğrulama ve tutarlı yönetişimle merkezi olarak yönetilen bir dahili servis olarak dağıtabilirsiniz.&lt;/p&gt;
&lt;p&gt;Kimlik doğrulama için iki sağlam seçenek var:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Managed Identity&lt;/strong&gt; — &lt;a href="https://aka.ms/azmcp/self-host/foundry"&gt;Microsoft Foundry&lt;/a&gt; ile birlikte çalışırken&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On-Behalf-Of (OBO) akışı&lt;/strong&gt; — Azure API&amp;rsquo;lerini oturum açmış kullanıcının bağlamını kullanarak çağıran OpenID Connect delegasyonu&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu OBO akışı, .NET geliştiricileri olarak bizim için özellikle ilginç. Agentic iş akışlarınızın aşırı ayrıcalıklı bir servis hesabı yerine kullanıcının gerçek izinleriyle çalışabileceği anlamına geliyor. En az ayrıcalık ilkesi, doğrudan yerleşik.&lt;/p&gt;
&lt;h2 id="güvenlik-güçlendirmesi"&gt;Güvenlik güçlendirmesi&lt;/h2&gt;
&lt;p&gt;Bu yalnızca bir özellik sürümü değil — aynı zamanda bir güvenlik sürümü. 2.0 sürümü şunları ekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daha güçlü endpoint doğrulaması&lt;/li&gt;
&lt;li&gt;Sorgu odaklı araçlarda injection kalıplarına karşı koruma&lt;/li&gt;
&lt;li&gt;Geliştirme ortamları için daha sıkı izolasyon kontrolleri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MCP&amp;rsquo;yi paylaşımlı bir servis olarak sunacaksanız, bu güvenceler önemli. Çok önemli.&lt;/p&gt;
&lt;h2 id="nerede-kullanabilirsiniz"&gt;Nerede kullanabilirsiniz?&lt;/h2&gt;
&lt;p&gt;İstemci uyumluluk hikayesi geniş. Azure MCP Server 2.0 şunlarla çalışıyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IDE&amp;rsquo;ler&lt;/strong&gt;: VS Code, Visual Studio, IntelliJ, Eclipse, Cursor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLI agent&amp;rsquo;ları&lt;/strong&gt;: GitHub Copilot CLI, Claude Code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bağımsız&lt;/strong&gt;: basit kurulumlar için yerel server&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosted uzak&lt;/strong&gt;: 2.0&amp;rsquo;ın yeni yıldızı&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ayrıca düzenlenmiş dağıtımlar için kritik olan Azure US Government ve 21Vianet tarafından işletilen Azure için sovereign bulut desteği de var.&lt;/p&gt;
&lt;h2 id="bu-net-geliştiricileri-için-neden-önemli"&gt;Bu .NET geliştiricileri için neden önemli&lt;/h2&gt;
&lt;p&gt;.NET ile agentic uygulamalar geliştiriyorsanız — ister Semantic Kernel, ister Microsoft Agent Framework, ister kendi orkestrasyon çözümünüz — Azure MCP Server 2.0, agent&amp;rsquo;larınızın Azure altyapısıyla etkileşime geçmesi için üretime hazır bir yol sunuyor. Özel REST wrapper&amp;rsquo;ları yok. Servise özgü entegrasyon kalıpları yok. Sadece MCP.&lt;/p&gt;
&lt;p&gt;Birkaç gün önce yayınlanan &lt;a href="https://devblogs.microsoft.com/azure-sdk/mcp-as-easy-as-1-2-3-introducing-the-fluent-api-for-mcp-apps/"&gt;MCP Apps için fluent API&lt;/a&gt; ile birleşince .NET MCP ekosistemi hızla olgunlaşıyor.&lt;/p&gt;
&lt;h2 id="başlarken"&gt;Başlarken&lt;/h2&gt;
&lt;p&gt;Kendi yolunuzu seçin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp"&gt;GitHub Repo&lt;/a&gt;&lt;/strong&gt; — kaynak kodu, dokümantasyon, her şey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp/download/docker"&gt;Docker Image&lt;/a&gt;&lt;/strong&gt; — container&amp;rsquo;lı dağıtım&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp/download/vscode"&gt;VS Code Extension&lt;/a&gt;&lt;/strong&gt; — IDE entegrasyonu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp/self-host"&gt;Self-hosting rehberi&lt;/a&gt;&lt;/strong&gt; — 2.0&amp;rsquo;ın öne çıkan özelliği&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Azure MCP Server 2.0, demoda gösterişli görünmeyen ama pratikte her şeyi değiştiren altyapı yükseltmesi türünden. Uygun kimlik doğrulama, güvenlik güçlendirmesi ve sovereign bulut desteğiyle self-hosted uzak MCP, gerçek ekiplerin Azure üzerinde gerçek agentic iş akışları oluşturması için hazır olduğu anlamına geliyor. &amp;ldquo;Kurumsal kullanıma hazır&amp;rdquo; sinyalini bekliyordunuz — işte bu.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 AI Ajanınızın En İyi Dostu Olmak İstiyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 ajansal geliştirmeye tam anlamıyla odaklanıyor — yapılandırılmış CLI çıktısı, izole çalıştırmalar, otomatik iyileştirme ortamları ve tam OpenTelemetry verisi sayesinde AI ajanlarınız uygulamalarınızı gerçekten derleyip çalıştırabilir ve izleyebilir.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI kodlama ajanınızın sağlam bir kod yazdığı, heyecanlandığınız ve ardından uygulamayı çalıştırmaya çalışırken her şeyin dağıldığı o anı biliyor musunuz? Port çakışmaları, hayalet süreçler, yanlış ortam değişkenleri — ve bir anda ajanınız özellik geliştirmek yerine başlangıç sorunlarını çözmek için token harcamaya başlıyor.&lt;/p&gt;
&lt;p&gt;Aspire ekibi tam da bu sorun hakkında &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;gerçekten düşünceli bir yazı&lt;/a&gt; yayımladı ve cevapları ikna edici: Aspire 13.2 yalnızca insanlar için değil, AI ajanları için de tasarlanmış.&lt;/p&gt;
&lt;h2 id="sorun-gerçek"&gt;Sorun gerçek&lt;/h2&gt;
&lt;p&gt;AI ajanları kod yazmakta inanılmaz derecede başarılı. Ancak çalışan bir full-stack uygulama göndermek, dosya oluşturmaktan çok daha fazlasını gerektiriyor. Servisleri doğru sırayla başlatmanız, portları yönetmeniz, ortam değişkenlerini ayarlamanız, veritabanlarını bağlamanız ve bir şeyler bozulduğunda geri bildirim almanız gerekiyor. Şu an çoğu ajan bunların hepsini deneme-yanılma yoluyla hallediypr — komutları çalıştırıyor, hata çıktısını okuyor, yeniden deniyor.&lt;/p&gt;
&lt;p&gt;Markdown talimatları, özel skill&amp;rsquo;ler ve prompt&amp;rsquo;lar ekleyerek onlara rehberlik etmeye çalışıyoruz, ancak bunlar öngörülemez, derlenemiyor ve ayrıştırılmaları bile token harcıyor. Aspire ekibi temel içgörüyü doğru yakaladı: ajanların daha fazla Markdown&amp;rsquo;a değil, &lt;strong&gt;derleyicilere ve yapılandırılmış API&amp;rsquo;lara&lt;/strong&gt; ihtiyacı var.&lt;/p&gt;
&lt;h2 id="ajan-altyapısı-olarak-aspire"&gt;Ajan altyapısı olarak Aspire&lt;/h2&gt;
&lt;p&gt;Aspire 13.2&amp;rsquo;nin ajansal geliştirme masasına getirdikleri:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tüm yığınınız yazılı kodda.&lt;/strong&gt; AppHost, tam topolojinizi — API, frontend, veritabanı, önbellek — derlenebilir TypeScript veya C# olarak tanımlıyor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;catalog&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRedis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cache&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&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="nx"&gt;addNodeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/index.ts&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 class="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PORT&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 class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;postgres&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="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cache&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&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="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&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 class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&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;Bir ajan, uygulama topolojisini anlamak, kaynak eklemek, bağlantıları oluşturmak ve &lt;em&gt;doğrulamak için derlemek&lt;/em&gt; amacıyla bunu okuyabilir. Derleyici bir şeyin yanlış olduğunu anında söylüyor. Tahmin yok, yapılandırma dosyalarıyla deneme-yanılma yok.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Her şeyi yöneten tek komut.&lt;/strong&gt; Ajanların &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; ve veritabanı başlangıç betikleri arasında denge kurması yerine tek yapmaları gereken şey &lt;code&gt;aspire start&lt;/code&gt;. Tüm kaynaklar doğru sırayla, doğru portlarda, doğru yapılandırmayla başlıyor. Uzun süre çalışan süreçler ajanı engellemez — bunları Aspire yönetiyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paralel ajanlar için isolated mod.&lt;/strong&gt; &lt;code&gt;--isolated&lt;/code&gt; seçeneğiyle her Aspire çalıştırması kendi rastgele portlarını ve ayrı user secret&amp;rsquo;larını alıyor. Git worktree&amp;rsquo;lerinde çalışan birden fazla ajanınız mı var? Çakışmayacaklar. Bu, paralel ortamlar açan VS Code&amp;rsquo;un background agent&amp;rsquo;ları gibi araçlar için çok büyük bir gelişme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Telemetri aracılığıyla ajan gözleri.&lt;/strong&gt; İşte burada gerçekten güçlü oluyor. Aspire CLI, geliştirme sırasında tam OpenTelemetry verilerini açığa çıkarıyor — trace&amp;rsquo;ler, metrikler, yapılandırılmış loglar. Ajanınız yalnızca konsol çıktısını okuyup en iyisini ummak zorunda değil. Başarısız bir isteği servisler arasında izleyebilir, yavaş endpoint&amp;rsquo;lerin profilini çıkarabilir ve neyin tam olarak nerede bozulduğunu saptayabilir. Bu, geliştirme döngüsünde üretim kalitesinde gözlemlenebilirlik demek.&lt;/p&gt;
&lt;h2 id="bowling-koruma-bandı-analojisi"&gt;Bowling koruma bandı analojisi&lt;/h2&gt;
&lt;p&gt;Aspire ekibi harika bir analoji kullanıyor: Aspire&amp;rsquo;ı AI ajanları için bowling koruma bantları olarak düşünün. Ajan mükemmel olmasa da (ve olmayacak), bantlar onu oluktan atmaktan koruyor. Yığın tanımı yanlış yapılandırmayı önlüyor, derleyici hataları yakalıyor, CLI süreç yönetimini üstleniyor ve telemetri geri bildirim döngüsünü sağlıyor.&lt;/p&gt;
&lt;p&gt;Bunu Playwright CLI gibi bir şeyle birleştirdiğinizde, ajanınız uygulamanızı gerçekten &lt;em&gt;kullanabilir&lt;/em&gt; — akışlara tıklayabilir, DOM&amp;rsquo;u kontrol edebilir, telemetride kırık şeyleri görebilir, kodu düzeltebilir, yeniden başlatabilir ve tekrar test edebilir. Derle, çalıştır, gözlemle, düzelt. Bu, peşinden koştuğumuz özerk geliştirme döngüsü.&lt;/p&gt;
&lt;h2 id="başlarken"&gt;Başlarken&lt;/h2&gt;
&lt;p&gt;Aspire&amp;rsquo;a yeni misiniz? CLI&amp;rsquo;ı &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; adresinden yükleyin ve &lt;a href="https://aspire.dev/get-started/first-app"&gt;başlangıç rehberini&lt;/a&gt; takip edin.&lt;/p&gt;
&lt;p&gt;Zaten Aspire kullanıyor musunuz? 13.2&amp;rsquo;yi almak için &lt;code&gt;aspire update --self&lt;/code&gt; komutunu çalıştırın, ardından favori kodlama ajanınızı repoya yönlendirin. Aspire&amp;rsquo;ın koruma bantlarıyla ne kadar daha ileri gittiğini görünce şaşırabilirsiniz.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 artık sadece bir dağıtık uygulama framework&amp;rsquo;ü değil — temel ajan altyapısına dönüşüyor. Yapılandırılmış yığın tanımları, tek komutla başlangıç, izole paralel çalıştırmalar ve gerçek zamanlı telemetri, AI ajanlarına kod yazmaktan uygulama göndermek için tam olarak ihtiyaç duydukları şeyleri veriyor.&lt;/p&gt;
&lt;p&gt;Tüm ayrıntılar ve demo videolar için Aspire ekibinin &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;tam yazısını&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Azure Functions Üzerindeki MCP Server'larınızı Foundry Agent'larına Bağlayın — İşte Nasıl Yapılır</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agents-mcp-servers-azure-functions/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agents-mcp-servers-azure-functions/</guid><description>MCP server'ınızı bir kez oluşturun, Azure Functions'a dağıtın ve uygun auth ile Microsoft Foundry agent'larına bağlayın. Araçlarınız her yerde çalışır — VS Code, Cursor ve artık kurumsal AI agent'ları.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agents-mcp-servers-azure-functions/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;MCP ekosistemi hakkında sevdiğim bir şey var: server&amp;rsquo;ınızı bir kez oluşturuyorsunuz ve her yerde çalışıyor. VS Code, Visual Studio, Cursor, ChatGPT — her MCP istemcisi araçlarınızı keşfedip kullanabiliyor. Şimdi Microsoft bu listeye bir tüketici daha ekliyor: Foundry agent&amp;rsquo;ları.&lt;/p&gt;
&lt;p&gt;Azure SDK ekibinden Lily Ma, Microsoft Foundry agent&amp;rsquo;larıyla Azure Functions&amp;rsquo;a dağıtılmış MCP server&amp;rsquo;larını bağlamaya dair &lt;a href="https://devblogs.microsoft.com/azure-sdk/give-your-foundry-agent-custom-tools-with-mcp-servers-on-azure-functions/"&gt;pratik bir kılavuz yayımladı&lt;/a&gt;. Zaten bir MCP server&amp;rsquo;ınız varsa, bu tamamen katma değer — yeniden yapılandırma gerekmiyor.&lt;/p&gt;
&lt;h2 id="bu-kombinasyon-neden-mantıklı"&gt;Bu Kombinasyon Neden Mantıklı?&lt;/h2&gt;
&lt;p&gt;Azure Functions, MCP server&amp;rsquo;larını barındırmak için ölçeklenebilir altyapı, yerleşik auth ve sunucusuz faturalama sunuyor. Microsoft Foundry ise akıl yürütebilen, plan yapabilen ve eylemler gerçekleştirebilen AI agent&amp;rsquo;ları sağlıyor. İkisini birleştirmek, özel araçlarınızın — veritabanı sorgulama, iş API&amp;rsquo;si çağrısı, doğrulama mantığı çalıştırma — kurumsal AI agent&amp;rsquo;larının özerk olarak keşfedip kullanabileceği yetenekler haline gelmesi anlamına geliyor.&lt;/p&gt;
&lt;p&gt;Önemli nokta: MCP server&amp;rsquo;ınız aynı kalıyor. Yalnızca Foundry&amp;rsquo;yi başka bir tüketici olarak ekliyorsunuz. VS Code kurulumunuzda çalışan araçların aynısı artık ekibinizin veya müşterilerinizin etkileşime girdiği bir AI agent&amp;rsquo;ına güç veriyor.&lt;/p&gt;
&lt;h2 id="kimlik-doğrulama-seçenekleri"&gt;Kimlik Doğrulama Seçenekleri&lt;/h2&gt;
&lt;p&gt;Yazının gerçek değer kattığı yer burası. Senaryonuza bağlı olarak dört auth yöntemi:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Yöntem&lt;/th&gt;
&lt;th&gt;Kullanım Senaryosu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Key tabanlı&lt;/strong&gt; (varsayılan)&lt;/td&gt;
&lt;td&gt;Geliştirme veya Entra auth olmayan server&amp;rsquo;lar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Microsoft Entra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yönetilen kimliklerle üretim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OAuth identity passthrough&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Her kullanıcının bireysel olarak kimlik doğruladığı üretim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kimlik doğrulamasız&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Geliştirme/test veya yalnızca genel veriler&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Üretim için, agent kimliğiyle Microsoft Entra önerilen yoldur. OAuth identity passthrough, kullanıcı bağlamının önemli olduğu durumlar içindir — agent kullanıcıların giriş yapmasını ister ve her istek kullanıcının kendi token&amp;rsquo;ını taşır.&lt;/p&gt;
&lt;h2 id="kurulum"&gt;Kurulum&lt;/h2&gt;
&lt;p&gt;Üst düzey akış:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MCP server&amp;rsquo;ınızı Azure Functions&amp;rsquo;a dağıtın&lt;/strong&gt; — &lt;a href="https://github.com/Azure-Samples/remote-mcp-functions-dotnet"&gt;.NET&lt;/a&gt;, Python, TypeScript ve Java için örnekler mevcut&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Function app&amp;rsquo;inizde yerleşik MCP kimlik doğrulamasını etkinleştirin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Endpoint URL&amp;rsquo;nizi alın&lt;/strong&gt; — &lt;code&gt;https://&amp;lt;FUNCTION_APP_NAME&amp;gt;.azurewebsites.net/runtime/webhooks/mcp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP server&amp;rsquo;ı Foundry&amp;rsquo;de araç olarak ekleyin&lt;/strong&gt; — portaldaki agent&amp;rsquo;ınıza gidin, yeni bir MCP aracı ekleyin, endpoint ve kimlik bilgilerini sağlayın&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ardından araçlarınızdan birini tetikleyecek bir prompt göndererek Agent Builder playground&amp;rsquo;unda test edin.&lt;/p&gt;
&lt;h2 id="değerlendirmem"&gt;Değerlendirmem&lt;/h2&gt;
&lt;p&gt;Buradaki kompozisyon hikayesi gerçekten güçleniyor. MCP server&amp;rsquo;ınızı .NET&amp;rsquo;te (veya Python, TypeScript, Java&amp;rsquo;da) bir kez oluşturun, Azure Functions&amp;rsquo;a dağıtın ve her MCP uyumlu istemci onu kullanabilsin — kodlama araçları, chat uygulamaları ve artık kurumsal AI agent&amp;rsquo;ları. Bu, gerçekten işleyen bir &amp;ldquo;bir kez yaz, her yerde kullan&amp;rdquo; pattern&amp;rsquo;ı.&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri için özellikle, &lt;a href="https://github.com/Azure-Samples/remote-mcp-functions-dotnet"&gt;Azure Functions MCP extension&lt;/a&gt; bunu kolaylaştırıyor. Araçlarınızı Azure Functions olarak tanımlayın, dağıtın ve Azure Functions&amp;rsquo;ın sağladığı tüm güvenlik ve ölçeklendirme özellikleriyle birlikte üretim kalitesinde bir MCP server&amp;rsquo;ınız olsun.&lt;/p&gt;
&lt;h2 id="son-söz"&gt;Son Söz&lt;/h2&gt;
&lt;p&gt;Azure Functions üzerinde çalışan MCP araçlarınız varsa, bunları Foundry agent&amp;rsquo;larına bağlamak hızlı bir kazanımdır — özel araçlarınız, server&amp;rsquo;ın kendisinde hiçbir kod değişikliği yapmadan ve uygun auth ile kurumsal AI yeteneklerine dönüşür.&lt;/p&gt;
&lt;p&gt;Her kimlik doğrulama yöntemi için adım adım talimatlar için &lt;a href="https://devblogs.microsoft.com/azure-sdk/give-your-foundry-agent-custom-tools-with-mcp-servers-on-azure-functions/"&gt;tam kılavuzu&lt;/a&gt; okuyun ve üretim kurulumları için &lt;a href="https://learn.microsoft.com/azure/azure-functions/functions-mcp-foundry-tools?tabs=entra%2Cmcp-extension%2Cfoundry"&gt;ayrıntılı belgeleri&lt;/a&gt; inceleyin.&lt;/p&gt;</content:encoded></item><item><title>Kara Kutu Hissi Vermeyen Gerçek Zamanlı Çoklu-Agent Arayüzleri Oluşturmak</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</guid><description>AG-UI ve Microsoft Agent Framework, çoklu-agent iş akışlarına gerçek zamanlı streaming, insan onayları ve agentların ne yaptığına dair tam görünürlük sunan bir frontend katmanı kazandırıyor.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Çoklu-agent sistemler hakkında şunu söylemek gerekir: demo ortamlarında inanılmaz görünürler. Üç agent iş birbirine aktarır, sorunları çözer, kararlar alır. Sonra bunu gerçek kullanıcıların önüne koymaya çalışırsınız ve&amp;hellip; sessizlik. Dönen bir yükleme göstergesi. Hangi agentın ne yaptığını ya da sistemin neden durduğunu anlatan hiçbir şey yok. Bu bir ürün değil — bu bir güven sorunudur.&lt;/p&gt;
&lt;p&gt;Microsoft Agent Framework ekibi, MAF iş akışlarını &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;AG-UI&lt;/a&gt; ile eşleştiren &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;harika bir rehber&lt;/a&gt; yayımladı. AG-UI, agent yürütme olaylarını Server-Sent Events üzerinden bir frontend&amp;rsquo;e aktarmak için kullanılan açık bir protokoldür. Ve dürüst olmak gerekirse? Bu, eksik olan köprünün ta kendisi.&lt;/p&gt;
&lt;h2 id="net-geliştiricileri-için-neden-önemli"&gt;.NET geliştiricileri için neden önemli&lt;/h2&gt;
&lt;p&gt;AI destekli uygulamalar geliştiriyorsanız, muhtemelen bu duvarla karşılaşmışsınızdır. Backend orkestrasyonunuz mükemmel çalışır — agentlar birbirlerine iş devreder, araçlar tetiklenir, kararlar alınır. Ancak frontend, perde arkasında ne olduğundan habersizdir. AG-UI, agent olaylarını (&lt;code&gt;RUN_STARTED&lt;/code&gt;, &lt;code&gt;STEP_STARTED&lt;/code&gt;, &lt;code&gt;TOOL_CALL_*&lt;/code&gt;, &lt;code&gt;TEXT_MESSAGE_*&lt;/code&gt; gibi) SSE üzerinden doğrudan UI katmanınıza aktarmak için standart bir protokol tanımlayarak bunu çözer.&lt;/p&gt;
&lt;p&gt;Geliştirdikleri demo, üç agentlı bir müşteri destek iş akışı: istekleri yönlendiren bir triage agentı, para işlerini yöneten bir refund agentı ve ikame yönetimi yapan bir order agentı. Her agentın kendi araçları var ve devir teslim topolojisi açıkça tanımlanmış — &amp;ldquo;prompt&amp;rsquo;tan çöz&amp;rdquo; vibesinden eser yok.&lt;/p&gt;
&lt;h2 id="devir-teslim-topolojisi-asıl-yıldız"&gt;Devir teslim topolojisi asıl yıldız&lt;/h2&gt;
&lt;p&gt;Dikkatimi çeken şey, &lt;code&gt;HandoffBuilder&lt;/code&gt;&amp;lsquo;ın agentlar arasında yönlendirilmiş bir rotalama grafiği tanımlamanıza izin vermesidir:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HandoffBuilder&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="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ag_ui_handoff_workflow_demo&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;participants&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order&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;termination_condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;termination_condition&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&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;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Refunds, damaged-item claims...&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="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Replacement, exchange...&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="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Replacement logistics needed after refund.&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="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;After replacement/shipping tasks complete.&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Her &lt;code&gt;add_handoff&lt;/code&gt;, doğal dil açıklamasıyla yönlendirilmiş bir kenar oluşturur. Framework, bu topolojiye dayanarak her agent için devir teslim araçları üretir. Böylece yönlendirme kararları, LLM&amp;rsquo;in keyfine değil, orkestrasyon yapınıza dayanır. Bu, üretim güvenilirliği açısından son derece önemlidir.&lt;/p&gt;
&lt;h2 id="gerçekten-işe-yarayan-human-in-the-loop"&gt;Gerçekten işe yarayan human-in-the-loop&lt;/h2&gt;
&lt;p&gt;Demo, her gerçek dünya agent uygulamasının ihtiyaç duyduğu iki kesme (interrupt) deseni sergiliyor:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Araç onay kesmeleri&lt;/strong&gt; — bir agent &lt;code&gt;approval_mode=&amp;quot;always_require&amp;quot;&lt;/code&gt; ile işaretlenmiş bir araç çağırdığında iş akışı duraklar ve bir olay yayımlar. Frontend, araç adı ve argümanlarıyla bir onay modalı gösterir. Token yakan yeniden deneme döngüleri yok — sadece temiz bir duraklat-onayla-devam et akışı.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilgi isteği kesmeleri&lt;/strong&gt; — bir agentın kullanıcıdan daha fazla bağlam (örneğin bir sipariş ID&amp;rsquo;si) ihtiyacı olduğunda durur ve sorar. Frontend soruyu gösterir, kullanıcı yanıtlar ve yürütme tam kaldığı yerden devam eder.&lt;/p&gt;
&lt;p&gt;Her iki desen de standart AG-UI olayları olarak stream edilir; bu nedenle frontend&amp;rsquo;inizin her agent için özel mantığa ihtiyacı yoktur — SSE bağlantısından gelen olayı olduğu gibi gösterir.&lt;/p&gt;
&lt;h2 id="bağlantı-kurmak-şaşırtıcı-derecede-basit"&gt;Bağlantı kurmak şaşırtıcı derecede basit&lt;/h2&gt;
&lt;p&gt;MAF ile AG-UI arasındaki entegrasyon tek bir fonksiyon çağrısıdır:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;agent_framework.ag_ui&lt;/span&gt; &lt;span class="kn"&gt;import&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;AgentFrameworkWorkflow&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;add_agent_framework_fastapi_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="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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastAPI&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;demo_workflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AgentFrameworkWorkflow&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;workflow_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;_thread_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;create_handoff_workflow&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="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ag_ui_handoff_workflow_demo&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;add_agent_framework_fastapi_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="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;demo_workflow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/handoff_demo&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;workflow_factory&lt;/code&gt;, thread başına yeni bir iş akışı oluşturur; böylece her konuşma izole bir duruma sahip olur. Endpoint, tüm SSE altyapısını otomatik olarak yönetir. Zaten FastAPI kullanıyorsanız (ya da hafif bir katman olarak ekleyebiliyorsanız), bu neredeyse hiç sürtünme gerektirmez.&lt;/p&gt;
&lt;h2 id="benim-görüşüm"&gt;Benim görüşüm&lt;/h2&gt;
&lt;p&gt;.NET geliştiricileri olarak aklımıza gelen ilk soru şu: &amp;ldquo;Bunu C#&amp;rsquo;ta yapabilir miyim?&amp;rdquo; Agent Framework hem .NET hem de Python için mevcut ve AG-UI protokolü dilden bağımsız (aslında sadece SSE). Bu nedenle, bu demo Python ve FastAPI kullansa da, desen doğrudan çevrilebilir. Aynı AG-UI olay şemasını takip eden SSE endpoint&amp;rsquo;leriyle ASP.NET Core minimal API kurabilirsiniz.&lt;/p&gt;
&lt;p&gt;Daha büyük çıkarım şu: çoklu-agent arayüzleri artık sonradan düşünülen bir konu değil, birinci sınıf bir endişe haline geliyor. Agentların insanlarla etkileşime girdiği herhangi bir şey geliştiriyorsanız — müşteri desteği, onay iş akışları, belge işleme — MAF orkestrasyonu ve AG-UI şeffaflığının bu kombinasyonu, izlenecek yol.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;AG-UI + Microsoft Agent Framework, her iki dünyanın en iyisini sunar: backend&amp;rsquo;de sağlam çoklu-agent orkestrasyonu, frontend&amp;rsquo;de gerçek zamanlı görünürlük. Artık kara kutu agent etkileşimleri yok.&lt;/p&gt;
&lt;p&gt;Daha fazla bilgi için &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;tam rehbere&lt;/a&gt; ve &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;AG-UI protokol deposuna&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>MCP Uygulamaları Fluent API Kazandı — .NET'te Üç Adımda Zengin AI Araç Arayüzleri Oluşturun</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/mcp-fluent-api-azure-functions-dotnet/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/mcp-fluent-api-azure-functions-dotnet/</guid><description>Azure Functions'daki MCP Apps için yeni fluent yapılandırma API'si, herhangi bir .NET MCP aracını yalnızca birkaç satır kodla görünümler, izinler ve CSP politikaları olan tam bir uygulamaya dönüştürmenizi sağlar.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/mcp-fluent-api-azure-functions-dotnet/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;MCP araçları, AI agent&amp;rsquo;larına yetenekler kazandırmak için harika. Peki ya aracınızın kullanıcıya bir şey göstermesi gerekiyorsa — bir dashboard, bir form, etkileşimli bir görselleştirme? MCP Apps tam bu noktada devreye giriyor ve çok daha kolay hale geldi.&lt;/p&gt;
&lt;p&gt;Azure SDK ekibinden Lilian Kasem, .NET Azure Functions&amp;rsquo;daki MCP Apps için &lt;a href="https://devblogs.microsoft.com/azure-sdk/mcp-as-easy-as-1-2-3-introducing-the-fluent-api-for-mcp-apps/"&gt;yeni fluent yapılandırma API&amp;rsquo;sini tanıttı&lt;/a&gt; ve bu, neden başından beri bu kadar basit olmadığını düşündüren türden bir geliştirici deneyimi iyileştirmesi.&lt;/p&gt;
&lt;h2 id="mcp-apps-nedir"&gt;MCP Apps Nedir?&lt;/h2&gt;
&lt;p&gt;MCP Apps, araçların kendi UI görünümlerini, statik varlıklarını ve güvenlik kontrollerini taşımasına izin vererek Model Context Protocol&amp;rsquo;ü genişletir. MCP aracınız yalnızca metin döndürmek yerine tam HTML deneyimleri render edebilir — etkileşimli dashboard&amp;rsquo;lar, veri görselleştirmeleri, yapılandırma formları — bunların hepsi AI agent&amp;rsquo;ları tarafından çağrılabilir ve MCP istemcileri tarafından kullanıcılara sunulur.&lt;/p&gt;
&lt;p&gt;Sorun şuydu: tüm bunları manuel olarak bağlamak MCP spesifikasyonunu yakından bilmeyi gerektiriyordu: &lt;code&gt;ui://&lt;/code&gt; URI&amp;rsquo;leri, özel mime türleri, araçlar ve kaynaklar arasında metadata koordinasyonu. Zor değil, ama zahmetli.&lt;/p&gt;
&lt;h2 id="üç-adımda-fluent-api"&gt;Üç Adımda Fluent API&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Adım 1: Fonksiyonunuzu tanımlayın.&lt;/strong&gt; Standart bir Azure Functions MCP aracı:&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;[Function(nameof(HelloApp))]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;HelloApp&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; [McpToolTrigger(&amp;#34;HelloApp&amp;#34;, &amp;#34;A simple MCP App that says hello.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ToolInvocationContext&lt;/span&gt; &lt;span class="n"&gt;context&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="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Hello from app&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Adım 2: Bir MCP App&amp;rsquo;e yükseltin.&lt;/strong&gt; Program başlatmanızda:&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;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ConfigureMcpTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;HelloApp&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 class="n"&gt;AsMcpApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;app&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;WithView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;assets/hello-app.html&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 class="n"&gt;WithTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello App&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 class="n"&gt;WithPermissions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;McpAppPermissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ClipboardWrite&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="n"&gt;McpAppPermissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ClipboardRead&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;WithCsp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csp&lt;/span&gt; &lt;span class="p"&gt;=&amp;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;csp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AllowBaseUri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://www.microsoft.com&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 class="n"&gt;ConnectTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://www.microsoft.com&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Adım 3: HTML görünümünüzü ekleyin.&lt;/strong&gt; İhtiyacınız olan herhangi bir UI ile &lt;code&gt;assets/hello-app.html&lt;/code&gt; dosyasını oluşturun.&lt;/p&gt;
&lt;p&gt;Hepsi bu kadar. Fluent API tüm MCP spesifikasyon altyapısını halleder — sentetik kaynak fonksiyonu oluşturma, doğru mime türünü ayarlama, aracınızı görünümüne bağlayan metadata&amp;rsquo;yı ekleme.&lt;/p&gt;
&lt;h2 id="api-yüzeyi-iyi-tasarlanmış"&gt;API Yüzeyi İyi Tasarlanmış&lt;/h2&gt;
&lt;p&gt;Gerçekten beğendiğim birkaç şey:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Görünüm kaynakları esnektir.&lt;/strong&gt; HTML&amp;rsquo;i diskteki dosyalardan sunabilir veya kendi kendine yetişen dağıtımlar için kaynakları doğrudan assembly&amp;rsquo;nize gömebilirsiniz:&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;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;McpViewSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FromFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;assets/my-view.html&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;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;McpViewSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FromEmbeddedResource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;MyApp.Resources.view.html&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;strong&gt;CSP kompozisyona uygundur.&lt;/strong&gt; Uygulamanızın ihtiyaç duyduğu kaynakları açıkça beyaz listeye alırsınız, en az ayrıcalık ilkelerini izleyerek. &lt;code&gt;WithCsp&lt;/code&gt;&amp;lsquo;yi birden fazla kez çağırın ve kaynaklar birikir:&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithCsp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csp&lt;/span&gt; &lt;span class="p"&gt;=&amp;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;csp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ConnectTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://api.example.com&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 class="n"&gt;LoadResourcesFrom&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://cdn.example.com&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 class="n"&gt;AllowFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://youtube.com&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Görünürlük kontrolü.&lt;/strong&gt; Bir aracı yalnızca LLM&amp;rsquo;ye görünür, yalnızca host UI&amp;rsquo;a görünür veya her ikisine de görünür yapabilirsiniz. Yalnızca UI render eden ve model tarafından çağrılmaması gereken bir araç mı istiyorsunuz? Kolay:&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithVisibility&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;McpVisibility&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;App&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Yalnızca UI, modelden gizli&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="başlarken"&gt;Başlarken&lt;/h2&gt;
&lt;p&gt;Preview paketini ekleyin:&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;dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.5.0-preview.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zaten Azure Functions ile MCP araçları oluşturuyorsanız, bu yalnızca bir paket güncellemesi. Konsepte yeniyseniz &lt;a href="https://learn.microsoft.com/azure/azure-functions/scenario-mcp-apps?tabs=bash%2Clinux&amp;amp;pivots=programming-language-csharp"&gt;MCP Apps hızlı başlangıç kılavuzu&lt;/a&gt; başlamak için en iyi yer.&lt;/p&gt;
&lt;h2 id="son-söz"&gt;Son Söz&lt;/h2&gt;
&lt;p&gt;MCP Apps, AI araçlama alanındaki daha heyecan verici gelişmelerden biri — yalnızca &lt;em&gt;işler yapan&lt;/em&gt; değil, kullanıcılara &lt;em&gt;şeyler gösterebilen&lt;/em&gt; araçlar. Fluent API protokol karmaşıklığını ortadan kaldırır ve önemli olan şeye odaklanmanızı sağlar: aracınızın mantığı ve UI&amp;rsquo;ı.&lt;/p&gt;
&lt;p&gt;Tam API referansı ve örnekler için &lt;a href="https://devblogs.microsoft.com/azure-sdk/mcp-as-easy-as-1-2-3-introducing-the-fluent-api-for-mcp-apps/"&gt;tam yazıyı&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Foundry Mart 2026 — GPT-5.4, Agent Service GA ve Her Şeyi Değiştiren SDK Yenilemesi</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/microsoft-foundry-march-2026-whats-new/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/microsoft-foundry-march-2026-whats-new/</guid><description>Microsoft Foundry'nin Mart 2026 güncellemesi devasa: Agent Service GA'ya geçiyor, GPT-5.4 güvenilir akıl yürütme getiriyor, azure-ai-projects SDK tüm dillerde kararlı hale geliyor ve Fireworks AI açık modelleri Azure'a taşıyor.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/microsoft-foundry-march-2026-whats-new/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aylık &amp;ldquo;Microsoft Foundry&amp;rsquo;de Neler Yeni&amp;rdquo; yazıları genellikle kademeli iyileştirmelerin ve ara sıra bir manşet özelliğinin karışımı olur. &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-microsoft-foundry-mar-2026/"&gt;Mart 2026 sayısı&lt;/a&gt;? Bu neredeyse tamamen manşet özelliklerden oluşuyor. Foundry Agent Service GA&amp;rsquo;ya geçiyor, GPT-5.4 üretime geliyor, SDK büyük bir kararlı sürüm alıyor ve Fireworks AI, Azure&amp;rsquo;a açık model çıkarımı getiriyor. .NET geliştiricileri için önemli olanları ele alayım.&lt;/p&gt;
&lt;h2 id="foundry-agent-service-üretime-hazır"&gt;Foundry Agent Service Üretime Hazır&lt;/h2&gt;
&lt;p&gt;Bu büyük haber. Yeni nesil agent runtime genel kullanıma sunuldu — OpenAI Responses API üzerine kurulu, OpenAI agent&amp;rsquo;larıyla wire uyumlu ve birden fazla sağlayıcının modellerine açık. Bugün Responses API ile geliştirme yapıyorsanız, Foundry&amp;rsquo;ye geçiş mevcut agent mantığınızın üstüne kurumsal güvenlik, özel ağ desteği, Entra RBAC, tam izleme ve değerlendirme ekler.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PromptAgentDefinition&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;project_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&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;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AZURE_AI_PROJECT_ENDPOINT&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;credential&lt;/span&gt;&lt;span class="o"&gt;=&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&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;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;project_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_version&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;agent_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;my-enterprise-agent&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;definition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PromptAgentDefinition&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;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AZURE_AI_MODEL_DEPLOYMENT_NAME&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;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&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="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;p&gt;Önemli eklemeler: uçtan uca özel ağ desteği, MCP auth genişlemesi (OAuth passthrough dahil), konuşmadan konuşmaya agent&amp;rsquo;lar için Voice Live önizlemesi ve 6 yeni bölgede barındırılan agent&amp;rsquo;lar.&lt;/p&gt;
&lt;h2 id="gpt-54--ham-zekadan-çok-güvenilirlik"&gt;GPT-5.4 — Ham Zekadan Çok Güvenilirlik&lt;/h2&gt;
&lt;p&gt;GPT-5.4, daha akıllı olmak için değil. Daha güvenilir olmak için. Uzun etkileşimlerde daha güçlü akıl yürütme, daha iyi talimat uyumu, daha az iş akışı ortası başarısızlık ve entegre bilgisayar kullanım yetenekleri. Üretim agent&amp;rsquo;ları için o güvenilirlik, kıyaslama puanlarından çok daha önemlidir.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Fiyatlandırma (M token başına)&lt;/th&gt;
&lt;th&gt;En İyi Kullanım&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 (≤272K)&lt;/td&gt;
&lt;td&gt;$2,50 / $15 çıktı&lt;/td&gt;
&lt;td&gt;Üretim agent&amp;rsquo;ları, kodlama, belge iş akışları&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 Pro&lt;/td&gt;
&lt;td&gt;$30 / $180 çıktı&lt;/td&gt;
&lt;td&gt;Derin analiz, bilimsel akıl yürütme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 Mini&lt;/td&gt;
&lt;td&gt;Maliyet etkin&lt;/td&gt;
&lt;td&gt;Sınıflandırma, çıkarım, hafif araç çağrıları&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Akıllı hamle bir yönlendirme stratejisidir: GPT-5.4 Mini yüksek hacimli, düşük gecikmeli işleri yönetirken GPT-5.4 akıl yürütme ağırlıklı istekleri alır.&lt;/p&gt;
&lt;h2 id="sdk-nihayet-kararlı"&gt;SDK Nihayet Kararlı&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azure-ai-projects&lt;/code&gt; SDK tüm dillerde kararlı sürümler gönderdi — Python 2.0.0, JS/TS 2.0.0, Java 2.0.0 ve .NET 2.0.0 (1 Nisan). &lt;code&gt;azure-ai-agents&lt;/code&gt; bağımlılığı kalktı — her şey &lt;code&gt;AIProjectClient&lt;/code&gt; altında yaşıyor. &lt;code&gt;pip install azure-ai-projects&lt;/code&gt; ile kurun; paket &lt;code&gt;openai&lt;/code&gt; ve &lt;code&gt;azure-identity&lt;/code&gt;&amp;lsquo;yi doğrudan bağımlılık olarak birlikte getiriyor.&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri için bu, tam Foundry yüzeyi için tek bir NuGet paketi anlamına geliyor. Artık ayrı agent SDK&amp;rsquo;larını dengeleme yok.&lt;/p&gt;
&lt;h2 id="fireworks-ai-açık-modelleri-azurea-taşıyor"&gt;Fireworks AI Açık Modelleri Azure&amp;rsquo;a Taşıyor&lt;/h2&gt;
&lt;p&gt;Belki de mimarısal açıdan en ilginç ekleme: günlük ~180K istek/saniye ile 13+ trilyon token işleyen Fireworks AI artık Foundry üzerinden kullanılabilir. Lansmanında DeepSeek V3.2, gpt-oss-120b, Kimi K2.5 ve MiniMax M2.5.&lt;/p&gt;
&lt;p&gt;Asıl hikaye &lt;strong&gt;kendi ağırlıklarını getir&lt;/strong&gt; — sunum yığınını değiştirmeden her yerden nicel veya fine-tune edilmiş ağırlıklar yükleyin. Sunucusuz token başına ödeme veya sağlanan iş hacmi ile dağıtın.&lt;/p&gt;
&lt;h2 id="diğer-öne-çıkanlar"&gt;Diğer Öne Çıkanlar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Phi-4 Reasoning Vision 15B&lt;/strong&gt; — grafikler, diyagramlar ve belge düzenleri için çok modlu akıl yürütme&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluations GA&lt;/strong&gt; — Azure Monitor&amp;rsquo;a aktarılan sürekli üretim izlemeyle hazır değerlendiriciler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Priority Processing&lt;/strong&gt; (Önizleme) — gecikmeye duyarlı iş yükleri için ayrılmış hesaplama şeridi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Voice Live&lt;/strong&gt; — doğrudan Foundry agent&amp;rsquo;larına bağlanan konuşmadan konuşmaya runtime&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracing GA&lt;/strong&gt; — sıralama ve filtrelemeyle uçtan uca agent iz incelemesi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PromptFlow kullanımdan kaldırma&lt;/strong&gt; — Ocak 2027&amp;rsquo;ye kadar Microsoft Framework Workflows&amp;rsquo;a geçiş&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="son-söz"&gt;Son Söz&lt;/h2&gt;
&lt;p&gt;Mart 2026, Foundry için bir dönüm noktası. Agent Service GA, tüm dillerde kararlı SDK&amp;rsquo;lar, güvenilir üretim agent&amp;rsquo;ları için GPT-5.4 ve Fireworks AI üzerinden açık model çıkarımı — platform ciddi iş yükleri için hazır.&lt;/p&gt;
&lt;p&gt;Başlamak için &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-microsoft-foundry-mar-2026/"&gt;tam özeti&lt;/a&gt; okuyun ve &lt;a href="https://learn.microsoft.com/azure/foundry/quickstarts/get-started-code"&gt;ilk agent&amp;rsquo;ınızı oluşturun&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>SQL MCP Server — AI Ajanlarına Veritabanı Erişimi Vermenin Doğru Yolu</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/</guid><description>Data API builder'dan SQL MCP Server, AI ajanlara şema açıklamadan ve NL2SQL'e dayanmadan güvenli, deterministik veritabanı erişimi sağlar. RBAC, önbellekleme, çoklu veritabanı desteği — hepsi yerleşik.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dürüst olalım: bugün mevcut veritabanı MCP sunucularının çoğu gerçekten ürkütücü. Doğal dil sorgusu alıyor, anında SQL üretiyor ve bunu üretim verinize karşı çalıştırıyor. Ne yanlış gidebilir ki? (Her şey. Her şey yanlış gidebilir.)&lt;/p&gt;
&lt;p&gt;Azure SQL ekibi az önce &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;SQL MCP Server&amp;rsquo;ı tanıttı&lt;/a&gt; ve bu yaklaşım temelden farklı. Data API builder (DAB) 2.0&amp;rsquo;ın bir özelliği olarak geliştirilen bu araç, AI ajanlarına NL2SQL olmadan, şemanızı açıklamadan ve her adımda tam RBAC ile veritabanı işlemlerine yapılandırılmış, deterministik erişim sağlıyor.&lt;/p&gt;
&lt;h2 id="neden-nl2sql-yok"&gt;Neden NL2SQL yok?&lt;/h2&gt;
&lt;p&gt;Bu, en ilginç tasarım kararı. Modeller deterministik değil ve karmaşık sorgular en büyük hata riskini taşıyan yapılar. AI&amp;rsquo;ın üretmesini umduğunuz tam sorgular da deterministik olmayan şekilde üretildiğinde en dikkatli incelenmesi gereken sorgular oluyor.&lt;/p&gt;
&lt;p&gt;Bunun yerine SQL MCP Server bir &lt;strong&gt;NL2DAB&lt;/strong&gt; yaklaşımı benimsiyor. Ajan, Data API builder&amp;rsquo;ın varlık soyutlama katmanı ve yerleşik sorgu oluşturucu ile birlikte çalışarak doğru ve düzgün biçimlendirilmiş T-SQL deterministik olarak üretiyor. Kullanıcı için aynı sonuç, ancak hayali JOIN&amp;rsquo;ler veya kazara veri ifşası riski olmadan.&lt;/p&gt;
&lt;h2 id="yedi-araç-yedi-yüz-değil"&gt;Yedi araç, yedi yüz değil&lt;/h2&gt;
&lt;p&gt;SQL MCP Server, veritabanının büyüklüğünden bağımsız olarak tam olarak yedi DML aracı sunuyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;describe_entities&lt;/code&gt; — mevcut varlıkları ve işlemleri keşfet&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_record&lt;/code&gt; — satır ekle&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read_records&lt;/code&gt; — tablolar ve görünümleri sorgula&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_record&lt;/code&gt; — satırları değiştir&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete_record&lt;/code&gt; — satırları sil&lt;/li&gt;
&lt;li&gt;&lt;code&gt;execute_entity&lt;/code&gt; — saklı yordamları çalıştır&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aggregate_records&lt;/code&gt; — toplama sorguları&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu akıllıca bir tasarım çünkü bağlam pencereleri ajanın düşünme alanıdır. Yüzlerce araç tanımıyla doldurmak, muhakeme için daha az alan bırakır. Yedi sabit araç, ajanın &lt;em&gt;gezinmek&lt;/em&gt; yerine &lt;em&gt;düşünmeye&lt;/em&gt; odaklanmasını sağlar.&lt;/p&gt;
&lt;p&gt;Her araç ayrı ayrı etkinleştirilebilir veya devre dışı bırakılabilir:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;runtime&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&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="nt"&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/mcp&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="nt"&gt;&amp;#34;dml-tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="nt"&gt;&amp;#34;describe-entities&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;create-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;read-records&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;update-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;delete-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;execute-entity&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;aggregate-records&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="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="üç-komutla-başlangıç"&gt;Üç komutla başlangıç&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;dab init &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --database-type mssql &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --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;dab add Customers &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --source dbo.Customers &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --permissions &lt;span class="s2"&gt;&amp;#34;anonymous:*&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;dab start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bu kadar. Customers tablonuzu açığa çıkaran çalışan bir SQL MCP Server&amp;rsquo;ınız var. Varlık soyutlama katmanı, adları ve sütunları takma adla kullanmanıza, rol başına alanları sınırlamanıza ve iç şema ayrıntılarını açıklamadan ajanların tam olarak neyi göreceğini kontrol etmenize olanak tanıyor.&lt;/p&gt;
&lt;h2 id="güvenlik-hikayesi-sağlam"&gt;Güvenlik hikayesi sağlam&lt;/h2&gt;
&lt;p&gt;Data API builder&amp;rsquo;ın olgunluğu burada meyvesini veriyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Her katmanda RBAC&lt;/strong&gt; — her varlık hangi rollerin okuyabileceğini, oluşturabileceğini, güncelleyebileceğini veya silebileceğini ve hangi alanların görünür olduğunu tanımlıyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Key Vault entegrasyonu&lt;/strong&gt; — bağlantı dizeleri ve gizli anahtarlar güvenli şekilde yönetiliyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Entra + özel OAuth&lt;/strong&gt; — üretim düzeyinde kimlik doğrulama&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Security Policy&lt;/strong&gt; — ajanlar ham SQL değil, denetimli bir sözleşme üzerinden etkileşim kuruyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Şema soyutlaması özellikle önemli. İç tablo ve sütun adlarınız asla ajana açıklanmıyor. Veritabanı ERD&amp;rsquo;nize göre değil, AI etkileşimi için mantıklı olan varlıkları, takma adları ve açıklamaları siz tanımlıyorsunuz.&lt;/p&gt;
&lt;h2 id="çok-veritabanı-ve-çok-protokol"&gt;Çok veritabanı ve çok protokol&lt;/h2&gt;
&lt;p&gt;SQL MCP Server, Microsoft SQL, PostgreSQL, Azure Cosmos DB ve MySQL&amp;rsquo;i destekliyor. Ve bir DAB özelliği olduğundan, aynı yapılandırmadan eş zamanlı olarak REST, GraphQL ve MCP endpoint&amp;rsquo;leri elde ediyorsunuz. Aynı varlık tanımları, aynı RBAC kuralları, aynı güvenlik — üç protokol genelinde.&lt;/p&gt;
&lt;p&gt;DAB 2.0&amp;rsquo;daki otomatik yapılandırma, hızlı prototipleme için daha az soyutlamaya razıysanız veritabanınızı inceleyebilir ve yapılandırmayı dinamik olarak oluşturabilir.&lt;/p&gt;
&lt;h2 id="kişisel-görüşüm"&gt;Kişisel görüşüm&lt;/h2&gt;
&lt;p&gt;AI ajanları için kurumsal veritabanı erişimi işte böyle çalışmalı. &amp;ldquo;Hey LLM, biraz SQL yaz da üretime at bakalım&amp;rdquo; değil. Bunun yerine: iyi tanımlanmış bir varlık katmanı, deterministik sorgu üretimi, her adımda RBAC, önbellekleme, izleme ve telemetri. En iyi anlamda sıkıcı.&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri için entegrasyon hikayesi temiz — DAB bir .NET aracıdır, MCP Server bir container olarak çalışır ve çoğumuzun zaten kullandığı Azure SQL ile çalışır. Veri erişimine ihtiyaç duyan AI ajanları geliştiriyorsanız buradan başlayın.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;SQL MCP Server ücretsiz, açık kaynaklı ve her yerde çalışır. AI ajanlarına güvenli veritabanı erişimi sağlamak için Microsoft&amp;rsquo;un öngörülü yaklaşımıdır. Başlamak için &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;tam yazıyı&lt;/a&gt; ve &lt;a href="https://aka.ms/sql/mcp"&gt;dokümantasyonu&lt;/a&gt; inceleyin.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.115 — Arka Plan Terminal Bildirimleri, SSH Agent Modu ve Daha Fazlası</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/</guid><description>VS Code 1.115, agentlar için arka plan terminal bildirimleri, SSH uzak agent barındırma, terminale dosya yapıştırma ve oturum bazlı düzenleme takibi getiriyor. .NET geliştiricileri için önemli olan şeyler burada.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.115 az önce &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;yayınlandı&lt;/a&gt; ve başlık özellikleri açısından hafif bir sürüm olsa da, AI kodlama asistanlarıyla her gün çalışıyorsanız agent ile ilgili iyileştirmeler gerçekten kullanışlı.&lt;/p&gt;
&lt;p&gt;Gerçekten bilinmeye değer olanları öne çıkarayım.&lt;/p&gt;
&lt;h2 id="arka-plan-terminalleri-agentlara-geri-bildirim-veriyor"&gt;Arka plan terminalleri agentlara geri bildirim veriyor&lt;/h2&gt;
&lt;p&gt;Bu, öne çıkan özellik. Arka plan terminalleri artık komutlar tamamlandığında çıkış kodu ve terminal çıktısını da içerecek şekilde otomatik olarak agentları bilgilendiriyor. Arka plan terminallerindeki giriş istemleri de tespit edilerek kullanıcıya iletiliyor.&lt;/p&gt;
&lt;p&gt;Bu neden önemli? Copilot&amp;rsquo;un agent modunu arka planda build komutları veya test dizileri çalıştırmak için kullandıysanız, &amp;ldquo;o bitti mi acaba?&amp;rdquo; sancısını bilirsiniz — arka plan terminalleri esasen ateş et ve unut mantığıyla çalışıyordu. Artık agent, &lt;code&gt;dotnet build&lt;/code&gt; veya &lt;code&gt;dotnet test&lt;/code&gt; tamamlandığında haberdar ediliyor, çıktıyı görüyor ve buna göre tepki verebiliyor. Küçük bir değişiklik, ama agent odaklı iş akışlarını önemli ölçüde daha güvenilir kılıyor.&lt;/p&gt;
&lt;p&gt;Ayrıca, agentların kullanıcı onayıyla arka plan terminallerine komut göndermesine olanak tanıyan yeni bir &lt;code&gt;send_to_terminal&lt;/code&gt; aracı var; bu da &lt;code&gt;run_in_terminal&lt;/code&gt;&amp;lsquo;in zaman aşımıyla terminalleri arka plana taşıdığı ve salt okunur hale getirdiği sorunu çözüyor.&lt;/p&gt;
&lt;h2 id="ssh-uzak-agent-barındırma"&gt;SSH uzak agent barındırma&lt;/h2&gt;
&lt;p&gt;VS Code artık SSH üzerinden uzak makinelere bağlanmayı, CLI&amp;rsquo;yi otomatik olarak yüklemeyi ve agent ana bilgisayar modunda başlatmayı destekliyor. Bu, AI agent oturumlarınızın uzak ortamları doğrudan hedefleyebileceği anlamına geliyor — Linux sunucularda veya bulut VM&amp;rsquo;lerinde geliştirme ve test yapan .NET geliştiricileri için kullanışlı.&lt;/p&gt;
&lt;h2 id="agent-oturumlarında-düzenleme-takibi"&gt;Agent oturumlarında düzenleme takibi&lt;/h2&gt;
&lt;p&gt;Agent oturumları sırasında yapılan dosya düzenlemeleri artık farklar, geri alma/yeniden yapma ve durum geri yükleme ile birlikte takip ediliyor ve geri yükleniyor. Bir agent kodunuzda değişiklik yapar ve bir şeyler ters giderse, tam olarak neyin değiştiğini görebilir ve geri alabilirsiniz. Agentların kod tabanınızı değiştirmesine izin vermek için gönül rahatlığı.&lt;/p&gt;
&lt;h2 id="tarayıcı-sekme-farkındalığı-ve-diğer-iyileştirmeler"&gt;Tarayıcı sekme farkındalığı ve diğer iyileştirmeler&lt;/h2&gt;
&lt;p&gt;Birkaç yaşam kalitesi iyileştirmesi daha:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tarayıcı sekme takibi&lt;/strong&gt; — sohbet artık bir oturum sırasında açılan tarayıcı sekmelerini takip edip bunlara bağlantı verebiliyor, böylece agentlar baktığınız web sayfalarına referans verebiliyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminale dosya yapıştırma&lt;/strong&gt; — Ctrl+V, sürükle-bırak veya sağ tıklamayla terminale dosya (resimler dahil) yapıştırın&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimap&amp;rsquo;te test kapsamı&lt;/strong&gt; — test kapsamı göstergeleri artık hızlı bir görsel özet için minimap&amp;rsquo;te gösteriliyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mac&amp;rsquo;te sıkıştırarak yakınlaştırma&lt;/strong&gt; — entegre tarayıcı sıkıştırarak yakınlaştırma hareketlerini destekliyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sessions&amp;rsquo;da Copilot yetkilendirmeleri&lt;/strong&gt; — durum çubuğu Sessions görünümünde kullanım bilgilerini gösteriyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go to File&amp;rsquo;da favicon&lt;/strong&gt; — açık web sayfaları hızlı seçim listesinde favicon gösteriyor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;VS Code 1.115 artımlı bir sürüm, ancak agent iyileştirmeleri — arka plan terminal bildirimleri, SSH agent barındırma ve düzenleme takibi — AI destekli geliştirme için fark edilir şekilde daha akıcı bir deneyim oluşturuyor. .NET projeleri için Copilot&amp;rsquo;un agent modunu kullanıyorsanız, bunlar günlük sürtünmeyi azaltan yaşam kalitesi düzeltmeleri.&lt;/p&gt;
&lt;p&gt;Her ayrıntı için &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;tam sürüm notlarına&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 Bir Dokümantasyon CLI'ı Sunuyor — ve AI Ajanınız da Kullanabilir</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2, aspire docs'u ekliyor — terminali terk etmeden resmi belgeleri aramanızı, gezmenizi ve okumanızı sağlayan bir CLI. AI ajanları için de araç olarak çalışıyor. Bunun neden önemli olduğunu burada açıklıyoruz.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bir Aspire AppHost&amp;rsquo;un içinde derinlere dalıp entegrasyonları bağlarken Redis entegrasyonunun tam olarak hangi parametreleri beklediğini kontrol etmeniz gereken o anı biliyor musunuz? Tarayıcınıza geçersiniz, aspire.dev&amp;rsquo;de arama yaparsınız, API dokümanlarını incelersiniz, sonra editörünüze dönersiniz. Bağlam kaybolmuş. Akış bozulmuş.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 tam da &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;bunun için bir çözüm sundu&lt;/a&gt;. &lt;code&gt;aspire docs&lt;/code&gt; CLI&amp;rsquo;ı, terminali terk etmeden resmi Aspire belgelerini doğrudan arayıp okuyabilmenizi sağlıyor. Yeniden kullanılabilir servisler tarafından desteklendiği için, AI ajanları ve skill&amp;rsquo;ler de var olmayan API&amp;rsquo;ları uydurmak yerine belge aramak amacıyla aynı komutları kullanabiliyor.&lt;/p&gt;
&lt;h2 id="bu-aslında-ne-sorunu-çözüyor"&gt;Bu aslında ne sorunu çözüyor&lt;/h2&gt;
&lt;p&gt;David Pine orijinal yazısında konuyu net olarak özetliyor: AI ajanlar, geliştiricilere Aspire uygulamaları geliştirmede yardım etmekte &lt;em&gt;berbattı&lt;/em&gt;. &lt;code&gt;aspire run&lt;/code&gt; yerine &lt;code&gt;dotnet run&lt;/code&gt; öneriyorlar, aspire.dev&amp;rsquo;deki belgeleri learn.microsoft.com&amp;rsquo;a yönlendiriyorlardı, güncel olmayan NuGet paketleri öneriyorlardı ve — kişisel favorim — var olmayan API&amp;rsquo;ları uyduruyorlardı.&lt;/p&gt;
&lt;p&gt;Neden? Çünkü Aspire, çok dilli olmadan çok daha uzun süre .NET&amp;rsquo;e özel kaldı ve LLM&amp;rsquo;ler en son özelliklerin öncesindeki eğitim verileriyle çalışıyor. Bir AI ajanına mevcut belgeleri gerçekten arama yeteneği verdiğinizde, tahmin etmeyi bırakıp işe yarar hale geliyor.&lt;/p&gt;
&lt;h2 id="üç-komut-sıfır-tarayıcı-sekmesi"&gt;Üç komut, sıfır tarayıcı sekmesi&lt;/h2&gt;
&lt;p&gt;CLI ferahlatıcı derecede basit:&lt;/p&gt;
&lt;h3 id="tüm-belgeleri-listele"&gt;Tüm belgeleri listele&lt;/h3&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;aspire docs list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;aspire.dev&amp;rsquo;de mevcut her belge sayfasını döndürür. Makine tarafından okunabilir çıktı mı istiyorsunuz? &lt;code&gt;--format Json&lt;/code&gt; ekleyin.&lt;/p&gt;
&lt;h3 id="bir-konu-arayın"&gt;Bir konu arayın&lt;/h3&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;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ağırlıklı ilgi puanlamasıyla hem başlıkları hem içeriği arar. Dahili olarak dokümantasyon araçlarını destekleyen arama motorunun aynısı. Başlıklar, slug&amp;rsquo;lar ve ilgi puanlarıyla sıralı sonuçlar alırsınız.&lt;/p&gt;
&lt;h3 id="tam-sayfayı-okuyun-ya-da-yalnızca-bir-bölümü"&gt;Tam sayfayı okuyun (ya da yalnızca bir bölümü)&lt;/h3&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;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tam sayfayı markdown olarak terminalinize akıtır. Yalnızca bir bölüme mi ihtiyacınız var?&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;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cerrahi hassasiyet. 500 satır kaydırma yok. Sadece ihtiyacınız olan kısım.&lt;/p&gt;
&lt;h2 id="ai-ajan-boyutu"&gt;AI ajan boyutu&lt;/h2&gt;
&lt;p&gt;İşte AI araçlarıyla geliştirme yapan bizim için ilginç olan kısım. Aynı &lt;code&gt;aspire docs&lt;/code&gt; komutları, AI ajanları için araç olarak çalışıyor — skill&amp;rsquo;ler, MCP sunucuları veya basit CLI sarmalayıcıları aracılığıyla.&lt;/p&gt;
&lt;p&gt;AI asistanınızın eski eğitim verilerine dayalı Aspire API&amp;rsquo;ları uydurmak yerine, &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt; çağırabilir, resmi entegrasyon belgelerini bulabilir, doğru sayfayı okuyabilir ve size belgelenmiş yaklaşımı sunabilir. Gerçek zamanlı, güncel belgeler — modelin altı ay önce ezberledikleri değil.&lt;/p&gt;
&lt;p&gt;Bunun arkasındaki mimari kasıtlı. Aspire ekibi tek seferlik bir entegrasyon yerine yeniden kullanılabilir servisler (&lt;code&gt;IDocsIndexService&lt;/code&gt;, &lt;code&gt;IDocsSearchService&lt;/code&gt;, &lt;code&gt;IDocsFetcher&lt;/code&gt;, &lt;code&gt;IDocsCache&lt;/code&gt;) inşa etti. Bu, aynı arama motorunun terminaldeki insanlar, editörünüzdeki AI ajanları ve CI pipeline&amp;rsquo;ınızdaki otomasyonlar için çalışması anlamına geliyor.&lt;/p&gt;
&lt;h2 id="gerçek-dünya-senaryoları"&gt;Gerçek dünya senaryoları&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Hızlı terminal aramaları:&lt;/strong&gt; Üç dosya derindesiniz ve Redis yapılandırma parametrelerine ihtiyacınız var. İki komut, doksan saniye, işe geri dönüş:&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;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt; --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;AI destekli geliştirme:&lt;/strong&gt; VS Code skill&amp;rsquo;iniz CLI komutlarını sarmalıyor. &amp;ldquo;AppHost&amp;rsquo;uma bir PostgreSQL veritabanı ekle&amp;rdquo; diyorsunuz ve ajan cevap vermeden önce gerçek belgelere bakıyor. Halüsinasyon yok.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CI/CD doğrulama:&lt;/strong&gt; Pipeline&amp;rsquo;ınız, AppHost yapılandırmalarını programatik olarak resmi belgelerle doğruluyor. &lt;code&gt;--format Json&lt;/code&gt; çıktısı &lt;code&gt;jq&lt;/code&gt; ve diğer araçlara temiz şekilde aktarılıyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Özel bilgi tabanları:&lt;/strong&gt; Kendi AI araçlarınızı mı geliştiriyorsunuz? Yapılandırılmış JSON çıktısını doğrudan bilgi tabanınıza aktarın:&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;aspire docs search &lt;span class="s2"&gt;&amp;#34;monitoring&amp;#34;&lt;/span&gt; --format Json &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;[.[] | {slug, title, summary}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Web scraping yok. API anahtarı yok. Dokümantasyon araçlarının dahili olarak kullandığı aynı yapılandırılmış veri.&lt;/p&gt;
&lt;h2 id="belgeler-her-zaman-canlı"&gt;Belgeler her zaman canlı&lt;/h2&gt;
&lt;p&gt;En çok takdir ettiğim kısım bu. CLI bir anlık görüntü indirmiyor — aspire.dev&amp;rsquo;i ETag tabanlı önbelleklemeyle sorguluyor. Belgeler güncellenir güncellenmez, CLI&amp;rsquo;ınız ve üzerine inşa edilmiş tüm skill&amp;rsquo;ler bunu yansıtıyor. Eski kopyalar yok, &amp;ldquo;ama wiki şöyle diyordu&amp;hellip;&amp;rdquo; anları yok.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt;, gerçek bir sorunu temiz biçimde çözen küçük özelliklerden biri. İnsanlar terminale özgü belge erişimi kazanıyor. AI ajanları tahmin etmeyi bırakıp gerçek belgelere başvurmanın bir yolunu buluyor. Ve hepsi aynı gerçek kaynakla destekleniyor.&lt;/p&gt;
&lt;p&gt;.NET Aspire ile geliştirme yapıyorsanız ve CLI&amp;rsquo;ı henüz denemediyseniz, &lt;code&gt;aspire docs search &amp;quot;konunuz&amp;quot;&lt;/code&gt; çalıştırın ve nasıl hissettirdiğini görün. Sonra bu komutları kullandığınız AI skill veya otomasyon kurulumuna entegre etmeyi düşünün — ajanlarınız size teşekkür edecek.&lt;/p&gt;
&lt;p&gt;Dokümantasyon araçlarının nasıl oluşturulduğuna dair &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;David Pine&amp;rsquo;ın derinlemesine incelemesine&lt;/a&gt; ve tüm ayrıntılar için &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;resmi CLI referansına&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Agent Framework 1.0 Yayımlandı — .NET Geliştiricileri İçin Gerçekten Önemli Olan Şeyler</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-framework-1-0-production-ready/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-framework-1-0-production-ready/</guid><description>Microsoft Agent Framework 1.0, kararlı API'lar, çoklu-agent orkestrasyonu ve tüm büyük AI sağlayıcıları için bağlayıcılarla üretime hazır hale geldi. Bir .NET geliştiricisi olarak bilmeniz gerekenler.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agent-framework-1-0-production-ready/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Erken Semantic Kernel ve AutoGen günlerinden bu yana Agent Framework yolculuğunu takip ediyorsanız, bu gelişme önemli. Microsoft Agent Framework &lt;a href="https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-version-1-0/"&gt;1.0 sürümüne ulaştı&lt;/a&gt; — üretime hazır, kararlı API&amp;rsquo;lar, uzun vadeli destek taahhüdü. Hem .NET hem de Python için mevcut ve gerçek iş yükleri için gerçekten hazır.&lt;/p&gt;
&lt;p&gt;Duyuru gürültüsünü bir kenara bırakarak, .NET ile AI destekli uygulamalar geliştiriyorsanız önemli olan şeylere odaklanayım.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0, eski Semantic Kernel ve AutoGen&amp;rsquo;i tek, açık kaynaklı bir SDK&amp;rsquo;da birleştirir. Tek bir agent soyutlaması. Tek bir orkestrasyon motoru. Birden fazla AI sağlayıcısı. Kurumsal desenler için Semantic Kernel ile araştırma düzeyindeki çoklu-agent iş akışları için AutoGen arasında gidip geliyorsanız, buna son verebilirsiniz. Artık tek SDK bu.&lt;/p&gt;
&lt;h2 id="başlamak-neredeyse-haksız-derecede-kolay"&gt;Başlamak neredeyse haksız derecede kolay&lt;/h2&gt;
&lt;p&gt;İşte .NET&amp;rsquo;te çalışan bir agent:&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="c1"&gt;// dotnet add package Microsoft.Agents.AI.OpenAI --prerelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI&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;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Foundry&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;using&lt;/span&gt; &lt;span class="nn"&gt;Azure.Identity&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="kt"&gt;var&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;AIProjectClient&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 class="s"&gt;&amp;#34;https://your-project.services.ai.azure.com&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 class="n"&gt;GetResponsesClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;gpt-5.3&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 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;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;HaikuBot&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;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;You are an upbeat assistant that writes beautifully.&amp;#34;&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&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;Write a haiku about shipping 1.0.&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;Bu kadar. Birkaç satırla Azure Foundry üzerinde çalışan bir AI agentınız var. Python karşılığı da aynı derecede özlü. İlerlediğinizde function araçları, çok turlu konuşmalar ve streaming ekleyin — API yüzeyi tuhaflaşmadan büyür.&lt;/p&gt;
&lt;h2 id="çoklu-agent-orkestrasyonu--işte-asıl-konu-bu"&gt;Çoklu-agent orkestrasyonu — işte asıl konu bu&lt;/h2&gt;
&lt;p&gt;Tek agentlar demolar için güzel, ama üretim senaryoları genellikle koordinasyon gerektirir. Agent Framework 1.0, Microsoft Research ve AutoGen&amp;rsquo;den gelen savaşta test edilmiş orkestrasyon desenlerini içerir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sequential (Sıralı)&lt;/strong&gt; — agentlar sırayla işler (yazar → gözden geçiren → editör)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrent (Eş zamanlı)&lt;/strong&gt; — birden fazla agenta paralel olarak yayıl, sonuçları birleştir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handoff (Devir teslim)&lt;/strong&gt; — bir agent, niyete göre başka birine devreder&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group chat (Grup sohbeti)&lt;/strong&gt; — birden fazla agent tartışır ve bir çözümde uzlaşır&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magentic-One&lt;/strong&gt; — MSR&amp;rsquo;den araştırma düzeyindeki çoklu-agent deseni&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tümü streaming, checkpointing, human-in-the-loop onayları ve duraklat/devam et özelliklerini destekler. Checkpointing kısmı kritik — uzun süreli iş akışları süreç yeniden başlatmalarını atlatır. Azure Functions ile dayanıklı iş akışları geliştirmiş .NET geliştiricileri için bu tanıdık hissettiriyor.&lt;/p&gt;
&lt;h2 id="en-önemli-özellikler"&gt;En önemli özellikler&lt;/h2&gt;
&lt;p&gt;Bilmeye değer şeylerin kısa listesi:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Middleware kancaları.&lt;/strong&gt; ASP.NET Core&amp;rsquo;un middleware pipeline&amp;rsquo;ları var ya? Aynı kavram, ama agent yürütmesi için. Her aşamayı yakalayın — içerik güvenliği, loglama, uyumluluk politikaları ekleyin — agent prompt&amp;rsquo;larına dokunmadan. Agentları kurumsal düzeyde hazır kılmanın yolu budur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takılabilir bellek.&lt;/strong&gt; Konuşma geçmişi, kalıcı anahtar-değer durumu, vektör tabanlı erişim. Backend&amp;rsquo;inizi seçin: Foundry Agent Service, Mem0, Redis, Neo4j veya kendinizinkini yazın. Bellek, durumsuz bir LLM çağrısını gerçekten bağlamı hatırlayan bir agenta dönüştüren şeydir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bildirimsel YAML agentları.&lt;/strong&gt; Agentınızın talimatlarını, araçlarını, belleğini ve orkestrasyon topolojisini sürüm kontrollü YAML dosyalarında tanımlayın. Tek bir API çağrısıyla yükleyin ve çalıştırın. Bu, kod yeniden dağıtmadan agent davranışını yinelemek isteyen ekipler için oyun değiştiricidir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A2A ve MCP desteği.&lt;/strong&gt; MCP (Model Context Protocol), agentların harici araçları dinamik olarak keşfetmesine ve çağırmasına izin verir. A2A (Agent-to-Agent protokolü), çalışma zamanları arası işbirliğini mümkün kılar — .NET agentlarınız diğer framework&amp;rsquo;lerde çalışan agentlarla koordinasyon kurabilir. A2A 1.0 desteği yakında geliyor.&lt;/p&gt;
&lt;h2 id="takip-etmeye-değer-önizleme-özellikleri"&gt;Takip etmeye değer önizleme özellikleri&lt;/h2&gt;
&lt;p&gt;Bazı özellikler 1.0&amp;rsquo;da önizleme olarak yayımlandı — işlevsel ama API&amp;rsquo;lar gelişebilir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevUI&lt;/strong&gt; — agent yürütmesini, mesaj akışlarını ve araç çağrılarını gerçek zamanlı olarak görselleştirmek için tarayıcı tabanlı yerel hata ayıklayıcı. Application Insights gibi ama agent muhakemesi için.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot SDK ve Claude Code SDK&lt;/strong&gt; — Copilot veya Claude&amp;rsquo;u doğrudan orkestrasyon kodunuzdan agent harness&amp;rsquo;i olarak kullanın. Kod yazabilen bir agentı aynı iş akışındaki diğer agentlarla birleştirin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Harness&lt;/strong&gt; — agentlara shell, dosya sistemi ve mesajlaşma döngülerine erişim sağlayan özelleştirilebilir yerel çalışma zamanı. Kodlama agentları ve otomasyon desenlerini düşünün.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills&lt;/strong&gt; — agentlara kullanıma hazır yapılandırılmış yetenekler sunan yeniden kullanılabilir alan yetkinliği paketleri.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="semantic-kernel-veya-autogenden-geçiş"&gt;Semantic Kernel veya AutoGen&amp;rsquo;den geçiş&lt;/h2&gt;
&lt;p&gt;Mevcut Semantic Kernel veya AutoGen kodunuz varsa, kodunuzu analiz eden ve adım adım geçiş planları üreten özel geçiş asistanları mevcuttur. &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-semantic-kernel"&gt;Semantic Kernel geçiş rehberi&lt;/a&gt; ve &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-autogen"&gt;AutoGen geçiş rehberi&lt;/a&gt; her şeyi adım adım anlatıyor.&lt;/p&gt;
&lt;p&gt;RC paketlerindeyseniz, 1.0&amp;rsquo;a yükseltme sadece bir sürüm güncellemesidir.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0, kurumsal ekiplerin beklediği üretim mihenk taşıdır. Kararlı API&amp;rsquo;lar, çoklu sağlayıcı desteği, gerçek ölçekte çalışan orkestrasyon desenleri ve hem Semantic Kernel hem de AutoGen&amp;rsquo;den geçiş yolları.&lt;/p&gt;
&lt;p&gt;Framework &lt;a href="https://github.com/microsoft/agent-framework"&gt;GitHub&amp;rsquo;da tamamen açık kaynak&lt;/a&gt; ve &lt;code&gt;dotnet add package Microsoft.Agents.AI&lt;/code&gt; ile bugün başlayabilirsiniz. Ellerinizi kirletmek için &lt;a href="https://learn.microsoft.com/en-us/agent-framework/get-started/"&gt;hızlı başlangıç rehberine&lt;/a&gt; ve &lt;a href="https://github.com/microsoft/agent-framework"&gt;örneklere&lt;/a&gt; göz atın.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Üretimde kullanmak güvenli&amp;rdquo; sinyalini bekliyorsanız — işte bu.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 Dashboard'una Telemetri API'si Geldi — ve Her Şeyi Değiştiriyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>.NET Aspire 13.2, daha akıllı telemetri dışa aktarma, izler ve loglar için programlanabilir bir API ve GenAI görselleştirme iyileştirmeleri sunuyor. Bunun hata ayıklama iş akışınız için neden önemli olduğu.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;.NET Aspire ile dağıtık uygulamalar geliştiriyorsanız, dashboard&amp;rsquo;un tüm deneyimin en iyi parçası olduğunu zaten bilirsiniz. Tüm izleriniz, loglarınız ve metrikleriniz tek bir yerde — harici Jaeger yok, Seq kurulumu yok, &amp;ldquo;öbür terminale bakayım&amp;rdquo; anı yok.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 bunu önemli ölçüde daha iyi hale getirdi. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;güncellemeyi duyurdu&lt;/a&gt; ve dürüst olmak gerekirse? Telemetri dışa aktarma ve API özellikleri tek başına yükseltmeye değer.&lt;/p&gt;
&lt;h2 id="telemetriyi-sağlıklı-bir-şekilde-dışa-aktarın"&gt;Telemetriyi sağlıklı bir şekilde dışa aktarın&lt;/h2&gt;
&lt;p&gt;Hepimizin yaşadığı senaryoyu düşünün: dağıtık bir sorunu ayıklıyorsunuz, yirmi dakikalık kurulumun ardından sonunda yeniden üretiyorsunuz ve şimdi yaşananları ekibinizle paylaşmanız gerekiyor. Önceden? Ekran görüntüleri. İz ID&amp;rsquo;lerini kopyala-yapıştır. Her zamanki karmaşa.&lt;/p&gt;
&lt;p&gt;Aspire 13.2, şunları yapabileceğiniz uygun bir &lt;strong&gt;Logları ve telemetriyi yönet&lt;/strong&gt; iletişim kutusu ekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tüm telemetriyi temizleme (yeniden üretim denemesinden önce kullanışlı)&lt;/li&gt;
&lt;li&gt;Seçili telemetriyi standart OTLP/JSON formatında ZIP dosyasına dışa aktarma&lt;/li&gt;
&lt;li&gt;Bu ZIP&amp;rsquo;i daha sonra herhangi bir Aspire dashboard&amp;rsquo;una yeniden içe aktarma&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Son kısım öldürücü özellik. Bir hatayı yeniden üretirsiniz, telemetriyi dışa aktarırsınız, iş öğenize eklersiniz ve ekip arkadaşınız tam olarak gördüğünüzü görmek için kendi dashboard&amp;rsquo;una içe aktarabilir. Artık &amp;ldquo;kendi makinende yeniden üretebilir misin?&amp;rdquo; yok.&lt;/p&gt;
&lt;p&gt;Bireysel izler, span&amp;rsquo;lar ve loglar da bağlam menülerinde &amp;ldquo;JSON Dışa Aktar&amp;rdquo; seçeneği kazanıyor. Tek bir izi paylaşmanız mı gerekiyor? Sağ tıklayın, JSON kopyalayın, PR açıklamanıza yapıştırın. Tamam.&lt;/p&gt;
&lt;h2 id="telemetri-apisi-gerçek-oyun-değiştirici"&gt;Telemetri API&amp;rsquo;si gerçek oyun değiştirici&lt;/h2&gt;
&lt;p&gt;En çok bu konuya heyecanlıyım. Dashboard artık telemetri verilerini programatik olarak sorgulamak için &lt;code&gt;/api/telemetry&lt;/code&gt; altında bir HTTP API sunuyor. Kullanılabilir endpoint&amp;rsquo;ler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — telemetrisi olan kaynakları listele&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — filtrelerle span&amp;rsquo;ları sorgula&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — filtrelerle logları sorgula&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — izleri listele&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — belirli bir iz için tüm span&amp;rsquo;ları getir&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Her şey OTLP JSON formatında dönüyor. Bu, yeni &lt;code&gt;aspire agent mcp&lt;/code&gt; ve &lt;code&gt;aspire otel&lt;/code&gt; CLI komutlarını besliyor, ama gerçek anlam daha büyük: artık uygulamanızın telemetrisini doğrudan sorgulayan araçlar, scriptler ve AI agent entegrasyonları oluşturabilirsiniz.&lt;/p&gt;
&lt;p&gt;Hata ayıklarken gerçek dağıtık izlerinize bakabilen bir AI kodlama agentı hayal edin. Bu artık hayali değil — bu API&amp;rsquo;nin mümkün kıldığı şey tam olarak bu.&lt;/p&gt;
&lt;h2 id="genai-telemetri-pratikleşiyor"&gt;GenAI telemetri pratikleşiyor&lt;/h2&gt;
&lt;p&gt;Semantic Kernel veya Microsoft.Extensions.AI ile AI destekli uygulamalar geliştiriyorsanız, geliştirilmiş GenAI telemetri görselleştiricisini takdir edeceksiniz. Aspire 13.2 şunları ekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Markdown olarak render edilen AI araç açıklamaları&lt;/li&gt;
&lt;li&gt;AI iz erişimini hızlandırmak için izler sayfasında özel GenAI butonu&lt;/li&gt;
&lt;li&gt;Kesik veya standart olmayan GenAI JSON için daha iyi hata yönetimi&lt;/li&gt;
&lt;li&gt;Araç tanımları arasında tıkla-vurgula navigasyonu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Blog yazısı, VS Code Copilot chat, Copilot CLI ve OpenCode&amp;rsquo;un tümünün &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt; yapılandırmasını desteklediğinden bahsediyor. Bunları Aspire dashboard&amp;rsquo;una yönlendirin ve AI agentlarınızın telemetri aracılığıyla gerçek zamanlı olarak nasıl düşündüğünü izleyebilirsiniz. Bu, başka hiçbir yerde bulamayacağınız bir hata ayıklama deneyimidir.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Aspire 13.2, dashboard&amp;rsquo;u &amp;ldquo;güzel bir hata ayıklama arayüzü&amp;quot;nden &amp;ldquo;programlanabilir bir gözlemlenebilirlik platformu&amp;quot;na taşıyor. Dışa aktarma/içe aktarma iş akışı tek başına dağıtık hata ayıklamada gerçek zaman kazandırıyor; telemetri API&amp;rsquo;si ise AI destekli tanılama kapısını açıyor.&lt;/p&gt;
&lt;p&gt;Zaten Aspire kullanıyorsanız, yükseltin. Kullanmıyorsanız — bu, &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt;&amp;rsquo;e göz atmak ve tüm meseleyi anlamak için iyi bir neden.&lt;/p&gt;</content:encoded></item><item><title>azd Artık AI Ajanlarınızı Yerel Ortamda Çalıştırıp Hata Ayıklamanıza İzin Veriyor — Mart 2026'daki Değişiklikler</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>Azure Developer CLI, Mart 2026'da yedi sürüm yayımladı. Öne çıkanlar: AI ajanları için yerel çalıştırma ve hata ayıklama döngüsü, proje kurulumunda GitHub Copilot entegrasyonu ve Container App Jobs desteği.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bir ayda yedi sürüm. Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) ekibinin Mart 2026&amp;rsquo;da yaptığı bu ve başlık özelliği benim beklediğim şey: &lt;strong&gt;AI ajanları için yerel çalıştırma ve hata ayıklama döngüsü&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PC Chan &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;tam özeti yayımladı&lt;/a&gt; ve orada pek çok şey olsa da, AI destekli uygulamalar geliştiren .NET geliştiricileri için gerçekten önem taşıyan şeyleri özetleyeyim.&lt;/p&gt;
&lt;h2 id="ai-ajanlarını-dağıtmadan-çalıştırın-ve-hata-ayıklayın"&gt;AI ajanlarını dağıtmadan çalıştırın ve hata ayıklayın&lt;/h2&gt;
&lt;p&gt;En büyük yenilik bu. Yeni &lt;code&gt;azure.ai.agents&lt;/code&gt; uzantısı, AI ajanları için düzgün bir iç döngü deneyimi sunan bir dizi komut ekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — ajanı yerel olarak başlatır&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — ona mesaj gönderir (yerel veya dağıtılmış)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — container durumunu ve sağlığını gösterir&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — container loglarını gerçek zamanlı akıtır&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bundan önce, bir AI ajanını test etmek her değişiklik yaptığınızda Microsoft Foundry&amp;rsquo;e dağıtmak anlamına geliyordu. Artık yerel olarak yineleyebilir, ajanın davranışını test edebilir ve yalnızca hazır olduğunuzda dağıtabilirsiniz. Microsoft Agent Framework veya Semantic Kernel ile ajan geliştiriyorsanız, bu günlük iş akışınızı değiştiriyor.&lt;/p&gt;
&lt;p&gt;invoke komutu hem yerel hem de dağıtılmış ajanlara karşı çalışıyor; bu, ajanın nerede çalıştığından bağımsız olarak aynı test iş akışını kullanabileceğiniz anlamına geliyor. Bu tür bir ayrıntı, iki ayrı test betiği setini sürdürmek zorunda kalmaktan sizi kurtarıyor.&lt;/p&gt;
&lt;h2 id="github-copilot-azd-projenizi-iskelet-oluşturuyor"&gt;GitHub Copilot azd projenizi iskelet oluşturuyor&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; artık &amp;ldquo;GitHub Copilot ile Kur (Önizleme)&amp;rdquo; seçeneği sunuyor. Proje yapınız hakkındaki prompt&amp;rsquo;lara manuel olarak yanıt vermek yerine, bir Copilot ajanı yapılandırmayı sizin için iskelet oluşturuyor. Herhangi bir şeyi değiştirmeden önce kirli çalışma dizinini kontrol ediyor ve MCP sunucusu araç iznini önceden istiyor.&lt;/p&gt;
&lt;p&gt;Bir komut başarısız olduğunda, &lt;code&gt;azd&lt;/code&gt; artık AI destekli sorun giderme sunuyor: bir kategori seçin (açıkla, rehberlik, sorun gider veya atla), ajanın bir düzeltme önermesine izin verin ve yeniden deneyin — hepsi terminali terk etmeden. Karmaşık altyapı kurulumları için bu gerçek anlamda zaman kazandırıyor.&lt;/p&gt;
&lt;h2 id="container-app-jobs-ve-dağıtım-iyileştirmeleri"&gt;Container App Jobs ve dağıtım iyileştirmeleri&lt;/h2&gt;
&lt;p&gt;Dikkat çekmeye değer birkaç dağıtım özelliği:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; artık mevcut &lt;code&gt;host: containerapp&lt;/code&gt; yapılandırması aracılığıyla &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; dağıtıyor. Bicep şablonunuz hedefin Container App mı yoksa Job mu olduğunu belirliyor — ekstra kurulum gerekmez.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yapılandırılabilir dağıtım zaman aşımları&lt;/strong&gt;: &lt;code&gt;azd deploy&lt;/code&gt; üzerinde yeni &lt;code&gt;--timeout&lt;/code&gt; bayrağı ve &lt;code&gt;azure.yaml&lt;/code&gt;&amp;lsquo;da &lt;code&gt;deployTimeout&lt;/code&gt; alanı. Varsayılan 1200 saniyelik sınırı artık tahmin etmek zorunda değilsiniz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uzak derleme yedeklemesi&lt;/strong&gt;: Uzak ACR derlemesi başarısız olduğunda, &lt;code&gt;azd&lt;/code&gt; otomatik olarak yerel Docker/Podman derlemesine geri düşüyor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yerel ön uçuş doğrulama&lt;/strong&gt;: Bicep parametreleri, Azure&amp;rsquo;a bir gidiş-dönüş yapmadan eksik parametreleri yakalamak için dağıtımdan önce yerel olarak doğrulanıyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="geliştirici-deneyimi-iyileştirmeleri"&gt;Geliştirici deneyimi iyileştirmeleri&lt;/h2&gt;
&lt;p&gt;Toplanınca fark yaratan küçük iyileştirmeler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JS/TS projeleri için &lt;strong&gt;otomatik pnpm/yarn algılama&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Python paketleme için &lt;strong&gt;pyproject.toml desteği&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yerel şablon dizinleri&lt;/strong&gt; — &lt;code&gt;azd init --template&lt;/code&gt; artık çevrimdışı yineleme için dosya sistemi yollarını kabul ediyor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--no-prompt&lt;/code&gt; modunda &lt;strong&gt;daha iyi hata mesajları&lt;/strong&gt; — eksik tüm değerler çözüm komutlarıyla birlikte bir kerede raporlanıyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Derleme ortam değişkenleri&lt;/strong&gt; tüm framework derleme alt süreçlerine enjekte ediliyor (.NET, Node.js, Java, Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Son madde ince ama önemli: .NET derlemeniz artık &lt;code&gt;azd&lt;/code&gt; ortam değişkenlerine erişebilir; bu, ekstra betik yazmadan derleme zamanı yapılandırma enjeksiyonu yapabileceğiniz anlamına geliyor.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Yerel AI ajan hata ayıklama döngüsü bu sürümün yıldızı, ancak dağıtım iyileştirmeleri ve geliştirici deneyimi cilasının birikmesi &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;yi her zamankinden daha olgun hissettiriyor. .NET uygulamalarını Azure&amp;rsquo;a — özellikle AI ajanlarını — dağıtıyorsanız, bu güncelleme kuruluma değer.&lt;/p&gt;
&lt;p&gt;Her ayrıntı için &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;tam sürüm notlarına&lt;/a&gt; bakın ya da &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;azd kurulumu&lt;/a&gt; ile başlayın.&lt;/p&gt;</content:encoded></item><item><title>Visual Studio'nun Mart Güncellemesiyle Özel Copilot Agentları Oluşturabilirsiniz — find_symbol Aracı Gerçekten Büyük</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</guid><description>Visual Studio'nun Mart 2026 güncellemesi özel Copilot agentları, yeniden kullanılabilir agent becerileri, dile duyarlı bir find_symbol aracı ve Test Gezgini'nden Copilot destekli profil oluşturmayı içeriyor. İşte önemli olanlar.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Visual Studio bugüne kadarki en önemli Copilot güncellemesini aldı. Mark Downie &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-march-update-build-your-own-custom-agents/"&gt;Mart sürümünü duyurdu&lt;/a&gt; ve başlık özel agentlar — ama dürüstçe söylemek gerekirse, daha aşağılarda geçen &lt;code&gt;find_symbol&lt;/code&gt; aracı iş akışınızı en çok değiştirecek özellik olabilir.&lt;/p&gt;
&lt;p&gt;Gerçekte neler olduğunu açıklayayım.&lt;/p&gt;
&lt;h2 id="reponuzda-özel-copilot-agentları"&gt;Reponuzda özel Copilot agentları&lt;/h2&gt;
&lt;p&gt;Copilot&amp;rsquo;un ekibinizin kodlama standartlarını izlemesini, build pipeline&amp;rsquo;ınızı çalıştırmasını veya dahili belgelerinizi sorgulamasını ister misiniz? Artık tam olarak bunu oluşturabilirsiniz.&lt;/p&gt;
&lt;p&gt;Özel agentlar, reponuzdaki &lt;code&gt;.github/agents/&lt;/code&gt; klasörüne bıraktığınız &lt;code&gt;.agent.md&lt;/code&gt; dosyaları olarak tanımlanıyor. Her agent, çalışma alanı farkındalığına, kod anlayışına, araçlara, tercih ettiğiniz modele ve harici servislere MCP bağlantılarına tam erişim elde ediyor. Yerleşik agentların yanında agent seçicisinde görünüyorlar.&lt;/p&gt;
&lt;p&gt;Bu, VS Code&amp;rsquo;un süredir desteklediği desenin aynısı — ve Visual Studio&amp;rsquo;nun yetişmesini görmek harika. VS Code için zaten agent oluşturmuş ekipler için &lt;code&gt;.agent.md&lt;/code&gt; dosyalarınız her iki IDE&amp;rsquo;de de çalışmalı (ancak araç adları farklılık gösterebilir, bu yüzden test edin).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/github/awesome-copilot"&gt;awesome-copilot&lt;/a&gt; reposunda başlangıç noktası olarak kullanabileceğiniz topluluk katkılı agent yapılandırmaları var.&lt;/p&gt;
&lt;h2 id="agent-becerileri-yeniden-kullanılabilir-talimat-paketleri"&gt;Agent becerileri: yeniden kullanılabilir talimat paketleri&lt;/h2&gt;
&lt;p&gt;Beceriler, reponuzdaki &lt;code&gt;.github/skills/&lt;/code&gt; klasöründen veya profilinizdeki &lt;code&gt;~/.copilot/skills/&lt;/code&gt; konumundan otomatik olarak alınıyor. Her beceri, &lt;a href="https://agentskills.io/specification"&gt;Agent Skills spesifikasyonunu&lt;/a&gt; takip eden bir &lt;code&gt;SKILL.md&lt;/code&gt; dosyası.&lt;/p&gt;
&lt;p&gt;Becerileri, karıştırıp eşleştirebileceğiniz modüler uzmanlık alanları olarak düşünün. API kurallarınız için bir beceri, test desenleriniz için bir diğeri ve dağıtım iş akışınız için başka biri olabilir. Bir beceri etkinleştiğinde, uygulandığını bilmeniz için sohbette görünüyor.&lt;/p&gt;
&lt;p&gt;VS Code&amp;rsquo;da beceri kullandıysanız Visual Studio&amp;rsquo;da da aynı şekilde çalışıyorlar.&lt;/p&gt;
&lt;h2 id="find_symbol-agentlar-için-dile-duyarlı-navigasyon"&gt;find_symbol: agentlar için dile duyarlı navigasyon&lt;/h2&gt;
&lt;p&gt;İşler burada gerçekten ilginçleşiyor. Yeni &lt;code&gt;find_symbol&lt;/code&gt; aracı, Copilot&amp;rsquo;un agent moduna gerçek dil servisi destekli sembol navigasyonu sağlıyor. Kodunuzu metin olarak aramak yerine agent şunları yapabiliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projeniz genelinde bir sembole yapılan tüm referansları bul&lt;/li&gt;
&lt;li&gt;Tür bilgisine, bildirimlere ve kapsam meta verilerine eriş&lt;/li&gt;
&lt;li&gt;Tam dil farkındalığıyla çağrı noktalarında gezin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pratikte ne anlama geliyor: Copilot&amp;rsquo;tan bir metodu yeniden düzenlemesini veya çağrı noktaları genelinde parametre imzasını güncellemesini istediğinizde, kodunuzun yapısını gerçekten görebiliyor. Artık &amp;ldquo;agent metodu değiştirdi ama üç çağrı noktasını kaçırdı&amp;rdquo; durumu yok.&lt;/p&gt;
&lt;p&gt;Desteklenen diller arasında C#, C++, Razor, TypeScript ve desteklenen LSP uzantısına sahip her şey yer alıyor. .NET geliştiricileri için bu büyük bir iyileştirme — derin tür hiyerarşileri ve arayüzlere sahip C# kod tabanları, sembol farkındalıklı navigasyondan büyük ölçüde yararlanıyor.&lt;/p&gt;
&lt;h2 id="copilot-ile-testleri-profilleyin"&gt;Copilot ile testleri profilleyin&lt;/h2&gt;
&lt;p&gt;Test Gezgini bağlam menüsünde artık bir &lt;strong&gt;Profile with Copilot&lt;/strong&gt; komutu var. Bir test seçin, profile tıklayın ve Profiling Agent onu otomatik olarak çalıştırıp performansı analiz eder — uygulanabilir içgörüler sunmak için CPU kullanımı ve enstrümantasyon verilerini birleştirir.&lt;/p&gt;
&lt;p&gt;Artık profil oluşturucu oturumlarını manuel olarak yapılandırmak, testi çalıştırmak, sonuçları dışa aktarmak ve bir flame graph okumaya çalışmak yok. Agent analizi yapıp neyin yavaş olduğunu ve neden olduğunu söylüyor. Şu anda yalnızca .NET, ki bu Visual Studio&amp;rsquo;nun derin .NET tanı entegrasyonu göz önüne alındığında mantıklı.&lt;/p&gt;
&lt;h2 id="canlı-hata-ayıklama-sırasında-performans-ipuçları"&gt;Canlı hata ayıklama sırasında performans ipuçları&lt;/h2&gt;
&lt;p&gt;Performans optimizasyonu artık sonrasında değil, hata ayıklarken gerçekleşiyor. Kod üzerinde adım adım ilerlerken Visual Studio satır içinde yürütme süresini ve performans sinyallerini gösteriyor. Yavaş bir satır mı gördünüz? Perf İpucu&amp;rsquo;na tıklayın ve Copilot&amp;rsquo;tan hemen orada optimizasyon önerileri isteyin.&lt;/p&gt;
&lt;p&gt;Profiling Agent çalışma zamanı verilerini otomatik olarak yakalıyor — geçen süre, CPU kullanımı, bellek davranışı — ve Copilot bunu sıcak noktaları tespit etmek için kullanıyor. Bu, performans çalışmasını ertelediğiniz ayrı bir görev yerine hata ayıklama akışınızın bir parçası olarak tutuyor.&lt;/p&gt;
&lt;h2 id="solution-explorerdan-nuget-güvenlik-açıklarını-düzeltin"&gt;Solution Explorer&amp;rsquo;dan NuGet güvenlik açıklarını düzeltin&lt;/h2&gt;
&lt;p&gt;Bir NuGet paketinde güvenlik açığı tespit edildiğinde, artık doğrudan Solution Explorer&amp;rsquo;da &lt;strong&gt;Fix with GitHub Copilot&lt;/strong&gt; bağlantısıyla bir bildirim görüyorsunuz. Tıklayın ve Copilot güvenlik açığını analiz eder, doğru paket güncellemelerini önerir ve uygular.&lt;/p&gt;
&lt;p&gt;Bağımlılıkları güncel tutmakta zorlanan ekipler için (ki bu esasen herkes), &amp;ldquo;bir güvenlik açığı olduğunu biliyorum ama doğru güncelleme yolunu bulmak başlı başına bir proje&amp;rdquo; sürtünmesini ortadan kaldırıyor.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Özel agentlar ve beceriler başlık haberi, ancak &lt;code&gt;find_symbol&lt;/code&gt; uyuyan dev — .NET kodunu yeniden düzenlerken Copilot&amp;rsquo;un ne kadar doğru olabileceğini temelden değiştiriyor. Canlı profil oluşturma entegrasyonu ve güvenlik açığı düzeltmeleriyle birleşince bu güncelleme, Visual Studio&amp;rsquo;nun AI özelliklerini demo hazır değil gerçekten pratik hissettiriyor.&lt;/p&gt;
&lt;p&gt;Her şeyi denemek için &lt;a href="https://visualstudio.microsoft.com/downloads/"&gt;Visual Studio 2026 Insiders&lt;/a&gt;&amp;lsquo;ı indirin.&lt;/p&gt;</content:encoded></item><item><title>KubeCon Avrupa 2026: .NET Geliştiricilerinin Gerçekten Önemsemesi Gerekenler</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</guid><description>Microsoft, KubeCon Avrupa 2026'da bir dizi Kubernetes duyurusu yaptı. İşte filtrelenmiş versiyonu — .NET uygulamaları gönderiyorsanız önemli olan yalnızca AKS ve cloud-native güncellemeleri.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Büyük bir duyuru yazısı yayımlandığında ve &amp;ldquo;harika, ama bu benim için ne değiştiriyor ki&amp;rdquo; diye düşünerek kaydırma yaptığınız o hissi bilirsiniz, değil mi? Ben her KubeCon sezonunda böyle hissediyorum.&lt;/p&gt;
&lt;p&gt;Microsoft, &lt;a href="https://opensource.microsoft.com/blog/2026/03/24/whats-new-with-microsoft-in-open-source-and-kubernetes-at-kubecon-cloudnativecon-europe-2026/"&gt;KubeCon Avrupa 2026 tam özetini&lt;/a&gt; yayımladı — bizzat Brendan Burns tarafından yazıldı — ve dürüst olmak gerekirse? Burada gerçek bir içerik var. Yalnızca özellik onay kutuları değil, üretimdeki çalışma biçiminizi değiştiren türden operasyonel iyileştirmeler.&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri olarak bizim için gerçekten önemli olanları ele alayım.&lt;/p&gt;
&lt;h2 id="service-mesh-yükü-olmadan-mtls"&gt;Service Mesh Yükü Olmadan mTLS&lt;/h2&gt;
&lt;p&gt;Service mesh&amp;rsquo;ler hakkında şunu söylemek gerekir: herkes güvenlik garantilerini istiyor, kimse operasyonel yükü istemiyor. AKS nihayet bu boşluğu kapatıyor.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/application-network"&gt;Azure Kubernetes Application Network&lt;/a&gt;, ağır sidecar&amp;rsquo;lı bir mesh dağıtmadan karşılıklı TLS, uygulama farkında yetkilendirme ve trafik telemetrisi sunuyor. &lt;a href="https://aka.ms/acns/cilium-mtls"&gt;Advanced Container Networking Services&amp;rsquo;deki Cilium mTLS&lt;/a&gt; ile birleşince, kimlik yönetimi için X.509 sertifikaları ve SPIRE kullanan şifreli pod-to-pod iletişimi elde ediyorsunuz.&lt;/p&gt;
&lt;p&gt;Pratikte ne anlama geliyor: arka plan worker&amp;rsquo;larıyla konuşan ASP.NET Core API&amp;rsquo;leriniz, birbirini çağıran gRPC servisleriniz — sıfır uygulama kodu değişikliğiyle ağ düzeyinde şifreli ve kimlik doğrulamalı. Bu büyük bir şey.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ingress-nginx&lt;/code&gt;&amp;lsquo;ten geçiş yapan ekipler için tam Kubernetes Gateway API desteğiyle &lt;a href="https://aka.ms/aks/app-routing/gateway-api"&gt;Application Routing with Meshless Istio&lt;/a&gt; da mevcut. Sidecar yok. Standart tabanlı. Ve kademeli geçiş için &lt;code&gt;ingress2gateway&lt;/code&gt; araçlarını gönderdiler.&lt;/p&gt;
&lt;h2 id="sonradan-düşünülmemiş-gpu-gözlemlenebilirliği"&gt;Sonradan Düşünülmemiş GPU Gözlemlenebilirliği&lt;/h2&gt;
&lt;p&gt;.NET servislerinizin yanında AI çıkarımı çalıştırıyorsanız (ve dürüst olalım, kim başlamıyor?), GPU izleme kör noktasına çarpmış olabilirsiniz. Harika CPU/bellek dashboard&amp;rsquo;larınız olur ve ardından&amp;hellip; manuel exporter bağlantıları olmadan GPU&amp;rsquo;lar için hiçbir şey.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/managed-gpu-metrics"&gt;AKS artık GPU metriklerini&lt;/a&gt; yönetilen Prometheus ve Grafana&amp;rsquo;ya yerel olarak sunuyor. Aynı yığın, aynı dashboard&amp;rsquo;lar, aynı uyarı pipeline&amp;rsquo;ı. Özel exporter yok, üçüncü taraf ajan yok.&lt;/p&gt;
&lt;p&gt;Ağ tarafında, &lt;a href="https://learn.microsoft.com/en-us/azure/aks/container-network-observability-logs"&gt;tek tıklamalı Azure Monitor deneyimiyle&lt;/a&gt; HTTP, gRPC ve Kafka trafiği için akış başına görünürlük eklediler. IP&amp;rsquo;ler, portlar, iş yükleri, akış yönü, politika kararları — hepsi yerleşik dashboard&amp;rsquo;larda.&lt;/p&gt;
&lt;p&gt;Ve beni iki kez baktıran şu oldu: &lt;a href="https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview"&gt;agentic container networking&lt;/a&gt; kümenizin ağ durumu hakkında doğal dil soruları sorabileceğiniz bir web UI ekliyor. &amp;ldquo;Pod X neden servis Y&amp;rsquo;ye ulaşamıyor?&amp;rdquo; → canlı telemetriden salt okunur tanılamalar. Gece 2&amp;rsquo;de gerçekten kullanışlı.&lt;/p&gt;
&lt;h2 id="phd-gerektirmeyen-kümeler-arası-ağ"&gt;PhD Gerektirmeyen Kümeler Arası Ağ&lt;/h2&gt;
&lt;p&gt;Multi-cluster Kubernetes, tarihsel olarak &amp;ldquo;kendi ağ yapıştırıcınızı getirin&amp;rdquo; deneyimiydi. Azure Kubernetes Fleet Manager artık yönetilen Cilium cluster mesh üzerinden &lt;a href="https://aka.ms/kubernetes-fleet/networking/cross-cluster"&gt;kümeler arası ağ&lt;/a&gt; sunuyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AKS kümeleri arasında birleşik bağlantı&lt;/li&gt;
&lt;li&gt;Kümeler arası keşif için global servis kaydı&lt;/li&gt;
&lt;li&gt;Merkezi olarak yönetilen, küme başına tekrarlanmayan konfigürasyon&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dayanıklılık veya uyumluluk için bölgeler arasında .NET mikro servisler çalıştırıyorsanız, bu çok sayıda kırılgan özel yapıştırıcının yerini alıyor. West Europe&amp;rsquo;daki A Servisi, tutarlı yönlendirme ve güvenlik politikalarıyla mesh üzerinden East US&amp;rsquo;deki B Servisini keşfedebilir ve çağırabilir.&lt;/p&gt;
&lt;h2 id="cesaret-gerektirmeyen-yükseltmeler"&gt;Cesaret Gerektirmeyen Yükseltmeler&lt;/h2&gt;
&lt;p&gt;Dürüst olalım — üretimdeki Kubernetes yükseltmeleri streslidir. &amp;ldquo;Yükselt ve umut et&amp;rdquo; pek çok ekip için fiili strateji olmuştur ve kümelerin sürümlerin gerisinde kalmasının ana nedenidir.&lt;/p&gt;
&lt;p&gt;İki yeni özellik bunu değiştiriyor:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mavi-yeşil agent pool yükseltmeleri&lt;/strong&gt; yeni konfigürasyonla paralel bir node pool oluşturur. Davranışı doğrulayın, trafiği kademeli olarak kaydırın ve temiz bir geri alma yolu tutun. Üretim node&amp;rsquo;larında artık yerinde mutasyon yok.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent pool rollback&lt;/strong&gt;, bir yükseltme ters gittiğinde kümeyi yeniden oluşturmadan bir node pool&amp;rsquo;u önceki Kubernetes sürümüne ve node imajına döndürmenizi sağlar.&lt;/p&gt;
&lt;p&gt;Birlikte ele alındığında, bunlar nihayet operatörlere yükseltme yaşam döngüsü üzerinde gerçek kontrol veriyor. .NET ekipleri için bu önemlidir çünkü platform hızı, yeni runtime&amp;rsquo;ları, güvenlik yamalarını ve ağ özelliklerini ne kadar hızlı benimseyebileceğinizi doğrudan belirler.&lt;/p&gt;
&lt;h2 id="ai-iş-yükleri-birinci-sınıf-kubernetes-vatandaşı-oluyor"&gt;AI İş Yükleri Birinci Sınıf Kubernetes Vatandaşı Oluyor&lt;/h2&gt;
&lt;p&gt;Upstream açık kaynak çalışması da eşit derecede önemli. Dynamic Resource Allocation (DRA) Kubernetes 1.36&amp;rsquo;da GA&amp;rsquo;ya geçti, GPU planlamasını bir geçici çözüm yerine gerçek anlamda birinci sınıf bir özellik haline getirdi.&lt;/p&gt;
&lt;p&gt;İzlemeye değer birkaç proje:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Proje&lt;/th&gt;
&lt;th&gt;Ne Yapıyor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/kaito-project/kubeairunway"&gt;AI Runway&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Çıkarım için ortak Kubernetes API&amp;rsquo;si — K8s bilmeden model dağıtın, HuggingFace keşfi ve maliyet tahminleriyle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.cncf.io/blog/2026/01/07/holmesgpt-agentic-troubleshooting-built-for-the-cloud-native-era/"&gt;HolmesGPT&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud-native için agentic sorun giderme — artık CNCF Sandbox projesi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/project-dalec/dalec"&gt;Dalec&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;SBOM üretimiyle bildirimsel container imaj oluşturma — derleme aşamasında daha az CVE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Yön açık: .NET API&amp;rsquo;niz, Semantic Kernel orkestrasyon katmanınız ve çıkarım iş yüklerinizin hepsi tek tutarlı bir platform modelinde çalışmalı. Oraya doğru ilerliyoruz.&lt;/p&gt;
&lt;h2 id="bu-hafta-nereden-başlardım"&gt;Bu Hafta Nereden Başlardım&lt;/h2&gt;
&lt;p&gt;Bu değişiklikleri ekibiniz için değerlendiriyorsanız, işte dürüst öncelik listem:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Önce gözlemlenebilirlik&lt;/strong&gt; — üretim dışı bir kümede GPU metriklerini ve ağ akış günlüklerini etkinleştirin. Neyi kaçırdığınızı görün.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mavi-yeşil yükseltmeleri deneyin&lt;/strong&gt; — bir sonraki üretim kümesi yükseltmenizden önce rollback iş akışını test edin. Sürece güven inşa edin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kimlik farkında ağı pilot edin&lt;/strong&gt; — bir dahili servis yolu seçin ve Cilium ile mTLS&amp;rsquo;i etkinleştirin. Yükü ölçün (spoiler: minimumdur).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fleet Manager&amp;rsquo;ı değerlendirin&lt;/strong&gt; — ikiden fazla küme çalıştırıyorsanız, kümeler arası ağ azaltılan özel yapıştırıcıyla kendini amorti eder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Küçük deneyler, hızlı geri bildirim. Her zaman doğru hamle budur.&lt;/p&gt;
&lt;h2 id="son-söz"&gt;Son Söz&lt;/h2&gt;
&lt;p&gt;KubeCon duyuruları bunaltıcı olabiliyor, ancak bu grup gerçekten AKS&amp;rsquo;teki .NET ekipleri için iğneyi hareket ettiriyor. Mesh yükü olmadan daha iyi ağ güvenliği, gerçek GPU gözlemlenebilirliği, daha güvenli yükseltmeler ve daha güçlü AI altyapısı temelleri.&lt;/p&gt;
&lt;p&gt;Halihazırda AKS&amp;rsquo;teyseniz, bu operasyonel temelinizi sıkılaştırmak için harika bir an. .NET iş yüklerini Kubernetes&amp;rsquo;e taşımayı planlıyorsanız — platform önemli ölçüde daha üretim hazır hale geldi.&lt;/p&gt;</content:encoded></item><item><title>SQL MCP Server, SSMS'de Copilot ve AI Agentlı Veritabanı Hub'ı: SQLCon 2026'dan Gerçekten Önemli Olanlar</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agentic-ai-microsoft-databases-what-matters/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agentic-ai-microsoft-databases-what-matters/</guid><description>Microsoft, SQLCon 2026'da bir dizi veritabanı duyurusu yaptı. Azure SQL üzerine AI destekli uygulamalar geliştiriyorsanız gerçekten önemli olanlar burada.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agentic-ai-microsoft-databases-what-matters/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Microsoft, Atlanta&amp;rsquo;da &lt;a href="https://www.microsoft.com/en-us/sql-server/blog/2026/03/18/advancing-agentic-ai-with-microsoft-databases-across-a-unified-data-estate/"&gt;FabCon ile birlikte SQLCon 2026&amp;rsquo;yı başlattı&lt;/a&gt; ve açılacak çok şey var. Orijinal duyuru, tasarruf planlarından kurumsal uyumluluk özelliklerine kadar her şeyi kapsıyor. Kurumsal fiyatlandırma slaytlarını atlayarak, Azure SQL ve AI ile bir şeyler geliştiren bir geliştirici olarak önemli olanlara odaklanacağım.&lt;/p&gt;
&lt;h2 id="sql-mcp-server-genel-önizlemede"&gt;SQL MCP Server genel önizlemede&lt;/h2&gt;
&lt;p&gt;Bu, benim için manşet. Azure SQL Database Hyperscale artık, &lt;a href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/a&gt; kullanarak SQL verilerinizi AI agentlarına ve Copilot&amp;rsquo;lara güvenli biçimde bağlamanıza olanak tanıyan genel önizlemede bir &lt;strong&gt;SQL MCP Server&lt;/strong&gt;&amp;lsquo;a sahip.&lt;/p&gt;
&lt;p&gt;MCP dalgasını takip ediyorsanız — ve dürüst olmak gerekirse, şu anda bunu kaçırmak zor — bu büyük bir gelişme. AI agentlarınıza veritabanından bağlam sağlamak için özel veri pipeline&amp;rsquo;ları oluşturmak yerine, SQL verilerini doğrudan sergilemek için standart bir protokol elde ediyorsunuz. Agentlarınız canlı veritabanı bilgilerini sorgulayabilir, üzerinde akıl yürütebilir ve harekete geçebilir.&lt;/p&gt;
&lt;p&gt;Semantic Kernel veya Microsoft Agent Framework ile AI agentları geliştiriyoruz için bu, temiz bir entegrasyon yolu açıyor. Agentınızın envanteri kontrol etmesi mi gerekiyor? Müşteri kaydına bakması mı? Bir siparişi doğrulaması mı? MCP, her senaryo için özel veri-getirme kodu yazmadan bunu yapmanın yapılandırılmış bir yolunu sunar.&lt;/p&gt;
&lt;h2 id="ssms-22de-github-copilot-artık-gada"&gt;SSMS 22&amp;rsquo;de GitHub Copilot artık GA&amp;rsquo;da&lt;/h2&gt;
&lt;p&gt;SQL Server Management Studio&amp;rsquo;da zaman geçiriyorsanız — ve dürüst olalım, çoğumuz hâlâ geçiriyoruz — GitHub Copilot artık SSMS 22&amp;rsquo;de genel kullanım için hazır. VS Code ve Visual Studio&amp;rsquo;da zaten kullandığınız Copilot deneyiminin aynısı, ama T-SQL için.&lt;/p&gt;
&lt;p&gt;Buradaki pratik değer açık: sorgu yazma, saklı yordam yeniden düzenleme, performans sorunlarını giderme ve yönetim görevleri için sohbet tabanlı yardım. Kavram olarak devrimci bir şey yok, ama SSMS&amp;rsquo;in içinde olması, veritabanı işleriniz için AI yardımı almak üzere başka bir editöre geçmenize gerek kalmadığı anlamına gelir.&lt;/p&gt;
&lt;h2 id="vektör-indeksler-ciddi-bir-yükseltme-aldı"&gt;Vektör indeksler ciddi bir yükseltme aldı&lt;/h2&gt;
&lt;p&gt;Azure SQL Database artık tam ekleme, güncelleme ve silme desteğiyle daha hızlı, daha yetenekli vektör indekslerine sahip. Bu, vektör verilerinizin gerçek zamanlı güncel kalması anlamına gelir — toplu yeniden indeksleme gerekmez.&lt;/p&gt;
&lt;p&gt;İşte yenilikler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daha küçük indeks boyutları için fazla doğruluk kaybetmeden &lt;strong&gt;quantization (niceleme)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Daha hassas sonuçlar için &lt;strong&gt;iterative filtering (yinelemeli filtreleme)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Öngörülebilir performans için &lt;strong&gt;daha sıkı sorgu optimize edici entegrasyonu&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Azure SQL&amp;rsquo;i vektör deposu olarak kullanarak RAG (Retrieval-Augmented Generation) yapıyorsanız, bu iyileştirmeler doğrudan işe yarar. Vektörlerinizi aynı veritabanındaki ilişkisel verilerle birlikte tutabilirsiniz; bu, ayrı bir vektör veritabanı çalıştırmaya kıyasla mimarinizi önemli ölçüde basitleştirir.&lt;/p&gt;
&lt;p&gt;Aynı vektör geliştirmeleri Fabric&amp;rsquo;teki SQL veritabanında da mevcut; çünkü her ikisi de aynı SQL motoru üzerinde çalışıyor.&lt;/p&gt;
&lt;h2 id="fabricte-database-hub-ajanlı-yönetim"&gt;Fabric&amp;rsquo;te Database Hub: ajanlı yönetim&lt;/h2&gt;
&lt;p&gt;Bu daha ileriye dönük ama ilginç. Microsoft, Azure SQL, Cosmos DB, PostgreSQL, MySQL ve Arc üzerinden SQL Server genelinde tek bir cam panel sunan &lt;strong&gt;Microsoft Fabric&amp;rsquo;te Database Hub&lt;/strong&gt;&amp;lsquo;ı (erken erişim) duyurdu.&lt;/p&gt;
&lt;p&gt;İlginç taraf, yalnızca birleşik görünüm değil — yönetimin ajanlı yaklaşımı. AI agentlar veritabanı altyapınızı sürekli izler, nelerin değiştiğini öne çıkarır, neden önemli olduğunu açıklar ve ne yapılması gerektiğini önerir. Agentın ön çalışmayı yaptığı ve siz kararları aldığınız bir human-in-the-loop modelidir.&lt;/p&gt;
&lt;p&gt;Ondan fazla veritabanını yöneten ekipler için bu, operasyonel gürültüyü gerçekten azaltabilir. Portaller arasında atlayıp metrikleri manuel olarak kontrol etmek yerine, agent sinyali size getirir.&lt;/p&gt;
&lt;h2 id="net-geliştiricileri-için-ne-anlama-geliyor"&gt;.NET geliştiricileri için ne anlama geliyor&lt;/h2&gt;
&lt;p&gt;Tüm bu duyuruları birbirine bağlayan ip açık: Microsoft, veritabanı yığınının her katmanına AI agentları yerleştiriyor. Bir hile olarak değil, pratik bir araç katmanı olarak.&lt;/p&gt;
&lt;p&gt;Azure SQL tarafından desteklenen .NET uygulamaları geliştiriyorsanız, gerçekten yapacaklarım şunlar:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI agentları geliştiriyorsanız &lt;strong&gt;SQL MCP Server&amp;rsquo;ı deneyin&lt;/strong&gt;. Agentlarınıza özel bağlantı kodu olmadan veritabanı erişimi vermenin en temiz yolu.&lt;/li&gt;
&lt;li&gt;Henüz yapmadıysanız &lt;strong&gt;SSMS&amp;rsquo;de Copilot&amp;rsquo;u etkinleştirin&lt;/strong&gt; — günlük SQL çalışması için ücretsiz üretkenlik kazanımı.&lt;/li&gt;
&lt;li&gt;RAG yapıyorsanız ve şu anda ayrı bir vektör deposu çalıştırıyorsanız &lt;strong&gt;vektör indekslerine bakın&lt;/strong&gt;. Azure SQL&amp;rsquo;de birleştirmek, yönetilecek bir servis daha az demek.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Tam duyuruda daha fazlası var — tasarruf planları, geçiş asistanları, uyumluluk özellikleri — ancak geliştirici hikayesi MCP Server&amp;rsquo;da, vektör iyileştirmelerinde ve ajanlı yönetim katmanında. Bunlar, bütçenizi değil, oluşturduğunuz şeyleri değiştiren parçalar.&lt;/p&gt;
&lt;p&gt;Tam tablo için &lt;a href="https://www.microsoft.com/en-us/sql-server/blog/2026/03/18/advancing-agentic-ai-with-microsoft-databases-across-a-unified-data-estate/"&gt;Shireesh Thota&amp;rsquo;nın tam duyurusuna&lt;/a&gt; göz atın; yeni yönetim deneyimini denemek istiyorsanız &lt;a href="https://aka.ms/database-hub"&gt;Database Hub erken erişimine kaydolun&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Geliştiricilerinin VS Code 1.112'de Gerçekten Önemsemesi Gerekenler</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-112-dotnet-developers/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-112-dotnet-developers/</guid><description>VS Code 1.112 yayınlandı ve agent yükseltmeleri, entegre bir tarayıcı hata ayıklayıcı, MCP korumalı alan ve monorepo desteğiyle dolu. .NET ile geliştirme yapıyorsanız gerçekten önemli olan şeyler burada.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/vscode-1-112-dotnet-developers/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.112 yayınlandı ve dürüstçe söylemek gerekirse? .NET dünyasında gününüzü geçiriyorsanız bu sürüm farklı bir his veriyor. &lt;a href="https://code.visualstudio.com/updates/v1_112"&gt;Resmi sürüm notlarında&lt;/a&gt; pek çok şey var, ama sizi biraz kaydırmadan kurtarayım ve gerçekten bizim için önemli olanlara odaklanayım.&lt;/p&gt;
&lt;h2 id="copilot-cli-çok-daha-kullanışlı-hale-geldi"&gt;Copilot CLI çok daha kullanışlı hale geldi&lt;/h2&gt;
&lt;p&gt;Bu sürümün büyük teması &lt;strong&gt;agent özerkliği&lt;/strong&gt; — Copilot&amp;rsquo;a her adımı siz denetlemeden işini yapması için daha fazla alan tanıma.&lt;/p&gt;
&lt;h3 id="mesaj-yönlendirme-ve-sıralama"&gt;Mesaj yönlendirme ve sıralama&lt;/h3&gt;
&lt;p&gt;Copilot CLI bir görevin ortasındayken bir şeyi söylemeyi unuttuğunuzu fark ettiğiniz o anı bilirsiniz. Önce beklemeniz gerekiyordu. Artık bir istek hâlâ çalışırken mesaj gönderebilirsiniz — ya mevcut yanıtı yönlendirmek ya da takip talimatlarını sıraya almak için.&lt;/p&gt;
&lt;p&gt;Bu, Copilot&amp;rsquo;un bir proje kurduğunu izlerken &amp;ldquo;ah, buna MassTransit de eklemeliyim&amp;rdquo; dediğiniz uzun &lt;code&gt;dotnet&lt;/code&gt; iskele görevleri için çok önemli.&lt;/p&gt;
&lt;h3 id="izin-seviyeleri"&gt;İzin seviyeleri&lt;/h3&gt;
&lt;p&gt;En çok heyecanlandığım bu. Copilot CLI oturumları artık üç izin seviyesini destekliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default Permissions&lt;/strong&gt; — araçların çalışmadan önce onay istediği olağan akış&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass Approvals&lt;/strong&gt; — her şeyi otomatik onaylar ve hatalarda yeniden dener&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — tamamen özerk: araçları onaylar, kendi sorularını yanıtlar ve görev tamamlanana kadar devam eder&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entity Framework ile migrasyonlar, Docker kurulumu ve yeni bir ASP.NET Core API&amp;rsquo;si oluşturuyorsanız — Autopilot modu demek istediğinizi tanımlayıp kahve almaya gidebilirsiniz demek. Gerisini halledecek.&lt;/p&gt;
&lt;p&gt;Autopilot&amp;rsquo;u &lt;code&gt;chat.autopilot.enabled&lt;/code&gt; ayarıyla etkinleştirebilirsiniz.&lt;/p&gt;
&lt;h3 id="devretmeden-önce-değişiklikleri-önizleyin"&gt;Devretmeden önce değişiklikleri önizleyin&lt;/h3&gt;
&lt;p&gt;Copilot CLI&amp;rsquo;a bir görev devrettiğinizde bir worktree oluşturur. Daha önce, teslim edilmemiş değişiklikleriniz varsa nelerin etkileneceğini görmek için Source Control&amp;rsquo;ü kontrol etmeniz gerekiyordu. Artık Chat görünümü, kopyalamak, taşımak veya yoksaymak isteyip istemediğinize karar vermeden önce bekleyen değişiklikleri doğrudan orada gösteriyor.&lt;/p&gt;
&lt;p&gt;Küçük bir şey, ama &amp;ldquo;dur, ne hazırlamıştım?&amp;rdquo; anından kurtarıyor.&lt;/p&gt;
&lt;h2 id="vs-codedan-çıkmadan-web-uygulamalarını-hata-ayıklayın"&gt;VS Code&amp;rsquo;dan çıkmadan web uygulamalarını hata ayıklayın&lt;/h2&gt;
&lt;p&gt;Entegre tarayıcı artık &lt;strong&gt;tam hata ayıklamayı&lt;/strong&gt; destekliyor. Kesme noktaları koyabilir, kod üzerinde adım adım ilerleyebilir ve değişkenleri inceleyebilirsiniz — hepsi VS Code içinde. Artık Edge DevTools&amp;rsquo;a geçiş yok.&lt;/p&gt;
&lt;p&gt;Yeni bir &lt;code&gt;editor-browser&lt;/code&gt; hata ayıklama türü var ve mevcut &lt;code&gt;msedge&lt;/code&gt; veya &lt;code&gt;chrome&lt;/code&gt; başlatma yapılandırmalarınız varsa, geçiş &lt;code&gt;launch.json&lt;/code&gt;&amp;lsquo;daki &lt;code&gt;type&lt;/code&gt; alanını değiştirmek kadar basit:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&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="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;editor-browser&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="nt"&gt;&amp;#34;request&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;launch&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="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Debug Blazor App&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="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://localhost:5001&amp;#34;&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;p&gt;Blazor geliştiricileri için bu oyun değiştirici. Terminalde zaten &lt;code&gt;dotnet watch&lt;/code&gt; çalıştırıyorsunuz — artık hata ayıklamanız da aynı pencerede kalıyor.&lt;/p&gt;
&lt;p&gt;Tarayıcı aynı zamanda bağımsız yakınlaştırma seviyeleri (sonunda!), düzgün sağ tıklama bağlam menüleri aldı ve yakınlaştırma web sitesi başına hatırlanıyor.&lt;/p&gt;
&lt;h2 id="mcp-sunucu-korumalı-alanı"&gt;MCP sunucu korumalı alanı&lt;/h2&gt;
&lt;p&gt;Bu, düşündüğünüzden daha önemli. MCP sunucuları kullanıyorsanız — belki Azure kaynaklarınız veya veritabanı sorguları için özel bir tane kurduysanız — bunlar VS Code sürecinizle aynı izinlerle çalışıyordu. Yani dosya sisteminize, ağınıza, her şeye tam erişim.&lt;/p&gt;
&lt;p&gt;Artık onları korumalı alana alabilirsiniz. &lt;code&gt;mcp.json&lt;/code&gt; dosyanızda:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&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="nt"&gt;&amp;#34;servers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="nt"&gt;&amp;#34;my-azure-tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;node&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="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./mcp-server.js&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="nt"&gt;&amp;#34;sandboxEnabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="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;p&gt;Korumalı alandaki bir sunucu sahip olmadığı bir şeye erişim gerektirdiğinde, VS Code izin vermeniz için sizi uyarıyor. &amp;ldquo;Kimse garip bir şey yapmasın&amp;rdquo; yaklaşımından çok daha iyi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Not:&lt;/strong&gt; Korumalı alan şimdilik macOS ve Linux&amp;rsquo;ta kullanılabilir. Windows desteği geliyor — WSL gibi uzak senaryolar çalışıyor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="monorepo-özelleştirme-keşfi"&gt;Monorepo özelleştirme keşfi&lt;/h2&gt;
&lt;p&gt;Bir monorepo&amp;rsquo;da çalışıyorsanız (ve dürüstçe söylemek gerekirse, pek çok kurumsal .NET çözümü buna dönüşüyor), bu gerçek bir sorun noktasını çözüyor.&lt;/p&gt;
&lt;p&gt;Daha önce, reponuzun bir alt klasörünü açtığınızda VS Code, depo kökünüzdeki &lt;code&gt;copilot-instructions.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt; veya özel becerileri bulamıyordu. Artık &lt;code&gt;chat.useCustomizationsInParentRepositories&lt;/code&gt; ayarıyla &lt;code&gt;.git&lt;/code&gt; köküne kadar yukarı çıkıp her şeyi buluyor.&lt;/p&gt;
&lt;p&gt;Bu, ekibinizin tüm monorepo projelerine herkesin kök klasörü açmasına gerek kalmadan agent talimatlarını, prompt dosyalarını ve özel araçları paylaşabilmesi anlamına geliyor.&lt;/p&gt;
&lt;h2 id="agent-hata-ayıklama-için-troubleshoot"&gt;Agent hata ayıklama için /troubleshoot&lt;/h2&gt;
&lt;p&gt;Özel talimatlar veya beceriler ayarlayıp neden alınmadığını hiç merak ettiniz mi? Yeni &lt;code&gt;/troubleshoot&lt;/code&gt; becerisi agent hata ayıklama günlüklerini okuyup ne olduğunu söylüyor — hangi araçların kullanıldığı veya atlandığı, neden talimatların yüklenmediği ve yavaş yanıtlara neyin yol açtığı.&lt;/p&gt;
&lt;p&gt;Bunu şununla etkinleştirin:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&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="nt"&gt;&amp;#34;github.copilot.chat.agentDebugLog.enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="nt"&gt;&amp;#34;github.copilot.chat.agentDebugLog.fileLogging.enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;p&gt;Ardından sohbette &lt;code&gt;/troubleshoot neden özel beceri yüklenmiyor?&lt;/code&gt; yazın.&lt;/p&gt;
&lt;p&gt;Bu hata ayıklama günlüklerini artık dışa ve içe aktarabilirsiniz; bir şey beklendiği gibi çalışmadığında ekibinizle paylaşmak için harika.&lt;/p&gt;
&lt;h2 id="resim-ve-ikili-dosya-desteği"&gt;Resim ve ikili dosya desteği&lt;/h2&gt;
&lt;p&gt;Agentlar artık diskten resim dosyalarını ve ikili dosyaları doğrudan okuyabiliyor. İkili dosyalar hexdump formatında sunuluyor ve resim çıktıları (entegre tarayıcıdan alınan ekran görüntüleri gibi) bir carousel görünümünde gösteriliyor.&lt;/p&gt;
&lt;p&gt;.NET geliştiricileri için düşünün: bir UI hatasının ekran görüntüsünü sohbete yapıştırın ve agent neyin yanlış olduğunu anlasın, ya da Blazor bileşeni render çıktısını analiz ettirin.&lt;/p&gt;
&lt;h2 id="otomatik-sembol-referansları"&gt;Otomatik sembol referansları&lt;/h2&gt;
&lt;p&gt;Küçük bir yaşam kalitesi iyileştirmesi: bir sembol adını (bir sınıf, metot vb.) kopyalayıp sohbete yapıştırdığınızda VS Code artık otomatik olarak &lt;code&gt;#sym:İsim&lt;/code&gt; referansına dönüştürüyor. Bu, agent&amp;rsquo;a manuel olarak eklemek zorunda kalmadan bu sembol hakkında tam bağlam sağlıyor.&lt;/p&gt;
&lt;p&gt;Bunun yerine düz metin istiyorsanız &lt;code&gt;Ctrl+Shift+V&lt;/code&gt; kullanın.&lt;/p&gt;
&lt;h2 id="eklentiler-artık-etkinleştirilebilirdevre-dışı-bırakılabilir"&gt;Eklentiler artık etkinleştirilebilir/devre dışı bırakılabilir&lt;/h2&gt;
&lt;p&gt;Daha önce bir MCP sunucusunu veya eklentiyi devre dışı bırakmak kaldırmak anlamına geliyordu. Artık hem genel hem de çalışma alanı başına açıp kapatabilirsiniz. Extensions görünümünde veya Customizations görünümünde sağ tıklayın ve işiniz bitti.&lt;/p&gt;
&lt;p&gt;npm ve pypi&amp;rsquo;den eklentiler artık otomatik güncellenebilir; ancak güncellemeler makinenizde yeni kod çalıştırmak anlamına geldiğinden önce onay isteyecekler.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;VS Code 1.112, agent deneyimini açıkça ileriye taşıyor — daha fazla özerklik, daha iyi hata ayıklama, daha sıkı güvenlik. .NET geliştiricileri için entegre tarayıcı hata ayıklama ve Copilot CLI iyileştirmeleri öne çıkan özellikler.&lt;/p&gt;
&lt;p&gt;Bir .NET projesi için tam Copilot CLI oturumu Autopilot modunda henüz denemediyseniz bu sürüm başlamak için iyi bir zaman. Sadece izinlerinizi ayarlamayı ve bırakıp gidermeyi unutmayın.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.visualstudio.com/updates/v1_112"&gt;VS Code 1.112&amp;rsquo;yi indirin&lt;/a&gt; veya &lt;strong&gt;Help &amp;gt; Check for Updates&lt;/strong&gt; aracılığıyla VS Code içinden güncelleyin.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps MCP Server Microsoft Foundry'ye Geldi: AI Agent'larınız İçin Ne Anlama Geliyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-devops-mcp-server-microsoft-foundry/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-devops-mcp-server-microsoft-foundry/</guid><description>Azure DevOps MCP Server artık Microsoft Foundry'de mevcut. AI agent'larınızı birkaç tıklamayla DevOps iş akışlarına — iş öğeleri, repolar, pipeline'lar — doğrudan bağlayın.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-devops-mcp-server-microsoft-foundry/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;MCP (Model Context Protocol) son dönemde çok konuşuluyor. AI agent ekosistemine dikkat ettiyseniz, MCP server&amp;rsquo;ların her yerde belirdiğini fark etmişsinizdir — agent&amp;rsquo;lara standart bir protokol üzerinden harici araçlar ve servislerle etkileşim kurma yeteneği kazandırıyorlar.&lt;/p&gt;
&lt;p&gt;Artık &lt;a href="https://devblogs.microsoft.com/devops/remote-mcp-server-preview-in-microsoft-foundry/"&gt;Azure DevOps MCP Server Microsoft Foundry&amp;rsquo;de mevcut&lt;/a&gt; ve bu, pratik olasılıklar üzerine düşündüren entegrasyonlardan biri.&lt;/p&gt;
&lt;h2 id="aslında-ne-oluyor"&gt;Aslında ne oluyor&lt;/h2&gt;
&lt;p&gt;Microsoft, Azure DevOps MCP Server&amp;rsquo;ı &lt;a href="https://devblogs.microsoft.com/devops/azure-devops-remote-mcp-server-public-preview"&gt;genel önizleme&lt;/a&gt; olarak zaten yayınlamıştı — bu MCP server&amp;rsquo;ın kendisi. Yeni olan şey ise Foundry entegrasyonu. Artık Azure DevOps MCP Server&amp;rsquo;ı araç kataloğundan doğrudan Foundry agent&amp;rsquo;larınıza ekleyebilirsiniz.&lt;/p&gt;
&lt;p&gt;Foundry&amp;rsquo;ye henüz aşina olmayanlar için: Microsoft&amp;rsquo;un AI destekli uygulama ve agent&amp;rsquo;ları ölçekli şekilde oluşturma ve yönetme için birleşik platformu. Model erişimi, orkestrasyon, değerlendirme, dağıtım — hepsi tek bir yerde.&lt;/p&gt;
&lt;h2 id="kurulum"&gt;Kurulum&lt;/h2&gt;
&lt;p&gt;Kurulum şaşırtıcı derecede basit:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Foundry agent&amp;rsquo;ınızda &lt;strong&gt;Add Tools&lt;/strong&gt; &amp;gt; &lt;strong&gt;Catalog&lt;/strong&gt; bölümüne gidin&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Azure DevOps&amp;rdquo; arayın&lt;/li&gt;
&lt;li&gt;Azure DevOps MCP Server (önizleme) seçin ve &lt;strong&gt;Create&lt;/strong&gt; tıklayın&lt;/li&gt;
&lt;li&gt;Organizasyon adınızı girin ve bağlanın&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hepsi bu. Agent&amp;rsquo;ınız artık Azure DevOps araçlarına erişebilir.&lt;/p&gt;
&lt;h2 id="agentınızın-nelere-erişeceğini-kontrol-etme"&gt;Agent&amp;rsquo;ınızın nelere erişeceğini kontrol etme&lt;/h2&gt;
&lt;p&gt;Takdir ettiğim kısım şu: ya hep ya hiç yaklaşımına mahkum değilsiniz. Agent&amp;rsquo;ınıza hangi araçların sunulacağını belirtebilirsiniz. Yalnızca iş öğelerini okusun ama pipeline&amp;rsquo;lara dokunmasın istiyorsanız bunu yapılandırabilirsiniz. En az ayrıcalık ilkesi, AI agent&amp;rsquo;larınıza uygulanmış hali.&lt;/p&gt;
&lt;p&gt;Bu, birinin &amp;ldquo;sürümle ilgili yardım et&amp;rdquo; demesi üzerine agent&amp;rsquo;ın kazara bir dağıtım pipeline&amp;rsquo;ını tetiklemesini istemediğiniz kurumsal senaryolarda önem taşıyor.&lt;/p&gt;
&lt;h2 id="bu-net-ekipleri-için-neden-ilginç"&gt;Bu .NET ekipleri için neden ilginç&lt;/h2&gt;
&lt;p&gt;Pratikte neleri mümkün kıldığını düşünün:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sprint planlama asistanları&lt;/strong&gt; — iş öğelerini çekebilen, hız verilerini analiz edebilen ve sprint kapasitesi önerebilen agent&amp;rsquo;lar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kod inceleme botları&lt;/strong&gt; — repolarınızı ve bağlantılı iş öğelerinizi gerçekten okuyabildikleri için PR bağlamınızı anlayan agent&amp;rsquo;lar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olay müdahalesi&lt;/strong&gt; — iş öğesi oluşturabilen, son dağıtımları sorgulayabilen ve hataları son değişikliklerle ilişkilendirebilen agent&amp;rsquo;lar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geliştirici onboarding&amp;rsquo;i&lt;/strong&gt; — &amp;ldquo;Ne üzerinde çalışmalıyım?&amp;rdquo; sorusuna gerçek proje verileriyle desteklenmiş gerçek bir yanıt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CI/CD pipeline&amp;rsquo;ları ve proje yönetimi için Azure DevOps&amp;rsquo;u zaten kullanan .NET ekipleri için, bir AI agent&amp;rsquo;ının bu sistemlerle doğrudan etkileşim kurabilmesi, yararlı otomasyona doğru önemli bir adım (sıradan chatbot-as-a-service değil).&lt;/p&gt;
&lt;h2 id="daha-geniş-mcp-resmi"&gt;Daha geniş MCP resmi&lt;/h2&gt;
&lt;p&gt;Bu, daha geniş bir trendin parçası: MCP server&amp;rsquo;lar, AI agent&amp;rsquo;larının dış dünyayla etkileşim kurmasının standart yolu haline geliyor. GitHub, Azure DevOps, veritabanları, SaaS API&amp;rsquo;leri için MCP server&amp;rsquo;lar görüyoruz — ve Foundry, tüm bu bağlantıların bir araya geldiği merkez haline geliyor.&lt;/p&gt;
&lt;p&gt;.NET ekosisteminde agent geliştiriyorsanız MCP&amp;rsquo;ye dikkat etmeye değer. Protokol standartlaşmış, araç kitleri olgunlaşıyor ve Foundry entegrasyonu, server bağlantılarını manuel olarak kurmak zorunda kalmadan erişilebilir hale getiriyor.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Foundry&amp;rsquo;deki Azure DevOps MCP Server önizleme aşamasında, bu yüzden gelişmeye devam etmesini bekleyin. Ancak temel iş akışı sağlam: bağlanın, araç erişimini yapılandırın ve agent&amp;rsquo;larınızın DevOps verilerinizle çalışmasına izin verin. Zaten Foundry ekosistemindeyseniz, birkaç tıklama uzaktasınız. Bir deneyin ve hangi iş akışlarını oluşturabileceğinizi görün.&lt;/p&gt;
&lt;p&gt;Adım adım kurulum ve daha fazla ayrıntı için &lt;a href="https://devblogs.microsoft.com/devops/remote-mcp-server-preview-in-microsoft-foundry/"&gt;tam duyuruya&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>Dizüstü Bilgisayardan Üretime: İki Komutla AI Agent'larını Microsoft Foundry'ye Dağıtma</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>Azure Developer CLI artık 'azd ai agent' komutlarına sahip; bu komutlar AI agent'ınızı yerel geliştirmeden canlı bir Foundry endpoint'ine dakikalar içinde taşıyor. İşte tam iş akışı.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;Makinemde çalışıyor&amp;rdquo; ile &amp;ldquo;dağıtıldı ve trafik sunuyor&amp;rdquo; arasındaki o boşluğu bilirsiniz? AI agent&amp;rsquo;ları için bu boşluk acı verici derecede geniş oldu. Kaynak sağlamanız, modelleri dağıtmanız, kimliği bağlamanız, izlemeyi kurmanız gerekiyor — ve bütün bunlar herhangi biri agent&amp;rsquo;ınızı çağırabilmeden önce.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI bunu &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;iki komutluk bir iş&lt;/a&gt; haline getirdi.&lt;/p&gt;
&lt;h2 id="yeni-azd-ai-agent-iş-akışı"&gt;Yeni &lt;code&gt;azd ai agent&lt;/code&gt; iş akışı&lt;/h2&gt;
&lt;p&gt;Bunun gerçekte nasıl göründüğünü anlatalım. Bir AI agent projeniz var — diyelim ki bir otel danışman agent&amp;rsquo;ı. Yerel olarak çalışıyor. Microsoft Foundry üzerinde çalışmasını istiyorsunuz.&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;azd ai agent init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hepsi bu. İki komut. &lt;code&gt;azd ai agent init&lt;/code&gt;, reponuzda altyapı-kod olarak iskele oluşturur ve &lt;code&gt;azd up&lt;/code&gt; her şeyi Azure&amp;rsquo;da sağlayıp agent&amp;rsquo;ınızı yayımlar. Foundry portalında agent&amp;rsquo;ınıza doğrudan bir bağlantı alırsınız.&lt;/p&gt;
&lt;h2 id="arka-planda-ne-oluyor"&gt;Arka planda ne oluyor&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;init&lt;/code&gt; komutu reponuzda gerçek, incelenebilir Bicep şablonları oluşturuyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bir &lt;strong&gt;Foundry Kaynağı&lt;/strong&gt; (üst düzey kapsayıcı)&lt;/li&gt;
&lt;li&gt;Bir &lt;strong&gt;Foundry Projesi&lt;/strong&gt; (agent&amp;rsquo;ınızın bulunduğu yer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model dağıtımı&lt;/strong&gt; yapılandırması (GPT-4o vb.)&lt;/li&gt;
&lt;li&gt;Uygun RBAC rol atamalarıyla &lt;strong&gt;Yönetilen kimlik&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Servis haritası için &lt;code&gt;azure.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Agent meta verileri ve ortam değişkenleriyle &lt;code&gt;agent.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;İşte kilit nokta: bunların hepsi size ait. Reponuzda sürümlendirilmiş Bicep. İnceleyebilir, özelleştirebilir ve agent kodunuzun yanı sıra commit edebilirsiniz. Sihirli kara kutular yok.&lt;/p&gt;
&lt;h2 id="geliştirme-döngüsü"&gt;Geliştirme döngüsü&lt;/h2&gt;
&lt;p&gt;Gerçekten beğendiğim şey yerel geliştirme hikayesi. Agent mantığını geliştirirken, her prompt değişikliğinde yeniden dağıtmak istemezsiniz:&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;azd ai agent run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bu, agent&amp;rsquo;ınızı yerel olarak başlatır. Bunu test promptları göndermek için &lt;code&gt;azd ai agent invoke&lt;/code&gt; ile eşleştirin, sıkı bir geri bildirim döngüsü elde edersiniz. Kodu düzenleyin, yeniden başlatın, çağırın, tekrarlayın.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;invoke&lt;/code&gt; komutu yönlendirme konusunda da akıllı — yerel bir agent çalışırken otomatik olarak onu hedefler. Çalışmıyorken uzak endpoint&amp;rsquo;e isabet eder.&lt;/p&gt;
&lt;h2 id="gerçek-zamanlı-izleme"&gt;Gerçek zamanlı izleme&lt;/h2&gt;
&lt;p&gt;Bu beni ikna eden özellik. Agent&amp;rsquo;ınız dağıtıldığında:&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;azd ai agent monitor --follow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Agent&amp;rsquo;ınızdan geçen her istek ve yanıt gerçek zamanlı olarak terminalinize akıyor. Üretim sorunlarını hata ayıklamak için bu paha biçilmez. Log analitiğini karıştırmak yok, metriklerin toplanmasını beklemek yok — şu an ne olduğunu görüyorsunuz.&lt;/p&gt;
&lt;h2 id="tam-komut-seti"&gt;Tam komut seti&lt;/h2&gt;
&lt;p&gt;İşte hızlı referans:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komut&lt;/th&gt;
&lt;th&gt;Ne yapıyor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IaC ile bir Foundry agent projesi iskele oluşturur&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd up&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Azure kaynaklarını sağlar ve agent&amp;rsquo;ı dağıtır&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Uzak veya yerel agent&amp;rsquo;a prompt gönderir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Geliştirme için agent&amp;rsquo;ı yerel olarak çalıştırır&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yayımlanan agent&amp;rsquo;dan gerçek zamanlı logları akıtır&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent show&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Agent sağlığını ve durumunu kontrol eder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd down&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tüm Azure kaynaklarını temizler&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="net-geliştiricileri-için-neden-önemli"&gt;.NET geliştiricileri için neden önemli&lt;/h2&gt;
&lt;p&gt;Duyuruda örnek Python tabanlı olsa da, altyapı hikayesi dilden bağımsız. .NET agent&amp;rsquo;ınız aynı Bicep iskeleleme, aynı yönetilen kimlik kurulumu, aynı izleme pipeline&amp;rsquo;ı alıyor. .NET Aspire uygulamalarınız veya Azure dağıtımları için zaten &lt;code&gt;azd&lt;/code&gt; kullanıyorsanız, bu mevcut iş akışınıza tam oturuyor.&lt;/p&gt;
&lt;p&gt;AI agent&amp;rsquo;ları için dağıtım boşluğu, ekosistemdeki en büyük sürtüşme noktalarından biri oldu. Çalışan bir prototipi uygun kimlik, ağ ve izlemeyle bir üretim endpoint&amp;rsquo;ine götürmek bir haftalık DevOps çalışması gerektirmemeli. Artık iki komut ve birkaç dakika gerektiriyor.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd ai agent&lt;/code&gt; şu an mevcut. AI agent&amp;rsquo;larınızı dağıtmayı erteliyorsanız çünkü altyapı kurulumu çok fazla iş gibi geliyordu, bunu bir deneyin. Ön uç sohbet uygulaması entegrasyonu dahil adım adım tam kılavuz için &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;tam anlatıma&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>Foundry Agent Service GA'ya Geçti: .NET Agent Geliştiricileri İçin Gerçekten Önemli Olan Nedir?</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agent-service-ga-what-matters/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agent-service-ga-what-matters/</guid><description>Microsoft'un Foundry Agent Service'i özel ağ desteği, Voice Live, üretim değerlendirmeleri ve açık çok modelli runtime ile GA'ya geçti. İşte bilmeniz gerekenler.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/foundry-agent-service-ga-what-matters/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kabul edelim — bir AI agent prototipi oluşturmak kolay kısım. Zor olan ise sonrasındaki her şey: uygun ağ izolasyonuyla üretime almak, gerçekten anlamlı değerlendirmeler yapmak, uyumluluk gereksinimlerini karşılamak ve gece 2&amp;rsquo;de her şeyin çökmemesini sağlamak.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/foundry/foundry-agent-service-ga/"&gt;Foundry Agent Service az önce GA&amp;rsquo;ya geçti&lt;/a&gt; ve bu sürüm tam da bu &amp;ldquo;sonrasındaki her şey&amp;rdquo; boşluğuna odaklanıyor.&lt;/p&gt;
&lt;h2 id="responses-api-üzerine-inşa-edildi"&gt;Responses API Üzerine İnşa Edildi&lt;/h2&gt;
&lt;p&gt;İşte manşet haber: yeni nesil Foundry Agent Service, OpenAI Responses API üzerine kurulu. Eğer bu wire protokolüyle zaten geliştirme yapıyorsanız, Foundry&amp;rsquo;ye geçiş minimal kod değişikliği gerektiriyor. Kazandıklarınız: kurumsal güvenlik, özel ağ desteği, Entra RBAC, tam izleme ve değerlendirme — mevcut agent mantığınızın üstüne.&lt;/p&gt;
&lt;p&gt;Mimari kasıtlı olarak açık tasarlanmış. Tek bir model sağlayıcısına veya tek bir orkestrasyon framework&amp;rsquo;üne bağlı değilsiniz. Planlama için DeepSeek, üretim için OpenAI, orkestrasyon için LangGraph kullanabilirsiniz — runtime tutarlılık katmanını halleder.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PromptAgentDefinition&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="k"&gt;with&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;DefaultAzureCredential&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;credential&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;AIProjectClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AZURE_AI_PROJECT_ENDPOINT&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;credential&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;project_client&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;project_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_openai_client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;openai_client&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;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;project_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_version&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;agent_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;my-enterprise-agent&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;definition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PromptAgentDefinition&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;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AZURE_AI_MODEL_DEPLOYMENT_NAME&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;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&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="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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conversations&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&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="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;What are best practices for building AI agents?&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;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&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="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&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="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output_text&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;blockquote&gt;
&lt;p&gt;&lt;code&gt;azure-ai-agents&lt;/code&gt; paketinden geliyorsanız, agent&amp;rsquo;lar artık &lt;code&gt;azure-ai-projects&lt;/code&gt; içindeki &lt;code&gt;AIProjectClient&lt;/code&gt; üzerinde birinci sınıf operasyonlar. Bağımsız paketi bırakın ve response&amp;rsquo;ları yönetmek için &lt;code&gt;get_openai_client()&lt;/code&gt; kullanın.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="özel-ağ-desteği-kurumsal-engel-kaldırıldı"&gt;Özel Ağ Desteği: Kurumsal Engel Kaldırıldı&lt;/h2&gt;
&lt;p&gt;Bu, kurumsal benimsemeyi engelleyen sorunu ortadan kaldıran özelliktir. Foundry artık BYO VNet ile uçtan uca tam özel ağ desteği sunuyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Genel çıkış yok&lt;/strong&gt; — agent trafiği hiçbir zaman genel internete çıkmıyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container/alt ağ enjeksiyonu&lt;/strong&gt; yerel iletişim için ağınıza entegre ediliyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Araç bağlantısı dahil&lt;/strong&gt; — MCP server&amp;rsquo;lar, Azure AI Search, Fabric data agent&amp;rsquo;ları hepsi özel yollar üzerinden çalışıyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Son nokta kritik. Yalnızca çıkarım çağrıları değil, her araç çağrısı ve her veri alma işlemi de ağ sınırınızın içinde kalıyor. Dışarıya yönlendirmeyi yasaklayan veri sınıflandırma politikaları altında çalışan ekipler için işte bu eksik olan parçaydı.&lt;/p&gt;
&lt;h2 id="doğru-yapılmış-mcp-kimlik-doğrulaması"&gt;Doğru Yapılmış MCP Kimlik Doğrulaması&lt;/h2&gt;
&lt;p&gt;MCP server bağlantıları artık tüm auth pattern yelpazesini destekliyor:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Auth Yöntemi&lt;/th&gt;
&lt;th&gt;Ne Zaman Kullanılır&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Key tabanlı&lt;/td&gt;
&lt;td&gt;Kurum geneli dahili araçlar için basit paylaşımlı erişim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entra Agent Identity&lt;/td&gt;
&lt;td&gt;Servisten servise; agent kendisi olarak kimlik doğrular&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entra Managed Identity&lt;/td&gt;
&lt;td&gt;Proje bazında izolasyon; kimlik bilgisi yönetimi yok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OAuth Identity Passthrough&lt;/td&gt;
&lt;td&gt;Kullanıcı delegeli erişim; agent kullanıcılar adına hareket eder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OAuth Identity Passthrough ilginç olan. Kullanıcıların bir agent&amp;rsquo;a kişisel verilerine — OneDrive&amp;rsquo;larına, Salesforce organizasyonlarına, kullanıcı kapsamlı bir SaaS API&amp;rsquo;sine — erişim vermesi gerektiğinde, agent standart OAuth akışlarıyla onlar adına hareket eder. Herkesi temsil etmeye çalışan paylaşımlı bir sistem kimliği yok.&lt;/p&gt;
&lt;h2 id="voice-live-tesisatla-uğraşmadan-konuşmadan-konuşmaya"&gt;Voice Live: Tesisatla Uğraşmadan Konuşmadan Konuşmaya&lt;/h2&gt;
&lt;p&gt;Bir agent&amp;rsquo;a ses eklemek eskiden STT, LLM ve TTS&amp;rsquo;i bir araya getirmek anlamına geliyordu — üç servis, üç gecikme adımı, üç faturalama yüzeyi, hepsi elle senkronize. &lt;strong&gt;Voice Live&lt;/strong&gt; bunu tek bir yönetilen API&amp;rsquo;ye indirgiyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Semantik ses aktivitesi ve konuşma sonu algılama (anlamı anlıyor, sadece sessizliği değil)&lt;/li&gt;
&lt;li&gt;Sunucu taraflı gürültü bastırma ve yankı giderme&lt;/li&gt;
&lt;li&gt;Araya girme desteği (kullanıcılar yanıt ortasında sözü kesebilir)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ses etkileşimleri, metinle aynı agent runtime&amp;rsquo;ından geçiyor. Aynı değerlendiriciler, aynı izler, aynı maliyet görünürlüğü. Müşteri desteği, saha hizmeti veya erişilebilirlik senaryoları için bu, daha önce özel bir ses pipeline&amp;rsquo;ı gerektiren şeyin yerini alıyor.&lt;/p&gt;
&lt;h2 id="değerlendirmeler-onay-kutusundan-sürekli-izlemeye"&gt;Değerlendirmeler: Onay Kutusundan Sürekli İzlemeye&lt;/h2&gt;
&lt;p&gt;Foundry&amp;rsquo;nin üretim kalitesi konusunda ciddiye geldiği yer burası. Değerlendirme sistemi artık üç katmana sahip:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hazır değerlendiriciler&lt;/strong&gt; — tutarlılık, alaka, temellendirilme, erişim kalitesi, güvenlik. Bir veri kümesine veya canlı trafiğe bağlayın, puanları geri alın.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Özel değerlendiriciler&lt;/strong&gt; — kendi iş mantığınızı, ton standartlarınızı ve alana özgü uyumluluk kurallarınızı kodlayın.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sürekli değerlendirme&lt;/strong&gt; — Foundry canlı üretim trafiğini örnekliyor, değerlendirici paketinizi çalıştırıyor ve sonuçları dashboard&amp;rsquo;lar aracılığıyla sunuyor. Temellendirilme düştüğünde veya güvenlik eşikleri aşıldığında Azure Monitor uyarıları ayarlayın.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Her şey Azure Monitor Application Insights&amp;rsquo;a yayımlanıyor. Agent kalitesi, altyapı sağlığı, maliyet ve uygulama telemetrisi — hepsi tek bir yerde.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;eval_object&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;evals&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&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="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Agent Quality Evaluation&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;data_source_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DataSourceConfigCustom&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="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;custom&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;item_schema&lt;/span&gt;&lt;span class="o"&gt;=&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;object&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="s2"&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;string&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="s2"&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;query&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;include_sample_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&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;testing_criteria&lt;/span&gt;&lt;span class="o"&gt;=&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;azure_ai_evaluator&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="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;fluency&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="s2"&gt;&amp;#34;evaluator_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;builtin.fluency&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="s2"&gt;&amp;#34;initialization_parameters&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="s2"&gt;&amp;#34;deployment_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AZURE_AI_MODEL_DEPLOYMENT_NAME&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="s2"&gt;&amp;#34;data_mapping&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&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="s2"&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;{{item.query}}&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="s2"&gt;&amp;#34;response&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;{{sample.output_text}}&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="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="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="barındırılan-agentlar-için-altı-yeni-bölge"&gt;Barındırılan Agent&amp;rsquo;lar İçin Altı Yeni Bölge&lt;/h2&gt;
&lt;p&gt;Barındırılan agent&amp;rsquo;lar artık East US, North Central US, Sweden Central, Southeast Asia, Japan East ve daha fazlasında kullanılabilir. Bu, veri yerleşim gereksinimleri için ve agent&amp;rsquo;ınız veri kaynaklarına yakın çalıştığında gecikmeyi azaltmak için önemlidir.&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;GA duyurusundaki kod örnekleri Python öncelikli olsa da, altta yatan altyapı dilden bağımsız — ve &lt;code&gt;azure-ai-projects&lt;/code&gt; için .NET SDK aynı pattern&amp;rsquo;leri takip ediyor. Responses API, değerlendirme framework&amp;rsquo;ü, özel ağ desteği, MCP auth — bunların hepsi .NET&amp;rsquo;ten erişilebilir.&lt;/p&gt;
&lt;p&gt;AI agent&amp;rsquo;larının &amp;ldquo;harika demo&amp;rdquo; aşamasından &amp;ldquo;bunu işte gerçekten gönderebilirim&amp;rdquo; aşamasına geçmesini bekliyorsanız, bu GA sürümü sinyaldir. Özel ağ desteği, uygun auth, sürekli değerlendirme ve üretim izleme — işte eksik olan parçalar bunlardı.&lt;/p&gt;
&lt;h2 id="son-söz"&gt;Son Söz&lt;/h2&gt;
&lt;p&gt;Foundry Agent Service şu anda kullanılabilir. SDK&amp;rsquo;yı kurun, &lt;a href="https://ai.azure.com"&gt;portal&amp;rsquo;ı&lt;/a&gt; açın ve geliştirmeye başlayın. &lt;a href="https://learn.microsoft.com/azure/foundry/quickstarts/get-started-code"&gt;Hızlı başlangıç kılavuzu&lt;/a&gt; sıfırdan çalışan bir agent&amp;rsquo;a dakikalar içinde ulaştırıyor.&lt;/p&gt;
&lt;p&gt;Tüm kod örnekleriyle birlikte tam teknik derinlemesine bakış için &lt;a href="https://devblogs.microsoft.com/foundry/foundry-agent-service-ga/"&gt;GA duyurusunu&lt;/a&gt; inceleyin.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Agent Framework'te Arka Plan Yanıtları: Zaman Aşımı Kaygısına Son</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/background-responses-agent-framework-long-running-tasks/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/background-responses-agent-framework-long-running-tasks/</guid><description>Microsoft Agent Framework artık uzun süren AI görevlerini continuation token'larla arka plana almanıza olanak tanıyor. Arka plan yanıtlarının nasıl çalıştığını ve .NET agent'larınız için neden önemli olduğunu açıklıyoruz.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/background-responses-agent-framework-long-running-tasks/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;o3 veya GPT-5.2 gibi akıl yürütme modelleriyle bir şeyler geliştirdiyseniz, o acıyı biliyorsunuzdur. Agent&amp;rsquo;ınız karmaşık bir görev üzerinde düşünmeye başlıyor, istemci beklemeye devam ediyor ve &amp;ldquo;bu tamam&amp;rdquo; ile &amp;ldquo;çöktü mü acaba?&amp;rdquo; arasında bir yerde bağlantınız zaman aşımına uğruyor. Tüm o emek? Gitti.&lt;/p&gt;
&lt;p&gt;Microsoft Agent Framework yeni &lt;a href="https://devblogs.microsoft.com/agent-framework/handling-long-running-operations-with-background-responses/"&gt;arka plan yanıtlarını&lt;/a&gt; yayınladı — ve dürüst olmak gerekirse bu, ilk günden beri var olması gereken özelliklerden biri.&lt;/p&gt;
&lt;h2 id="engelleyen-çağrıların-sorunu"&gt;Engelleyen çağrıların sorunu&lt;/h2&gt;
&lt;p&gt;Geleneksel istek-yanıt kalıbında, agent işini bitirene kadar istemciniz bekler. Hızlı görevler için bu sorunsuz çalışır. Ama bir akıl yürütme modelinden derin araştırma, çok adımlı analiz veya 20 sayfalık rapor oluşturması istediğinizde? Gerçek zamanlı dakikalar söz konusu. Bu pencerede:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP bağlantıları zaman aşımına uğrayabilir&lt;/li&gt;
&lt;li&gt;Ağ kesintileri tüm işlemi mahvedebilir&lt;/li&gt;
&lt;li&gt;Kullanıcınız bir şeylerin olup olmadığını merak ederek dönen bir simgeye bakmak zorunda kalır&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Arka plan yanıtları bunu tersine çeviriyor.&lt;/p&gt;
&lt;h2 id="continuation-tokenlar-nasıl-çalışır"&gt;Continuation token&amp;rsquo;lar nasıl çalışır&lt;/h2&gt;
&lt;p&gt;Engellemek yerine, agent görevini başlatırsınız ve geriye bir &lt;strong&gt;continuation token&lt;/strong&gt; alırsınız. Bunu bir tamirhanedeki teslimat fişi gibi düşünün — tezgahın önünde beklemezsiniz, hazır olduğunda gelirsiniz.&lt;/p&gt;
&lt;p&gt;Akış basit:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;AllowBackgroundResponses = true&lt;/code&gt; ile isteğinizi gönderin&lt;/li&gt;
&lt;li&gt;Agent arka plan işlemeyi destekliyorsa bir continuation token alırsınız&lt;/li&gt;
&lt;li&gt;Token &lt;code&gt;null&lt;/code&gt; döndürene kadar kendi zamanlamanızda sorgulama yapın — bu, sonucun hazır olduğu anlamına gelir&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;.NET versiyonu şöyle:&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;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="s"&gt;&amp;#34;https://&amp;lt;myresource&amp;gt;.openai.azure.com&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="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;GetResponsesClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;lt;deployment-name&amp;gt;&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 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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AgentRunOptions&lt;/span&gt; &lt;span class="n"&gt;options&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&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;AllowBackgroundResponses&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&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&gt;&lt;/span&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;AgentResponse&lt;/span&gt; &lt;span class="n"&gt;response&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;Write a detailed market analysis for the Q4 product launch.&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 class="n"&gt;options&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="c1"&gt;// Tamamlanana kadar sorgula&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContinuationToken&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;null&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="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TimeSpan&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FromSeconds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&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;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContinuationToken&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContinuationToken&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;response&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="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&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&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="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&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 hemen tamamlarsa (basit görevler, arka plan işleme gerektirmeyen modeller), continuation token döndürülmez. Kodunuz sadece çalışır — özel bir işlem gerekmez.&lt;/p&gt;
&lt;h2 id="devam-ettirme-özellikli-streaming-asıl-sihir"&gt;Devam ettirme özellikli streaming: asıl sihir&lt;/h2&gt;
&lt;p&gt;Sorgulama, fırlat-unut senaryoları için uygun, ama gerçek zamanlı ilerleme izlemek istediğinizde ne olur? Arka plan yanıtları aynı zamanda yerleşik devam ettirme özelliğiyle streaming&amp;rsquo;i de destekliyor.&lt;/p&gt;
&lt;p&gt;Her streaming güncellemesi kendi continuation token&amp;rsquo;ını taşıyor. Bağlantınız streaming ortasında kesilirse, tam kaldığınız yerden devam ediyorsunuz:&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;AgentRunOptions&lt;/span&gt; &lt;span class="n"&gt;options&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&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;AllowBackgroundResponses&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&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&gt;&lt;/span&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 class="n"&gt;AgentResponseUpdate&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;latestUpdate&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&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="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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;Write a detailed market analysis for the Q4 product launch.&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 class="n"&gt;options&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 class="n"&gt;Text&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;latestUpdate&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="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Ağ kesintisini simüle et&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Tam kaldığımız yerden devam et&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContinuationToken&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;latestUpdate&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="n"&gt;ContinuationToken&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;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="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&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 class="n"&gt;Text&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;p&gt;Agent, istemcinizde ne olursa olsun sunucu tarafında işlemeye devam ediyor. Bu, retry mantığı veya circuit breaker yazmadan yerleşik hata toleransı demek.&lt;/p&gt;
&lt;h2 id="bunu-gerçekten-ne-zaman-kullanmalısınız"&gt;Bunu gerçekten ne zaman kullanmalısınız&lt;/h2&gt;
&lt;p&gt;Her agent çağrısının arka plan yanıtlarına ihtiyacı yok. Hızlı tamamlamalar için gereksiz yere karmaşıklık ekliyor olursunuz. Ama bunların parlattığı durumlar şunlar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Karmaşık akıl yürütme görevleri&lt;/strong&gt; — çok adımlı analiz, derin araştırma, bir akıl yürütme modelinin gerçekten düşünmesi gereken her şey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uzun içerik üretimi&lt;/strong&gt; — ayrıntılı raporlar, çok bölümlü belgeler, kapsamlı analizler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güvenilmez ağlar&lt;/strong&gt; — mobil istemciler, edge dağıtımlar, kararsız kurumsal VPN&amp;rsquo;ler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asenkron UX kalıpları&lt;/strong&gt; — görevi gönder, başka bir şey yap, sonuçlar için geri gel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kurumsal uygulamalar geliştiren .NET geliştiricileri olarak bizim için özellikle son madde ilginç. Kullanıcının karmaşık bir rapor talep ettiği bir Blazor uygulaması düşünün — agent görevini başlatırsınız, ilerleme göstergesi gösterirsiniz ve kullanıcının çalışmaya devam etmesine izin verirsiniz. WebSocket karmaşası yok, özel kuyruk altyapısı yok, sadece bir token ve bir sorgulama döngüsü.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Arka plan yanıtları Microsoft Agent Framework üzerinden şu anda hem .NET hem de Python&amp;rsquo;da mevcut. Basit soru-cevabın ötesinde herhangi bir şey yapan agent&amp;rsquo;lar geliştiriyorsanız, bunu araç kutunuza eklemeye değer. Continuation token kalıbi, gerçek bir üretim sorununu çözerken işleri basit tutuyor.&lt;/p&gt;
&lt;p&gt;Tam API referansı ve daha fazla örnek için &lt;a href="https://devblogs.microsoft.com/agent-framework/handling-long-running-operations-with-background-responses/"&gt;belgelere&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item></channel></rss>