<?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>Azure | The .NET Blog</title><link>https://thedotnetblog.com/tr/tags/azure/</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/azure/index.xml" rel="self" type="application/rss+xml"/><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>azd + GitHub Copilot: Yapay Zeka Destekli Proje Kurulumu ve Akıllı Hata Çözümü</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/</guid><description>Azure Developer CLI artık GitHub Copilot ile entegre olarak proje altyapısını oluşturuyor ve dağıtım hatalarını çözüyor — terminal'den çıkmadan.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu makale otomatik olarak çevrilmiştir. Orijinal İngilizce sürüm için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mevcut bir uygulamayı Azure&amp;rsquo;a dağıtmak isteyip boş bir &lt;code&gt;azure.yaml&lt;/code&gt; dosyasına bakarak Express API&amp;rsquo;nizin Container Apps mı yoksa App Service mi kullanması gerektiğini hatırlamaya çalıştığınız o anı biliyor musunuz? O an artık çok daha kısa.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) artık GitHub Copilot ile iki somut şekilde entegre: &lt;code&gt;azd init&lt;/code&gt; sırasında AI destekli proje iskele kurma ve dağıtımlar başarısız olduğunda akıllı hata giderme. Her iki özellik de tamamen terminalde kalıyor.&lt;/p&gt;
&lt;h2 id="azd-init-sırasında-copilot-ile-kurulum"&gt;azd init Sırasında Copilot ile Kurulum&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; çalıştırıldığında artık &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo; seçeneği görünüyor. Seçin ve Copilot, gerçek kodunuzu temel alarak &lt;code&gt;azure.yaml&lt;/code&gt;, altyapı şablonları ve Bicep modülleri oluşturmak için kod tabanınızı analiz eder.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd init
# Seçin: &amp;#34;Set up with GitHub Copilot (Preview)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Gereksinimler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;azd 1.23.11 veya üzeri&lt;/strong&gt; — &lt;code&gt;azd version&lt;/code&gt; ile kontrol edin veya &lt;code&gt;azd update&lt;/code&gt; ile güncelleyin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aktif GitHub Copilot aboneliği&lt;/strong&gt; (Bireysel, İş veya Kurumsal)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub CLI (&lt;code&gt;gh&lt;/code&gt;)&lt;/strong&gt; — gerekirse &lt;code&gt;azd&lt;/code&gt; oturum açmanızı isteyecek&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gerçekten faydalı bulduğum şey: her iki yönde de çalışıyor. Sıfırdan mı inşa ediyorsunuz? Copilot doğru Azure hizmetlerini başından itibaren yapılandırmanıza yardımcı olur. Dağıtmak istediğiniz mevcut bir uygulamanız mı var? Copilot&amp;rsquo;u ona yöneltin — kodu yeniden yapılandırmadan konfigürasyon oluşturulur.&lt;/p&gt;
&lt;h3 id="gerçekte-ne-yapar"&gt;Gerçekte Ne Yapar&lt;/h3&gt;
&lt;p&gt;PostgreSQL bağımlılığına sahip bir Node.js Express API&amp;rsquo;niz olduğunu varsayalım. Container Apps ile App Service arasında manuel seçim yapmak ve ardından sıfırdan Bicep yazmak yerine, Copilot yığınınızı algılar ve şunları oluşturur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doğru &lt;code&gt;language&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt; ve &lt;code&gt;build&lt;/code&gt; ayarlarına sahip &lt;code&gt;azure.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Azure Container Apps için Bicep modülü&lt;/li&gt;
&lt;li&gt;Azure Database for PostgreSQL için Bicep modülü&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ve herhangi bir şeyi değiştirmeden önce ön kontroller yapar — git çalışma dizininin temiz olduğunu doğrular, MCP sunucu araç iznini önceden sorar. Her şey bilginiz dahilinde gerçekleşir.&lt;/p&gt;
&lt;h2 id="copilot-ile-hata-giderme"&gt;Copilot ile Hata Giderme&lt;/h2&gt;
&lt;p&gt;Dağıtım hataları kaçınılmazdır. Eksik parametreler, izin sorunları, SKU kullanılabilirlik sorunları — ve hata mesajı nadiren gerçekten bilmeniz gereken tek şeyi söyler: &lt;em&gt;nasıl düzeltilir&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Copilot olmadan döngü şöyle görünür: hatayı kopyala → belgelerden ara → ilgisiz üç Stack Overflow cevabı oku → birkaç &lt;code&gt;az&lt;/code&gt; CLI komutu çalıştır → tekrar dene ve umut et. &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;de Copilot ile bu döngü çöküyor. Herhangi bir &lt;code&gt;azd&lt;/code&gt; komutu başarısız olduğunda anında dört seçenek sunuluyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Explain&lt;/strong&gt; — ne yanlış gittiğinin anlaşılır dilde açıklaması&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guidance&lt;/strong&gt; — sorunu gidermek için adım adım talimatlar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diagnose and Guide&lt;/strong&gt; — tam analiz + Copilot düzeltmeyi uygular (onayınızla) + isteğe bağlı yeniden deneme&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skip&lt;/strong&gt; — kendiniz halledin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kritik nokta: Copilot&amp;rsquo;un projeniz, başarısız olan komut ve hata detayları hakkında zaten bağlamı var. Önerileri &lt;em&gt;sizin durumunuza&lt;/em&gt; özeldir.&lt;/p&gt;
&lt;h3 id="varsayılan-davranışı-ayarlama"&gt;Varsayılan Davranışı Ayarlama&lt;/h3&gt;
&lt;p&gt;Her zaman aynı seçeneği seçiyorsanız etkileşimli istemi atlayın:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config set copilot.errorHandling.category troubleshoot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Değerler: &lt;code&gt;explain&lt;/code&gt;, &lt;code&gt;guidance&lt;/code&gt;, &lt;code&gt;troubleshoot&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt;. Otomatik düzeltme ve yeniden denemeyi de etkinleştirebilirsiniz:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config set copilot.errorHandling.fix allow
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;İstediğiniz zaman etkileşimli moda geri dönün:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config unset copilot.errorHandling.category
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;En son sürümü edinmek için &lt;code&gt;azd update&lt;/code&gt; çalıştırın ve bir sonraki projenizde &lt;code&gt;azd init&lt;/code&gt; deneyin.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-copilot-integration/"&gt;Orijinal duyuruyu buradan okuyun&lt;/a&gt;.&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>Azure MCP Araçları Artık Visual Studio 2022'ye Entegre — Uzantı Gerekmiyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>Azure MCP araçları, Visual Studio 2022'de Azure geliştirme iş yükünün bir parçası olarak geliyor. 230'dan fazla araç, 45 Azure servisi, yüklenecek sıfır uzantı.</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-tools-built-into-visual-studio-2022/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Azure MCP araçlarını ayrı uzantı üzerinden Visual Studio&amp;rsquo;da kullandıysanız, süreci biliyorsunuzdur — VSIX&amp;rsquo;i kurun, yeniden başlatın, bir şeylerin bozulmamasını umun, sürüm uyumsuzluklarıyla uğraşın. O sürtünme artık tarihe karışıyor.&lt;/p&gt;
&lt;p&gt;Yun Jung Choi &lt;a href="https://devblogs.microsoft.com/visualstudio/azure-mcp-tools-now-ship-built-into-visual-studio-2022-no-extension-required/"&gt;duyurdu&lt;/a&gt;: Azure MCP araçları artık Visual Studio 2022&amp;rsquo;de Azure geliştirme iş yükünün doğrudan bir parçası olarak geliyor. Uzantı yok. VSIX yok. Yeniden başlatma dansı yok.&lt;/p&gt;
&lt;h2 id="bu-aslında-ne-anlama-geliyor"&gt;Bu aslında ne anlama geliyor&lt;/h2&gt;
&lt;p&gt;Visual Studio 2022 sürüm 17.14.30 itibarıyla Azure MCP Server, Azure geliştirme iş yüküyle birlikte geliyor. Bu iş yükünü zaten yüklediyseniz, tek yapmanız gereken GitHub Copilot Chat&amp;rsquo;te etkinleştirip kullanmaya başlamak.&lt;/p&gt;
&lt;p&gt;45 Azure servisi genelinde 230&amp;rsquo;dan fazla araç — doğrudan sohbet penceresinden erişilebilir. Depolama hesaplarınızı listeleyin, ASP.NET Core uygulaması dağıtın, App Service sorunlarını tanılayın, Log Analytics&amp;rsquo;i sorgulayın — tek bir tarayıcı sekmesi açmadan.&lt;/p&gt;
&lt;h2 id="bu-neden-göründüğünden-daha-önemli"&gt;Bu neden göründüğünden daha önemli&lt;/h2&gt;
&lt;p&gt;Geliştirici araçlarındaki şu gerçeği biliyoruz: her ekstra adım sürtünmedir, sürtünme ise benimsemeyi öldürür. MCP&amp;rsquo;nin ayrı bir uzantı olması; sürüm uyumsuzlukları, kurulum hataları ve güncel tutulması gereken bir şey daha demekti. İş yüküne entegre etmek şu anlama geliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio Installer üzerinden &lt;strong&gt;tek güncelleme yolu&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Uzantı ile IDE arasında &lt;strong&gt;sürüm kayması yok&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Her zaman güncel&lt;/strong&gt; — MCP Server, düzenli VS sürümleriyle birlikte güncelleniyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Azure üzerinde standartlaştıran ekipler için bu büyük bir avantaj. İş yükünü bir kez kuruyorsunuz, araçları etkinleştiriyorsunuz ve her oturumda hazır oluyorlar.&lt;/p&gt;
&lt;h2 id="bununla-neler-yapabilirsiniz"&gt;Bununla neler yapabilirsiniz&lt;/h2&gt;
&lt;p&gt;Araçlar Copilot Chat üzerinden tüm geliştirme yaşam döngüsünü kapsıyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Öğrenin&lt;/strong&gt; — Azure servisleri, en iyi pratikler, mimari kalıplar hakkında sorular sorun&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasarlayın ve geliştirin&lt;/strong&gt; — servis önerileri alın, uygulama kodunu yapılandırın&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dağıtın&lt;/strong&gt; — kaynakları sağlayın ve doğrudan IDE&amp;rsquo;den dağıtın&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sorun giderin&lt;/strong&gt; — günlükleri sorgulayın, kaynak sağlığını kontrol edin, üretim sorunlarını tanılayın&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hızlı bir örnek — Copilot Chat&amp;rsquo;e şunu yazın:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;List my storage accounts in my current subscription.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copilot, arka planda Azure MCP araçlarını çağırır, aboneliklerinizi sorgular ve isimler, konumlar ve SKU&amp;rsquo;larla birlikte biçimlendirilmiş bir liste döndürür. Portal gerekmez.&lt;/p&gt;
&lt;h2 id="nasıl-etkinleştirilir"&gt;Nasıl etkinleştirilir&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; veya üzerine güncelleyin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure development&lt;/strong&gt; iş yükünün yüklendiğinden emin olun&lt;/li&gt;
&lt;li&gt;GitHub Copilot Chat&amp;rsquo;i açın&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Select tools&lt;/strong&gt; düğmesine tıklayın (iki İngiliz anahtarı simgesi)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure MCP Server&lt;/strong&gt;&amp;lsquo;ı etkinleştirin&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hepsi bu. Oturumlar arasında etkin kalır.&lt;/p&gt;
&lt;h2 id="bir-not"&gt;Bir not&lt;/h2&gt;
&lt;p&gt;Araçlar varsayılan olarak devre dışıdır — katılımınız gerekiyor. VS 2026&amp;rsquo;ya özgü araçlar VS 2022&amp;rsquo;de mevcut değil. Araç kullanılabilirliği de portaldaki gibi Azure abonelik izinlerinize bağlı.&lt;/p&gt;
&lt;h2 id="büyük-resim"&gt;Büyük resim&lt;/h2&gt;
&lt;p&gt;Bu, net bir trendin parçası: MCP, bulut araçlarını geliştirici IDE&amp;rsquo;lerinde sunmanın standart yolu haline geliyor. &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;Azure MCP Server 2.0 kararlı sürümünü&lt;/a&gt; ve VS Code ile diğer editörlerdeki MCP entegrasyonlarını zaten gördük. Visual Studio&amp;rsquo;nun iş yükü sistemine entegre olması doğal bir ilerleme.&lt;/p&gt;
&lt;p&gt;Visual Studio&amp;rsquo;da yaşayan .NET geliştiricileri olarak bu, Azure portalına bağlam değiştirmek için bir neden daha ortadan kalkıyor. Ve dürüst olmak gerekirse, ne kadar az sekme değiştirirsek o kadar iyi.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2, MongoDB EF Core ve Azure Data Lake Desteği Kazandı — Denemeye Değer İki Entegrasyon</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/</guid><description>Aspire 13.2, sıfır yapılandırmalı sağlık kontrolleri ve servis keşfi ile MongoDB Entity Framework Core ve Azure Data Lake Storage entegrasyonları ekliyor. Bunların pratikte nasıl göründüğü.</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-mongodb-efcore-data-lake/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aspire 13.2 dikkatinizi çekmeye değer &lt;a href="https://devblogs.microsoft.com/aspire/aspire-new-database-integrations/"&gt;iki yeni veritabanı entegrasyonuyla&lt;/a&gt; yayımlandı: MongoDB Entity Framework Core ve Azure Data Lake Storage. Bir Aspire uygulamasında MongoDB ile EF Core kullanmak istiyorsanız veya uygun servis keşfiyle data lake iş yüklerini bağlamanız gerekiyorsa, bu sürüm her ikisini de sunuyor.&lt;/p&gt;
&lt;h2 id="mongodb-aspireda-ef-core-ile-buluşuyor"&gt;MongoDB, Aspire&amp;rsquo;da EF Core ile buluşuyor&lt;/h2&gt;
&lt;p&gt;En çok heyecanlandığım bu. Aspire bir süredir MongoDB&amp;rsquo;yi destekliyordu ama her zaman ham sürücüydü — EF Core yok, &lt;code&gt;DbContext&lt;/code&gt; yok, belgelerinize karşı LINQ sorgusu yok. Artık MongoDB ile tam EF Core deneyimini, ayrıca Aspire&amp;rsquo;ın otomatik sağlık kontrolleri ve servis keşfini elde ediyorsunuz.&lt;/p&gt;
&lt;p&gt;Kurulum, tipik Aspire desenidir. AppHost&amp;rsquo;unuzda:&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;mongodb&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddMongoDB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mongodb&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;WithDataVolume&lt;/span&gt;&lt;span class="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;WithLifetime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ContainerLifetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Persistent&lt;/span&gt;&lt;span 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;apiService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddProject&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApiService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;api&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;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mongodb&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;Ardından tüketen projenize EF Core entegrasyonunu 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 Aspire.MongoDB.EntityFrameworkCore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ve &lt;code&gt;DbContext&lt;/code&gt;&amp;lsquo;inizi kaydedin:&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;AddMongoDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;MyDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mongodb&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;mydb&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;Oradan itibaren standart EF Core. Varlıklarınızı tanımlayın, &lt;code&gt;DbContext&lt;/code&gt;&amp;lsquo;inizi herhangi bir sağlayıcıyla kullandığınız gibi kullanın. Entegrasyon, bağlantı havuzlamasını, OpenTelemetry izlerini ve sağlık kontrollerini arka planda yönetir.&lt;/p&gt;
&lt;p&gt;Ham sürücüyle MongoDB kullanan ve bağlantı dizelerini manuel olarak ayarlayan .NET geliştiricileri için bu, güzel bir yaşam kalitesi yükseltmesi. Aspire&amp;rsquo;ın servis keşfini kaybetmeden tam EF Core soyutlamasını elde ediyorsunuz.&lt;/p&gt;
&lt;h2 id="azure-data-lake-storage-katılıyor"&gt;Azure Data Lake Storage katılıyor&lt;/h2&gt;
&lt;p&gt;İkinci büyük ekleme, &lt;a href="https://aspire.dev/integrations/cloud/azure/azure-storage-datalake/"&gt;Azure Data Lake Storage (ADLS) entegrasyonu&lt;/a&gt;. Veri pipeline&amp;rsquo;ları, ETL süreçleri veya analitik platformlar geliştiriyorsanız, artık Data Lake kaynaklarını herhangi bir diğer Aspire bağımlılığını bağladığınız gibi bağlayabilirsiniz.&lt;/p&gt;
&lt;p&gt;AppHost&amp;rsquo;ta:&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;storage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddAzureStorage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;azure-storage&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dataLake&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddDataLake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;fileSystem&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddDataLakeFileSystem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake-file-system&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;analyticsService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddProject&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AnalyticsService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;analytics&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;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataLake&lt;/span&gt;&lt;span class="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;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fileSystem&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üketen projede:&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;AddAzureDataLakeServiceClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake&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;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddAzureDataLakeFileSystemClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake-file-system&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;Manuel bağlantı dizesi yönetimi yok, kimlik bilgisi avcılığı yok. Aspire kaynakları sağlar ve enjekte eder. Hem operasyonel veriye hem de analitik iş yüklerine dokunan cloud-native .NET uygulamaları geliştiriyorsanız, bu data lake&amp;rsquo;i Aspire modelinde birinci sınıf vatandaş gibi hissettiriyor.&lt;/p&gt;
&lt;h2 id="önemli-küçük-düzeltmeler"&gt;Önemli küçük düzeltmeler&lt;/h2&gt;
&lt;p&gt;Manşet özelliklerin ötesinde, dikkate değer birkaç yaşam kalitesi iyileştirmesi var:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MongoDB bağlantı dizesi düzeltmesi&lt;/strong&gt; — veritabanı adından önce eğik çizgi artık doğru şekilde işleniyor. Bunun etrafından dolaşıyorsanız, o geçici çözümü kaldırabilirsiniz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server dışa aktarmaları&lt;/strong&gt; — &lt;code&gt;Aspire.Hosting.SqlServer&lt;/code&gt; artık daha ince ayarlı kontrol için ek sunucu yapılandırma seçenekleri dışa aktarıyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emülatör güncellemeleri&lt;/strong&gt; — ServiceBus emülatörü 2.0.0, App Configuration emülatörü 1.0.2 ve CosmosDB&amp;rsquo;nin önizleme emülatörü artık bir hazır olma kontrolü içeriyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Managed Redis&lt;/strong&gt; — artık varsayılan olarak &lt;code&gt;rediss://&lt;/code&gt; (Redis Secure) kullanıyor; bağlantılar kutudan çıktığı gibi şifreli&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Son madde ince ama önemli — varsayılan olarak şifreli Redis, üretimde yapılandırılacak bir şey daha az demek.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 artımlı bir sürüm, ancak MongoDB EF Core ve Data Lake entegrasyonları gerçek boşlukları dolduruyor. Aspire&amp;rsquo;da MongoDB için uygun EF Core desteğini bekliyorsanız veya Data Lake&amp;rsquo;in birinci sınıf bağımlılık olmasına ihtiyacınız varsa, &lt;a href="https://get.aspire.dev"&gt;13.2&amp;rsquo;ye yükseltin&lt;/a&gt; ve bir deneyin. &lt;code&gt;aspire add&lt;/code&gt; komutu ihtiyacınız olan her şeyi iskelet haline getiriyor.&lt;/p&gt;
&lt;p&gt;Daha fazla ayrıntı için &lt;a href="https://aspire.dev/whats-new/aspire-13-2/#-integrations-updates"&gt;tam sürüm notlarını&lt;/a&gt; okuyun ve tam liste için &lt;a href="https://aspire.dev/integrations/gallery/"&gt;entegrasyon galerisine&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item><item><title>azd update — Tüm Paket Yöneticileriniz İçin Tek Bir Komut</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI artık, onu nasıl yüklediğinizden bağımsız olarak güncelleyen evrensel bir güncelleme komutuna sahip — winget, Homebrew, Chocolatey veya kurulum betiğ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-update-universal-upgrade-command/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Her birkaç haftada bir beliren &amp;ldquo;azd&amp;rsquo;nin yeni bir sürümü mevcut&amp;rdquo; mesajını biliyor musunuz? &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;yi winget, Homebrew veya altı ay önce çalıştırdığınız curl betiğiyle mi yüklediğinizi hatırlayamadığınız için görmezden geldiğiniz mesajı? Evet, bu sonunda düzeldi.&lt;/p&gt;
&lt;p&gt;Microsoft, &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt;&amp;lsquo;i piyasaya sürdü — Azure Developer CLI&amp;rsquo;ı, başlangıçta nasıl yüklediğinizden bağımsız olarak en son sürüme güncelleyen tek bir komut. Windows, macOS, Linux — fark etmiyor. Tek komut.&lt;/p&gt;
&lt;h2 id="nasıl-çalışıyor"&gt;Nasıl çalışıyor&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;azd update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hepsi bu. Yeni özelliklere erken erişim istiyorsanız, günlük insiders derlemesine geçebilirsiniz:&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 update --channel daily
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel stable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Komut, mevcut kurulum yönteminizi algılar ve arka planda uygun güncelleme mekanizmasını kullanır. Artık &amp;ldquo;bu makinede winget mi yoksa choco mu kullandım?&amp;rdquo; sorusuna gerek yok.&lt;/p&gt;
&lt;h2 id="küçük-bir-uyarı"&gt;Küçük bir uyarı&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt;, 1.23.x sürümünden itibaren gönderilmeye başlandı. Daha eski bir sürümdeyseniz, orijinal kurulum yönteminizi kullanarak son bir manuel güncelleme yapmanız gerekecek. Bundan sonra &lt;code&gt;azd update&lt;/code&gt; her şeyi halleder.&lt;/p&gt;
&lt;p&gt;Mevcut sürümünüzü &lt;code&gt;azd version&lt;/code&gt; ile kontrol edin. Yeni bir kuruluma ihtiyacınız varsa, &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;kurulum dokümanları&lt;/a&gt; size yol gösterir.&lt;/p&gt;
&lt;h2 id="neden-önemli"&gt;Neden önemli&lt;/h2&gt;
&lt;p&gt;Bu küçük bir yaşam kalitesi iyileştirmesi, ancak Azure&amp;rsquo;a AI ajanları ve Aspire uygulamaları dağıtmak için &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;yi günlük kullananlar için güncel kalmak daha az &amp;ldquo;bu hata zaten son sürümde düzeltilmişti&amp;rdquo; anı demek. Düşünmek zorunda kalmamanız gereken bir şey daha.&lt;/p&gt;
&lt;p&gt;Daha fazla bağlam için &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;tam duyuruyu&lt;/a&gt; ve Jon Gallant&amp;rsquo;ın &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;daha ayrıntılı incelemesini&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Azure Smart Tier Genel Kullanıma Açıldı — Yaşam Döngüsü Kuralları Olmadan Otomatik Blob Depolama Maliyet Optimizasyonu</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/</guid><description>Azure Blob Storage smart tier artık genel kullanıma açık; nesneleri gerçek erişim kalıplarına göre hot, cool ve cold katmanları arasında otomatik olarak taşıyor — yaşam döngüsü kurallarına gerek yok.</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-smart-tier-blob-storage-ga/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Azure Blob Storage yaşam döngüsü politikalarını ayarlamak için zaman harcadınız ve ardından erişim kalıpları değişince bunların çöktüğünü izlediyseniz, bu yazı sizin için. Microsoft, Azure Blob ve Data Lake Storage için &lt;a href="https://azure.microsoft.com/en-us/blog/optimize-object-storage-costs-automatically-with-smart-tier-now-generally-available/"&gt;smart tier&amp;rsquo;ın genel kullanıma açıldığını&lt;/a&gt; duyurdu — nesneleri gerçek kullanıma göre hot, cool ve cold katmanları arasında otomatik olarak taşıyan, tam yönetimli bir katmanlama özelliği.&lt;/p&gt;
&lt;h2 id="smart-tier-aslında-ne-yapıyor"&gt;Smart tier aslında ne yapıyor&lt;/h2&gt;
&lt;p&gt;Konsept basit: smart tier, depolama hesabınızdaki her nesnenin son erişim zamanını sürekli değerlendiriyor. Sık erişilen veriler hot&amp;rsquo;ta kalıyor, etkin olmayan veriler 30 gün sonra cool&amp;rsquo;a geçiyor ve ardından 60 gün sonra cold&amp;rsquo;a iniyor. Verilere tekrar erişildiğinde hemen hot&amp;rsquo;a geri yükseltiliyor. Döngü yeniden başlıyor.&lt;/p&gt;
&lt;p&gt;Yapılandırılacak yaşam döngüsü kuralı yok. Erişim kalıbı tahmini yok. Manuel ayarlama yok.&lt;/p&gt;
&lt;p&gt;Önizleme sürecinde Microsoft, &lt;strong&gt;smart tier tarafından yönetilen kapasitenin %50&amp;rsquo;sinden fazlasının gerçek erişim kalıplarına göre otomatik olarak daha soğuk katmanlara geçtiğini&lt;/strong&gt; bildirdi. Büyük depolama hesapları için bu anlamlı bir maliyet azalması.&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;Günlük, telemetri, analitik veri veya büyüyen herhangi bir veri kümesi üreten uygulamalar geliştiriyorsanız — ki dürüst olmak gerekirse kim üretmiyor — depolama maliyetleri hızla artıyor. Geleneksel yaklaşım, yaşam döngüsü yönetim politikaları yazmak, bunları test etmek ve uygulamanızın erişim kalıpları değiştiğinde yeniden ayarlamaktı. Smart tier bu iş akışının tamamını ortadan kaldırıyor.&lt;/p&gt;
&lt;p&gt;Bunun işe yaradığı pratik senaryolar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uygulama telemetrisi ve günlükleri&lt;/strong&gt; — hata ayıklama sırasında hot, birkaç hafta sonra nadiren erişilen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veri pipeline&amp;rsquo;ları ve ETL çıktıları&lt;/strong&gt; — işleme sırasında yoğun erişim, ardından çoğunlukla cold&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kullanıcı tarafından oluşturulan içerik&lt;/strong&gt; — son yüklemeler hot, eski içerik zamanla soğuyor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yedekleme ve arşiv verileri&lt;/strong&gt; — uyumluluk için ara sıra erişilen, çoğunlukla atıl&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kurulum"&gt;Kurulum&lt;/h2&gt;
&lt;p&gt;Smart tier&amp;rsquo;ı etkinleştirmek tek seferlik bir yapılandırma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Yeni hesaplar&lt;/strong&gt;: Depolama hesabı oluşturma sırasında varsayılan erişim katmanı olarak smart tier&amp;rsquo;ı seçin (bölgesel yedeklilik gereklidir)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mevcut hesaplar&lt;/strong&gt;: Blob erişim katmanını mevcut varsayılandan smart tier&amp;rsquo;a geçirin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;128 KiB&amp;rsquo;den küçük nesneler hot&amp;rsquo;ta kalır ve izleme ücretine tabi değildir. Diğer her şey için katman geçiş ücreti, erken silme ücreti ve veri alma maliyeti olmaksızın standart hot/cool/cold kapasite ücretleri ödüyorsunuz. Nesne başına aylık bir izleme ücreti orkestrasyon maliyetini karşılıyor.&lt;/p&gt;
&lt;h2 id="bilmeniz-gereken-takas"&gt;Bilmeniz gereken takas&lt;/h2&gt;
&lt;p&gt;Smart tier&amp;rsquo;ın katmanlama kuralları sabit (30 gün → cool, 90 gün → cold). Belirli bir iş yükü için 7 günde cool&amp;rsquo;a geçmek gibi özel eşikler ihtiyacınız varsa, yaşam döngüsü kuralları hâlâ doğru seçenek. İkisini de karıştırmayın: smart tier tarafından yönetilen nesnelerde yaşam döngüsü kurallarından kaçının, çünkü çakışabilirler.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Bu devrim niteliğinde değil, ama gerçek bir operasyonel baş ağrısını çözüyor. Büyüyen blob depolama hesaplarını yönetiyorsanız ve yaşam döngüsü politikalarını korumaktan bıktıysanız, &lt;a href="https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-smart"&gt;smart tier&amp;rsquo;ı etkinleştirin&lt;/a&gt; ve Azure&amp;rsquo;un üstlenmesine izin verin. Neredeyse tüm bölgesel genel bulut bölgelerinde bugün itibariyle kullanılabilir.&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>Ajanlı Platform Mühendisliği Gerçek Oluyor — Git-APE Bunu Nasıl Yapıyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agentic-platform-engineering-git-ape/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/agentic-platform-engineering-git-ape/</guid><description>Microsoft'un Git-APE projesi, ajanlı platform mühendisliğini pratiğe döküyor — GitHub Copilot agentları ve Azure MCP kullanarak doğal dil isteklerini doğrulanmış bulut altyapısına dönüştü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/agentic-platform-engineering-git-ape/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Platform mühendisliği, konferans konuşmalarında harika duyulan ama genellikle &amp;ldquo;dahili bir portal ve bir Terraform sarmalayıcı geliştirdik&amp;rdquo; anlamına gelen terimlerden biridir. Gerçek vaat — gerçekten güvenli, yönetişimli ve hızlı self-servis altyapı — her zaman birkaç adım uzakta olmuştur.&lt;/p&gt;
&lt;p&gt;Azure ekibi, &lt;a href="https://devblogs.microsoft.com/all-things-azure/putting-agentic-platform-engineering-to-the-test/"&gt;ajanlı platform mühendisliği serisinin 2. Bölümünü&lt;/a&gt; yayımladı ve bu bölüm tamamen uygulamalı implementasyona odaklanıyor. Buna &lt;strong&gt;Git-APE&lt;/strong&gt; (evet, kısaltma kasıtlı) diyorlar; GitHub Copilot agentları ile Azure MCP sunucularını kullanarak doğal dil isteklerini doğrulanmış, dağıtılmış altyapıya dönüştüren açık kaynak bir proje.&lt;/p&gt;
&lt;h2 id="git-ape-gerçekte-ne-yapıyor"&gt;Git-APE gerçekte ne yapıyor&lt;/h2&gt;
&lt;p&gt;Temel fikir şu: geliştiricilerin Terraform modüllerini öğrenmesi, portal arayüzlerinde gezinmesi veya platform ekibine bilet açması yerine, bir Copilot agentıyla konuşması. Agent niyeti yorumlar, Infrastructure-as-Code üretir, politikalara göre doğrular ve dağıtır — tümü VS Code içinde.&lt;/p&gt;
&lt;p&gt;İşte kurulum:&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;git clone https://github.com/Azure/git-ape
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; git-ape
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Çalışma alanını VS Code&amp;rsquo;da açın; agent yapılandırma dosyaları GitHub Copilot tarafından otomatik olarak keşfedilir. Agent ile doğrudan etkileşime geçersiniz:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;@git-ape deploy a function app with storage in West Europe
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agent, Azure servisleriyle etkileşim kurmak için arka planda Azure MCP Server&amp;rsquo;ı kullanır. VS Code ayarlarındaki MCP yapılandırması belirli yetenekleri etkinleştirir:&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;azureMcp.serverMode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;namespace&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;azureMcp.enabledServices&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;deploy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bestpractices&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;group&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;subscription&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;functionapp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;storage&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;sql&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;monitor&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 class="nt"&gt;&amp;#34;azureMcp.readOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&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="neden-önemli"&gt;Neden önemli&lt;/h2&gt;
&lt;p&gt;Azure üzerine geliştirme yapanlar için bu, platform mühendisliği konuşmasını &amp;ldquo;nasıl bir portal inşa ederiz&amp;rdquo; yerine &amp;ldquo;kısıtlamalarımızı API&amp;rsquo;ler olarak nasıl tanımlarız&amp;rdquo; sorusuna kaydırıyor. Platformunuzun arayüzü bir AI agentı olduğunda, kısıtlamalarınızın ve politikalarınızın kalitesi ürün haline geliyor.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bölüm teorisi ortaya koydu: iyi tanımlanmış API&amp;rsquo;ler, kontrol şemaları ve açık koruyucular platformları agent-hazır kılar. 2. Bölüm gerçek araçları yayımlayarak bunun işe yaradığını kanıtlıyor. Agent kaynakları körü körüne üretmez — en iyi uygulamalara karşı doğrular, adlandırma kurallarına saygı gösterir ve kuruluşunuzun politikalarını uygular.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Temizlik de aynı derecede kolaydır:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;@git-ape destroy my-resource-group
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="benim-görüşüm"&gt;Benim görüşüm&lt;/h2&gt;
&lt;p&gt;Dürüst olacağım — bu, belirli araçtan çok desen hakkında. Git-APE&amp;rsquo;nin kendisi bir demo/referans mimarisidir. Ama temel fikir — platformunuza arayüz olarak agentlar, protokol olarak MCP, host olarak GitHub Copilot — kurumsal geliştirici deneyiminin nereye gittiğidir.&lt;/p&gt;
&lt;p&gt;Dahili araçlarını agent-dostu hale getirmeye bakan bir platform ekibiyseniz, daha iyi bir başlangıç noktası yok. .NET geliştiricisi olarak bunun dünyanzla nasıl bağlantılı olduğunu merak ediyorsanız: Azure MCP Server ve GitHub Copilot agentları herhangi bir Azure iş yüküyle çalışır. ASP.NET Core API&amp;rsquo;niz, .NET Aspire yığınınız, konteynerize mikro servisleriniz — hepsi ajanlı bir dağıtım akışının hedefi olabilir.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Git-APE, ajanlı platform mühendisliğine pratikte erken ama somut bir bakış. &lt;a href="https://github.com/Azure/git-ape"&gt;Repo&amp;rsquo;yu&lt;/a&gt; klonlayın, demoyu deneyin ve platformunuzun API&amp;rsquo;lerinin ve politikalarının bir agentın bunları güvenle kullanması için nasıl görünmesi gerektiğini düşünmeye başlayın.&lt;/p&gt;
&lt;p&gt;Rehber ve video demolar için &lt;a href="https://devblogs.microsoft.com/all-things-azure/putting-agentic-platform-engineering-to-the-test/"&gt;tam yazıyı&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>GitHub Copilot'un Modernizasyon Değerlendirmesi, Henüz Kullanmadığınız En İyi Göç Aracı</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</guid><description>GitHub Copilot'un modernizasyon uzantısı yalnızca kod değişikliği önermekle kalmıyor — uygulanabilir sorunlar, Azure hedef karşılaştırmaları ve iş birliğine dayalı bir iş akışıyla eksiksiz bir göç değerlendirmesi üretiyor. Değerlendirme belgesinin neden her şeyin anahtarı olduğunu işte 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/dotnet-modernization-assessment-github-copilot/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eski bir .NET Framework uygulamasını modern .NET&amp;rsquo;e taşımak, herkesin yapması gerektiğini bildiği ama kimsenin başlamak istemediği işlerden biri. Bu hiçbir zaman sadece &amp;ldquo;hedef framework&amp;rsquo;ü değiştir&amp;rdquo; meselesi değildir. Ortadan kalkan API&amp;rsquo;lar, artık mevcut olmayan paketler, tamamen farklı çalışan hosting modelleri ve neyin container&amp;rsquo;a alınacağı, neyin yeniden yazılacağı, neyin olduğu gibi bırakılacağına dair binlerce küçük karar var.&lt;/p&gt;
&lt;p&gt;Jeffrey Fritz, &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;GitHub Copilot&amp;rsquo;un modernizasyon değerlendirmesine derin bir dalış&lt;/a&gt; yayımladı ve dürüst olmak gerekirse? Bu, .NET için gördüğüm en iyi göç araçları. Kod oluşturma nedeniyle değil — bu artık herkes için temel gereksinim. Ürettiği değerlendirme belgesi nedeniyle.&lt;/p&gt;
&lt;h2 id="bu-sadece-bir-kod-öneri-motoru-değil"&gt;Bu sadece bir kod öneri motoru değil&lt;/h2&gt;
&lt;p&gt;VS Code uzantısı bir &lt;strong&gt;Değerlendir → Planla → Uygula&lt;/strong&gt; modeli izliyor. Değerlendirme aşaması tüm kod tabanınızı analiz ediyor ve her şeyi yakalayan yapılandırılmış bir belge üretiyor: neyin değişmesi gerektiği, hangi Azure kaynaklarının sağlanacağı, hangi dağıtım modelinin kullanılacağı. Aşağıdaki her şey — altyapı-kodu, containerlaştırma, dağıtım manifestoları — değerlendirmenin bulduklarından akıyor.&lt;/p&gt;
&lt;p&gt;Değerlendirme, projenizde &lt;code&gt;.github/modernize/assessment/&lt;/code&gt; altında saklanıyor. Her çalıştırma bağımsız bir rapor üretiyor, böylece bir geçmiş oluşturabilir ve sorunları düzelttikçe göç pozisyonunuzun nasıl geliştiğini takip edebilirsiniz.&lt;/p&gt;
&lt;h2 id="başlamanın-iki-yolu"&gt;Başlamanın iki yolu&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Önerilen Değerlendirme&lt;/strong&gt; — hızlı yol. Seçilmiş alanlardan birini seçin (Java/.NET Yükseltme, Bulut Hazırlığı, Güvenlik) ve yapılandırmaya dokunmadan anlamlı sonuçlar alın. Uygulamanızın nerede durduğuna ilk bakış için harika.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Özel Değerlendirme&lt;/strong&gt; — hedefli yol. Neyin analiz edileceğini tam olarak yapılandırın: hedef hesaplama (App Service, AKS, Container Apps), hedef işletim sistemi, containerlaştırma analizi. Göç yaklaşımlarını yan yana karşılaştırmak için birden fazla Azure hedefi seçin.&lt;/p&gt;
&lt;p&gt;Bu karşılaştırma görünümü gerçekten yararlı. App Service için 3 zorunlu sorunu olan bir uygulamanın AKS için 7 sorunu olabilir. Her ikisini de görmek, bir göç yoluna bağlanmadan önce hosting kararını yönlendirmeye yardımcı oluyor.&lt;/p&gt;
&lt;h2 id="sorun-dökümü-uygulanabilir"&gt;Sorun dökümü uygulanabilir&lt;/h2&gt;
&lt;p&gt;Her sorun bir kritiklik düzeyiyle geliyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zorunlu&lt;/strong&gt; — düzeltilmeli, yoksa göç başarısız olur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olası&lt;/strong&gt; — göçü etkileyebilir, insan değerlendirmesi gerektirir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İsteğe bağlı&lt;/strong&gt; — önerilen iyileştirmeler, göçü engellemez&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ve her sorun etkilenen dosyalara ve satır numaralarına bağlantı veriyor, neyin yanlış olduğunu ve neden hedef platformunuz için önemli olduğunu ayrıntılı açıklıyor, somut düzeltme adımları sunuyor (sadece &amp;ldquo;bunu düzelt&amp;rdquo; değil) ve resmi belgelere bağlantılar içeriyor.&lt;/p&gt;
&lt;p&gt;Bireysel sorunları geliştiricilere verebilir ve harekete geçmek için ihtiyaç duydukları her şeye sahip olurlar. Bu, &amp;ldquo;bir sorun var&amp;rdquo; diyen bir araç ile nasıl çözüleceğini söyleyen bir araç arasındaki farktır.&lt;/p&gt;
&lt;h2 id="kapsanan-yükseltme-yolları"&gt;Kapsanan yükseltme yolları&lt;/h2&gt;
&lt;p&gt;.NET için özellikle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework → .NET 10&lt;/li&gt;
&lt;li&gt;ASP.NET → ASP.NET Core&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Her yükseltme yolunun, hangi API&amp;rsquo;ların kaldırıldığını, hangi desenlerin doğrudan eşdeğerinin bulunmadığını ve hangi güvenlik sorunlarının ele alınması gerektiğini bilen algılama kuralları var.&lt;/p&gt;
&lt;p&gt;Birden fazla uygulamayı yöneten ekipler için çok-repo toplu değerlendirmeleri destekleyen bir CLI de var — tüm repoları klonlayın, hepsini değerlendirin, uygulama başına raporlar artı toplu portföy görünümü alın.&lt;/p&gt;
&lt;h2 id="benim-düşüncem"&gt;Benim düşüncem&lt;/h2&gt;
&lt;p&gt;Eski .NET Framework uygulamalarının üzerinde oturuyorsanız (ve gerçekçi olalım, çoğu kurumsal ekip oturuyor), bu başlamak için &lt;em&gt;tek&lt;/em&gt; araçtır. Değerlendirme belgesi tek başına zamana değer — belirsiz bir &amp;ldquo;modernize etmeliyiz&amp;quot;i, somut ve önceliklendirilmiş, net ileriye dönük yolları olan bir iş öğeleri listesine dönüştürür.&lt;/p&gt;
&lt;p&gt;İş birliğine dayalı iş akışı da akıllıca: değerlendirmeleri dışa aktarın, ekibinizle paylaşın, yeniden çalıştırmadan içe aktarın. Karar vericilerin araçları çalıştıranlar olmadığı mimari incelemeler? Karşılandı.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;GitHub Copilot&amp;rsquo;un modernizasyon değerlendirmesi, .NET göçünü korkunç, tanımsız bir projeden yapılandırılmış, izlenebilir bir sürece dönüştürüyor. Nerede durduğunuzu görmek için önerilen değerlendirmeyle başlayın, ardından Azure hedeflerini karşılaştırmak ve göç planınızı oluşturmak için özel değerlendirmeleri kullanın.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;Tam anlatımı&lt;/a&gt; okuyun ve kendi kod tabanınızda denemek için &lt;a href="https://aka.ms/ghcp-appmod/vscode-ext"&gt;VS Code uzantısını&lt;/a&gt; alın.&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>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>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>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>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>