<?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/id/tags/azure/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</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/id/tags/azure/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure MCP Server Kini .mcpb — Instal Tanpa Runtime Apapun</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>Azure MCP Server kini tersedia sebagai MCP Bundle (.mcpb) — unduh, seret ke Claude Desktop, selesai. Tidak perlu Node.js, Python, atau .NET.</description><content:encoded>&lt;p&gt;&lt;em&gt;Posting ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tahu apa yang menjengkelkan dari pengaturan server MCP? Anda memerlukan runtime. Node.js untuk versi npm, Python untuk pip/uvx, .NET SDK untuk varian dotnet.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;Azure MCP Server baru saja mengubah itu&lt;/a&gt;. Kini tersedia sebagai &lt;code&gt;.mcpb&lt;/code&gt; — MCP Bundle — dan pengaturannya adalah seret-dan-lepas.&lt;/p&gt;
&lt;h2 id="apa-itu-mcp-bundle"&gt;Apa itu MCP Bundle?&lt;/h2&gt;
&lt;p&gt;Bayangkan seperti ekstensi VS Code (&lt;code&gt;.vsix&lt;/code&gt;) atau ekstensi browser (&lt;code&gt;.crx&lt;/code&gt;), tetapi untuk server MCP. File &lt;code&gt;.mcpb&lt;/code&gt; adalah arsip ZIP mandiri yang menyertakan biner server dan semua dependensinya.&lt;/p&gt;
&lt;h2 id="cara-menginstal"&gt;Cara Menginstal&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Unduh bundle untuk platform Anda&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Buka &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;halaman GitHub Releases&lt;/a&gt; dan unduh file &lt;code&gt;.mcpb&lt;/code&gt; untuk OS dan arsitektur Anda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Instal di Claude Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cara termudah: seret dan lepas file &lt;code&gt;.mcpb&lt;/code&gt; ke jendela Claude Desktop saat Anda berada di halaman pengaturan Extensions (&lt;code&gt;☰ → File → Settings → Extensions&lt;/code&gt;). Tinjau detail server, klik Install, konfirmasi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Autentikasi ke Azure&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;p&gt;Selesai. Azure MCP Server menggunakan kredensial Azure Anda yang ada.&lt;/p&gt;
&lt;h2 id="untuk-memulai"&gt;Untuk Memulai&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unduhan&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;Repo&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;Docs&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;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;posting lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>GPT-5.5 Hadir di Azure Foundry — Yang Perlu Diketahui Developer .NET</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/gpt-55-foundry-ga-what-dotnet-developers-need-to-know/</guid><description>GPT-5.5 tersedia umum di Microsoft Foundry. Evolusi dari GPT-5 ke 5.5, apa yang benar-benar meningkat dan cara mulai menggunakannya di agent Anda hari ini.</description><content:encoded>&lt;p&gt;&lt;em&gt;Posting ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/gpt-55-foundry-ga-what-dotnet-developers-need-to-know/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Microsoft baru saja mengumumkan bahwa &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 tersedia umum di Microsoft Foundry&lt;/a&gt;. Jika Anda membangun agent di Azure, inilah pembaruan yang Anda tunggu.&lt;/p&gt;
&lt;h2 id="evolusi-gpt-5"&gt;Evolusi GPT-5&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5&lt;/strong&gt;: menyatukan penalaran dan kecepatan dalam satu sistem&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.4&lt;/strong&gt;: penalaran multi-langkah yang lebih kuat, kemampuan agentik awal untuk enterprise&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.5&lt;/strong&gt;: penalaran konteks panjang yang lebih dalam, eksekusi agentik yang lebih andal, efisiensi token yang lebih baik&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="yang-benar-benar-berubah"&gt;Yang Benar-benar Berubah&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Pengkodean agentik yang ditingkatkan&lt;/strong&gt;: GPT-5.5 mempertahankan konteks di seluruh basis kode besar, mendiagnosis kegagalan tingkat arsitektur, dan mengantisipasi persyaratan pengujian. Model bernalar tentang &lt;em&gt;apa lagi&lt;/em&gt; yang dipengaruhi perbaikan sebelum bertindak.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Efisiensi token&lt;/strong&gt;: Output berkualitas lebih tinggi dengan lebih sedikit token dan lebih sedikit percobaan ulang. Biaya dan latensi langsung lebih rendah untuk deployment produksi.&lt;/p&gt;
&lt;h2 id="harga"&gt;Harga&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input ($/M token)&lt;/th&gt;
&lt;th&gt;Input Cache&lt;/th&gt;
&lt;th&gt;Output ($/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="mengapa-foundry-penting"&gt;Mengapa Foundry Penting&lt;/h2&gt;
&lt;p&gt;Foundry Agent Service memungkinkan Anda mendefinisikan agent dalam YAML atau menghubungkannya dengan Microsoft Agent Framework, GitHub Copilot SDK, LangGraph, atau OpenAI Agents SDK — dan menjalankannya sebagai agent yang di-host secara terisolasi dengan sistem file persisten, identitas Microsoft Entra tersendiri, dan harga scale-to-zero.&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;Anda adalah asisten yang membantu.&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;AgentSaya&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;Lihat &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;pengumuman lengkap&lt;/a&gt; untuk semua detail.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: Satu Endpoint untuk Semua Alat Agen AI</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>Microsoft Foundry meluncurkan Toolboxes dalam preview publik — cara untuk mengelola dan mengekspos alat agen AI melalui satu endpoint yang kompatibel dengan MCP.</description><content:encoded>&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ada masalah yang terlihat sepele sampai benar-benar dihadapi: organisasi membangun beberapa agen AI, masing-masing butuh alat, dan setiap tim mengonfigurasinya dari awal. Integrasi pencarian web yang sama, konfigurasi Azure AI Search yang sama, koneksi server GitHub MCP yang sama — tapi di repositori berbeda, oleh tim berbeda, dengan kredensial berbeda, tanpa tata kelola bersama.&lt;/p&gt;
&lt;p&gt;Microsoft Foundry baru saja meluncurkan &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; dalam preview publik, dan ini adalah jawaban langsung atas masalah tersebut.&lt;/p&gt;
&lt;h2 id="apa-itu-toolbox"&gt;Apa itu Toolbox?&lt;/h2&gt;
&lt;p&gt;Toolbox adalah bundel alat bernama yang dapat digunakan kembali, didefinisikan sekali di Foundry dan diekspos melalui satu endpoint yang kompatibel dengan MCP. Runtime agen apa pun yang berbicara MCP dapat mengonsumsinya — tidak ada lock-in ke Foundry Agents.&lt;/p&gt;
&lt;p&gt;Janjinya sederhana: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. Definisikan alat, konfigurasikan autentikasi secara terpusat (OAuth passthrough, identitas terkelola Entra), terbitkan endpoint. Setiap agen yang membutuhkan alat tersebut terhubung ke endpoint dan mendapatkan semuanya.&lt;/p&gt;
&lt;h2 id="empat-pilar-dua-tersedia-hari-ini"&gt;Empat pilar (dua tersedia hari ini)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pilar&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Apa yang dilakukan&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;Segera hadir&lt;/td&gt;
&lt;td&gt;Temukan alat yang disetujui tanpa pencarian manual&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;Tersedia&lt;/td&gt;
&lt;td&gt;Kelompokkan alat ke dalam bundel yang dapat digunakan kembali&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;Tersedia&lt;/td&gt;
&lt;td&gt;Satu endpoint MCP mengekspos semua alat&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;Segera hadir&lt;/td&gt;
&lt;td&gt;Autentikasi terpusat + observabilitas untuk semua panggilan alat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="contoh-praktis"&gt;Contoh praktis&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;Cari dokumentasi dan respons issues GitHub.&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;Cari dokumentasi publik&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;Setelah diterbitkan, Foundry menyediakan endpoint terpadu. Satu koneksi, semua alat.&lt;/p&gt;
&lt;h2 id="tidak-terkunci-di-foundry-agents"&gt;Tidak terkunci di Foundry Agents&lt;/h2&gt;
&lt;p&gt;Toolboxes &lt;strong&gt;dibuat dan dikelola&lt;/strong&gt; di Foundry, tapi permukaan konsumsinya adalah protokol MCP yang terbuka. Bisa digunakan dari agen kustom (Microsoft Agent Framework, LangGraph), GitHub Copilot dan IDE lain yang mendukung MCP.&lt;/p&gt;
&lt;h2 id="mengapa-penting-sekarang"&gt;Mengapa penting sekarang&lt;/h2&gt;
&lt;p&gt;Gelombang multi-agen sedang tiba di produksi. Setiap agen baru adalah permukaan baru untuk konfigurasi duplikat, kredensial usang, dan perilaku tidak konsisten. Fondasi Build + Consume cukup untuk mulai sentralisasi. Ketika pilar Govern tiba, akan ada lapisan alat yang sepenuhnya dapat diamati dan dikontrol secara terpusat untuk seluruh armada agen.&lt;/p&gt;
&lt;h2 id="penutup"&gt;Penutup&lt;/h2&gt;
&lt;p&gt;Ini masih awal — preview publik, Python SDK dulu, Discover dan Govern masih akan datang. Tapi modelnya kokoh dan desain MCP-native berarti bekerja dengan alat yang sudah dibangun. Cek &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;pengumuman resmi&lt;/a&gt; untuk memulai.&lt;/p&gt;</content:encoded></item><item><title>azd + GitHub Copilot: Penyiapan Proyek Berbantuan AI dan Pemecahan Masalah Error Cerdas</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/</guid><description>Azure Developer CLI kini terintegrasi dengan GitHub Copilot untuk membuat infrastruktur proyek dan menyelesaikan error deployment — tanpa keluar dari terminal.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Artikel ini diterjemahkan secara otomatis. Untuk versi asli dalam bahasa Inggris, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kamu pasti pernah mengalami momen ketika ingin men-deploy aplikasi yang sudah ada ke Azure, lalu menatap file &lt;code&gt;azure.yaml&lt;/code&gt; yang kosong sambil mencoba mengingat apakah Express API-mu harus menggunakan Container Apps atau App Service? Momen itu kini jauh lebih singkat.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) kini terintegrasi dengan GitHub Copilot dalam dua cara yang nyata: scaffolding proyek berbantuan AI selama &lt;code&gt;azd init&lt;/code&gt;, dan pemecahan masalah error cerdas ketika deployment gagal. Kedua fitur ini sepenuhnya berjalan di dalam terminal.&lt;/p&gt;
&lt;h2 id="setup-dengan-copilot-selama-azd-init"&gt;Setup dengan Copilot selama azd init&lt;/h2&gt;
&lt;p&gt;Saat menjalankan &lt;code&gt;azd init&lt;/code&gt;, kini ada opsi &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Pilih itu dan Copilot akan menganalisis codebase-mu untuk menghasilkan &lt;code&gt;azure.yaml&lt;/code&gt;, template infrastruktur, dan modul Bicep — berdasarkan kode aslimu.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd init
# Pilih: &amp;#34;Set up with GitHub Copilot (Preview)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Prasyarat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;azd 1.23.11 atau lebih baru&lt;/strong&gt; — cek dengan &lt;code&gt;azd version&lt;/code&gt; atau perbarui dengan &lt;code&gt;azd update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Langganan GitHub Copilot aktif&lt;/strong&gt; (Individual, Business, atau Enterprise)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub CLI (&lt;code&gt;gh&lt;/code&gt;)&lt;/strong&gt; — &lt;code&gt;azd&lt;/code&gt; akan meminta login jika diperlukan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yang menurutku benar-benar berguna: ini bekerja dua arah. Membangun dari nol? Copilot membantu mengonfigurasi layanan Azure yang tepat sejak awal. Punya aplikasi yang ingin di-deploy? Arahkan Copilot ke sana dan konfigurasi akan dibuat tanpa perlu restrukturisasi kode apapun.&lt;/p&gt;
&lt;h3 id="yang-sebenarnya-dilakukan"&gt;Yang sebenarnya dilakukan&lt;/h3&gt;
&lt;p&gt;Katakanlah kamu punya Node.js Express API dengan dependensi PostgreSQL. Daripada memutuskan manual antara Container Apps dan App Service, lalu menulis Bicep dari nol, Copilot mendeteksi stack-mu dan menghasilkan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; dengan pengaturan &lt;code&gt;language&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, dan &lt;code&gt;build&lt;/code&gt; yang tepat&lt;/li&gt;
&lt;li&gt;Modul Bicep untuk Azure Container Apps&lt;/li&gt;
&lt;li&gt;Modul Bicep untuk Azure Database for PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dan menjalankan pemeriksaan awal sebelum mengubah apapun — memverifikasi direktori git bersih, meminta persetujuan alat server MCP di awal. Tidak ada yang terjadi tanpa kamu tahu persis apa yang akan berubah.&lt;/p&gt;
&lt;h2 id="pemecahan-masalah-error-dengan-copilot"&gt;Pemecahan Masalah Error dengan Copilot&lt;/h2&gt;
&lt;p&gt;Error deployment adalah hal yang tak terhindarkan. Parameter yang hilang, masalah izin, ketersediaan SKU — dan pesan error jarang memberitahumu satu hal yang benar-benar perlu kamu ketahui: &lt;em&gt;cara memperbaikinya&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tanpa Copilot, siklusnya terlihat seperti: salin error → cari di docs → baca tiga jawaban Stack Overflow yang tidak relevan → jalankan beberapa perintah &lt;code&gt;az&lt;/code&gt; CLI → coba lagi dan berharap. Dengan Copilot terintegrasi di &lt;code&gt;azd&lt;/code&gt;, siklus ini runtuh. Saat perintah &lt;code&gt;azd&lt;/code&gt; apapun gagal, langsung ditawarkan empat pilihan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Explain&lt;/strong&gt; — penjelasan dalam bahasa sederhana tentang apa yang salah&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guidance&lt;/strong&gt; — instruksi langkah demi langkah untuk memperbaiki masalah&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diagnose and Guide&lt;/strong&gt; — analisis lengkap + Copilot menerapkan perbaikan (dengan persetujuanmu) + retry opsional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skip&lt;/strong&gt; — tangani sendiri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Poin kuncinya: Copilot sudah memiliki konteks tentang proyekmu, perintah yang gagal, dan detail error. Sarannya spesifik untuk &lt;em&gt;situasimu&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id="mengatur-perilaku-default"&gt;Mengatur Perilaku Default&lt;/h3&gt;
&lt;p&gt;Jika selalu memilih opsi yang sama, lewati prompt interaktif:&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;Nilai: &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;. Kamu juga bisa mengaktifkan auto-fix dan retry:&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;Kembali ke mode interaktif kapan saja:&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="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Jalankan &lt;code&gt;azd update&lt;/code&gt; untuk mendapatkan versi terbaru dan coba &lt;code&gt;azd init&lt;/code&gt; di proyek berikutnya.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-copilot-integration/"&gt;pengumuman aslinya di sini&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Eksperimen AI Anda di Azure Membakar Uang — Inilah Cara Memperbaikinya</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/</guid><description>Beban kerja AI di Azure bisa cepat mahal. Mari bicara tentang apa yang sebenarnya berhasil untuk mengontrol biaya tanpa memperlambat pengembangan.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda sedang membangun aplikasi bertenaga AI di Azure sekarang, Anda mungkin sudah menyadari sesuatu: tagihan cloud Anda terlihat berbeda. Bukan hanya lebih tinggi — lebih aneh. Lonjakan. Sulit diprediksi.&lt;/p&gt;
&lt;p&gt;Microsoft baru saja menerbitkan artikel bagus tentang &lt;a href="https://azure.microsoft.com/en-us/blog/cloud-cost-optimization-principles-that-still-matter/"&gt;prinsip optimasi biaya cloud yang masih penting&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mengapa-beban-kerja-ai-berbeda"&gt;Mengapa beban kerja AI berbeda&lt;/h2&gt;
&lt;p&gt;Beban kerja .NET tradisional relatif dapat diprediksi. Beban kerja AI? Tidak sama sekali. Anda menguji beberapa model, menjalankan infrastruktur berbasis GPU, dan membuat panggilan API Azure OpenAI di mana konsumsi token bervariasi drastis.&lt;/p&gt;
&lt;h2 id="manajemen-vs-optimasi--ketahui-perbedaannya"&gt;Manajemen vs. optimasi — ketahui perbedaannya&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manajemen&lt;/strong&gt;: pelacakan dan pelaporan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimasi&lt;/strong&gt;: membuat keputusan nyata. Apakah Anda benar-benar membutuhkan tingkat S3? Apakah instance yang selalu menyala itu duduk menganggur di akhir pekan?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="yang-benar-benar-berhasil"&gt;Yang benar-benar berhasil&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Beri tag sumber daya Anda&lt;/strong&gt; — jika tidak bisa tahu proyek mana yang menghabiskan anggaran, tidak bisa mengoptimalkan apa pun&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pasang perlindungan sebelum bereksperimen&lt;/strong&gt; — gunakan Azure Policy untuk membatasi SKU mahal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sesuaikan ukuran secara terus-menerus&lt;/strong&gt; — periksa rekomendasi Azure Advisor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pikirkan siklus hidup&lt;/strong&gt; — sumber daya dev harus dimatikan saat tidak digunakan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ukur nilai, bukan hanya biaya&lt;/strong&gt; — model yang lebih mahal tetapi menghasilkan hasil jauh lebih baik mungkin pilihan yang tepat&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>RFT Foundry Menjadi Lebih Murah dan Lebih Pintar — Inilah yang Berubah</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/foundry-fine-tuning-april-2026-rft-graders/</guid><description>Microsoft Foundry mengirimkan tiga pembaruan RFT bulan ini: pelatihan global untuk o4-mini, penilai model GPT-4.1 baru, dan panduan praktik terbaik.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/foundry-fine-tuning-april-2026-rft-graders/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda membangun aplikasi .NET yang mengandalkan model yang disetel halus, pembaruan Foundry bulan ini layak diperhatikan.&lt;/p&gt;
&lt;p&gt;Detail lengkap ada di &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-foundry-finetune-april-2026/"&gt;pengumuman resmi&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="pelatihan-global-untuk-o4-mini"&gt;Pelatihan Global untuk o4-mini&lt;/h2&gt;
&lt;p&gt;o4-mini adalah model yang digunakan untuk beban kerja penalaran berat dan agentik. Anda kini dapat meluncurkan pekerjaan penyetelan halus dari 13+ region Azure dengan tarif pelatihan per-token yang lebih rendah.&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="s2"&gt;&amp;#34;trainingType&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;globalstandard&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="penilai-model-baru-keluarga-gpt-41"&gt;Penilai Model Baru: Keluarga GPT-4.1&lt;/h2&gt;
&lt;p&gt;Tiga opsi baru: GPT-4.1, GPT-4.1-mini, dan GPT-4.1-nano.&lt;/p&gt;
&lt;p&gt;Strategi pengelompokan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-4.1-nano&lt;/strong&gt; untuk iterasi awal. Biaya rendah, loop umpan balik cepat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-4.1-mini&lt;/strong&gt; setelah rubrik penilaian stabil.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-4.1&lt;/strong&gt; untuk penilaian produksi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="jebakan-format-data-rft"&gt;Jebakan Format Data RFT&lt;/h2&gt;
&lt;p&gt;Format data RFT berbeda dari SFT. Pesan terakhir di setiap baris harus berperan User atau Developer — bukan Assistant.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting-bagi-pengembang-net"&gt;Mengapa ini penting bagi pengembang .NET&lt;/h2&gt;
&lt;p&gt;Pelatihan yang lebih murah berarti Anda dapat melakukan iterasi lebih agresif. &lt;a href="https://github.com/microsoft-foundry/fine-tuning/blob/main/Demos/Agentic_RFT_PrivatePreview/RFT_Best_Practice.md"&gt;Panduan praktik terbaik di GitHub&lt;/a&gt; akan menghemat waktu debugging.&lt;/p&gt;</content:encoded></item><item><title>Alat Azure MCP Kini Tertanam di Visual Studio 2022 — Tanpa Ekstensi</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>Alat Azure MCP dikirim sebagai bagian dari workload pengembangan Azure di Visual Studio 2022. Lebih dari 230 alat, 45 layanan Azure, nol ekstensi untuk dipasang.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda menggunakan alat Azure MCP di Visual Studio melalui ekstensi terpisah, Anda tahu prosesnya — instal VSIX, restart, berharap tidak rusak, kelola ketidakcocokan versi. Gesekan itu hilang.&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;mengumumkan&lt;/a&gt; bahwa alat Azure MCP kini dikirim langsung sebagai bagian dari workload pengembangan Azure di Visual Studio 2022. Tanpa ekstensi. Tanpa VSIX.&lt;/p&gt;
&lt;h2 id="cara-mengaktifkannya"&gt;Cara mengaktifkannya&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Perbarui ke Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; atau lebih tinggi&lt;/li&gt;
&lt;li&gt;Pastikan workload &lt;strong&gt;Azure development&lt;/strong&gt; terinstal&lt;/li&gt;
&lt;li&gt;Buka GitHub Copilot Chat&lt;/li&gt;
&lt;li&gt;Klik tombol &lt;strong&gt;Pilih alat&lt;/strong&gt; (ikon dua kunci pas)&lt;/li&gt;
&lt;li&gt;Aktifkan &lt;strong&gt;Azure MCP Server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tetap aktif di antara sesi.&lt;/p&gt;
&lt;h2 id="catatan"&gt;Catatan&lt;/h2&gt;
&lt;p&gt;Alat dinonaktifkan secara default — Anda perlu mengaktifkannya. Bagi developer .NET yang tinggal di Visual Studio, ini mengurangi alasan untuk beralih konteks ke portal Azure.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 Mendapatkan MongoDB EF Core dan Azure Data Lake — Dua Integrasi yang Patut Dicoba</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/</guid><description>Aspire 13.2 menambahkan integrasi MongoDB Entity Framework Core dan Azure Data Lake Storage dengan health check otomatis dan service discovery. Inilah tampilannya dalam praktik.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aspire 13.2 hadir dengan dua integrasi database baru yang patut diperhatikan: MongoDB Entity Framework Core dan Azure Data Lake Storage.&lt;/p&gt;
&lt;h2 id="mongodb-bertemu-ef-core-di-aspire"&gt;MongoDB bertemu EF Core di Aspire&lt;/h2&gt;
&lt;p&gt;Aspire telah mendukung MongoDB untuk sementara, tapi selalu driver mentah — tidak ada EF Core, tidak ada DbContext, tidak ada kueri LINQ. Sekarang Anda mendapatkan pengalaman EF Core penuh dengan MongoDB, beserta health check otomatis dan service discovery dari Aspire.&lt;/p&gt;
&lt;p&gt;Pengaturan di AppHost:&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;Di proyek yang menggunakan:&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;Daftarkan DbContext Anda:&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;Integrasi menangani connection pooling, trace OpenTelemetry, dan health check di belakang layar.&lt;/p&gt;
&lt;h2 id="azure-data-lake-storage-bergabung"&gt;Azure Data Lake Storage bergabung&lt;/h2&gt;
&lt;p&gt;Di AppHost:&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;Di proyek yang menggunakan:&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;Tidak ada manajemen connection string manual, tidak ada pencarian kredensial.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 adalah rilis inkremental, tapi integrasi MongoDB EF Core dan Data Lake mengisi celah nyata. &lt;a href="https://get.aspire.dev"&gt;Upgrade ke 13.2&lt;/a&gt; dan coba.&lt;/p&gt;</content:encoded></item><item><title>azd update — Satu Perintah untuk Semua Package Manager Anda</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI kini memiliki perintah pembaruan universal yang bekerja terlepas dari cara Anda menginstalnya — winget, Homebrew, Chocolatey, atau skrip instalasi.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu pesan &amp;ldquo;Versi baru azd tersedia&amp;rdquo; yang muncul setiap beberapa minggu? Yang Anda abaikan karena tidak ingat apakah Anda menginstal &lt;code&gt;azd&lt;/code&gt; melalui winget, Homebrew, atau skrip curl enam bulan lalu? Ini akhirnya diperbaiki.&lt;/p&gt;
&lt;p&gt;Microsoft baru saja merilis &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — perintah tunggal yang memperbarui Azure Developer CLI ke versi terbaru terlepas dari cara asli Anda menginstalnya.&lt;/p&gt;
&lt;h2 id="cara-kerjanya"&gt;Cara kerjanya&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;Itu saja. Untuk akses awal ke fitur baru:&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;Perintah mendeteksi metode instalasi Anda saat ini dan menggunakan mekanisme pembaruan yang sesuai di balik layar.&lt;/p&gt;
&lt;h2 id="catatan-kecil"&gt;Catatan kecil&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; hadir mulai versi 1.23.x. Jika Anda menggunakan versi lebih lama, Anda perlu melakukan satu pembaruan manual terakhir. Setelah itu, &lt;code&gt;azd update&lt;/code&gt; menangani semuanya.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting"&gt;Mengapa ini penting&lt;/h2&gt;
&lt;p&gt;Ini adalah peningkatan kualitas hidup yang kecil, tetapi bagi yang menggunakan &lt;code&gt;azd&lt;/code&gt; setiap hari untuk men-deploy agen AI dan aplikasi Aspire ke Azure, tetap terkini itu penting.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;pengumuman lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure Smart Tier Kini GA — Optimasi Biaya Blob Storage Otomatis Tanpa Aturan Siklus Hidup</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/</guid><description>Tingkat cerdas Azure Blob Storage kini tersedia secara umum, secara otomatis memindahkan objek antara tingkat hot, cool, dan cold berdasarkan pola akses aktual.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda pernah menghabiskan waktu menyetel kebijakan siklus hidup Azure Blob Storage dan kemudian menyaksikannya runtuh ketika pola akses berubah, ini untuk Anda. Microsoft baru saja mengumumkan &lt;a href="https://azure.microsoft.com/en-us/blog/optimize-object-storage-costs-automatically-with-smart-tier-now-generally-available/"&gt;ketersediaan umum smart tier&lt;/a&gt; untuk Azure Blob dan Data Lake Storage.&lt;/p&gt;
&lt;h2 id="yang-sebenarnya-dilakukan-smart-tier"&gt;Yang sebenarnya dilakukan smart tier&lt;/h2&gt;
&lt;p&gt;Smart tier terus mengevaluasi waktu akses terakhir setiap objek di akun penyimpanan Anda. Data yang sering diakses tetap di hot, data tidak aktif pindah ke cool setelah 30 hari, lalu ke cold setelah 60 hari lagi. Saat data diakses lagi, langsung dipromosikan kembali ke hot.&lt;/p&gt;
&lt;p&gt;Tidak ada aturan siklus hidup yang perlu dikonfigurasi. Tidak ada penyesuaian manual.&lt;/p&gt;
&lt;p&gt;Selama pratinjau, Microsoft melaporkan bahwa &lt;strong&gt;lebih dari 50% kapasitas yang dikelola smart tier secara otomatis berpindah ke tingkat lebih dingin&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting-untuk-developer-net"&gt;Mengapa ini penting untuk developer .NET&lt;/h2&gt;
&lt;p&gt;Skenario praktis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Telemetri dan log aplikasi&lt;/strong&gt; — panas saat debugging, jarang diakses setelah beberapa minggu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline data dan output ETL&lt;/strong&gt; — akses intensif saat pemrosesan, lalu sebagian besar dingin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konten yang dibuat pengguna&lt;/strong&gt; — unggahan terbaru panas, konten lama mendingin secara bertahap&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pertukaran-yang-perlu-diketahui"&gt;Pertukaran yang perlu diketahui&lt;/h2&gt;
&lt;p&gt;Aturan peringkatan smart tier bersifat statis (30 hari → cool, 90 hari → cold). Jika Anda membutuhkan ambang batas kustom, aturan siklus hidup masih berlaku.&lt;/p&gt;</content:encoded></item><item><title>Di Mana Anda Harus Meng-host Agen AI di Azure? Panduan Keputusan Praktis</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</guid><description>Azure menawarkan enam cara untuk meng-host agen AI — dari kontainer mentah hingga Foundry Hosted Agents yang sepenuhnya dikelola. Inilah cara memilih yang tepat untuk workload .NET Anda.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda sedang membangun agen AI dengan .NET sekarang, Anda mungkin sudah memperhatikan: ada &lt;em&gt;banyak&lt;/em&gt; cara untuk meng-host-nya di Azure. Container Apps, AKS, Functions, App Service, Foundry Agents, Foundry Hosted Agents.&lt;/p&gt;
&lt;p&gt;Microsoft baru saja menerbitkan &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;panduan komprehensif untuk hosting agen Azure AI&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="enam-opsi-sekilas"&gt;Enam opsi sekilas&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Opsi&lt;/th&gt;
&lt;th&gt;Terbaik untuk&lt;/th&gt;
&lt;th&gt;Anda kelola&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;Kontrol container penuh tanpa kerumitan K8s&lt;/td&gt;
&lt;td&gt;Observabilitas, state, siklus hidup&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;Kepatuhan enterprise, multi-cluster&lt;/td&gt;
&lt;td&gt;Semuanya&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;Tugas singkat berbasis event&lt;/td&gt;
&lt;td&gt;Hampir tidak ada&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;Agen HTTP sederhana&lt;/td&gt;
&lt;td&gt;Deployment, scaling&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;Agen opsional kode&lt;/td&gt;
&lt;td&gt;Hampir tidak ada&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;Agen framework kustom&lt;/td&gt;
&lt;td&gt;Hanya kode agen Anda&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="foundry-hosted-agents--titik-manis-untuk-developer-agen-net"&gt;Foundry Hosted Agents — titik manis untuk developer agen .NET&lt;/h2&gt;
&lt;p&gt;Deployment benar-benar sederhana:&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 ext install azure.ai.agents
&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;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Satu perintah &lt;code&gt;azd up&lt;/code&gt; membangun container, mendorongnya ke ACR, menyediakan proyek Foundry, dan memulai agen.&lt;/p&gt;
&lt;h2 id="kerangka-keputusan-saya"&gt;Kerangka keputusan saya&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Butuh infrastruktur nol?&lt;/strong&gt; → Foundry Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Punya kode agen kustom tapi ingin hosting terkelola?&lt;/strong&gt; → Foundry Hosted Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tugas singkat berbasis event?&lt;/strong&gt; → Azure Functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kontrol container maksimum?&lt;/strong&gt; → Container Apps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kepatuhan ketat dan multi-cluster?&lt;/strong&gt; → AKS&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Untuk sebagian besar developer .NET yang membangun dengan Semantic Kernel atau Microsoft Agent Framework, Hosted Agents kemungkinan adalah titik awal yang tepat. Cek &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;panduan lengkap dari Microsoft&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Agent Skills di .NET Kini Benar-Benar Fleksibel</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/agent-skills-dotnet-three-authoring-patterns/</guid><description>Microsoft Agent Framework kini mendukung tiga cara penulisan skill — file, kelas, dan kode inline — semuanya disusun melalui satu provider. Inilah alasannya penting dan cara menggunakan masing-masing.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/agent-skills-dotnet-three-authoring-patterns/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda membangun agen dengan Microsoft Agent Framework, Anda sudah tahu caranya: Anda mendefinisikan skill, menghubungkannya ke provider, dan membiarkan agen menentukan mana yang harus dipanggil. Yang baru adalah &lt;em&gt;bagaimana&lt;/em&gt; Anda menulis skill tersebut — dan lompatan fleksibilitasnya signifikan.&lt;/p&gt;
&lt;p&gt;Pembaruan terbaru memperkenalkan tiga pola authoring berbeda untuk agent skill: &lt;strong&gt;berbasis file&lt;/strong&gt;, &lt;strong&gt;berbasis kelas&lt;/strong&gt;, dan &lt;strong&gt;didefinisikan kode inline&lt;/strong&gt;. Ketiganya terhubung ke satu &lt;code&gt;AgentSkillsProviderBuilder&lt;/code&gt;, artinya Anda bisa mix and match tanpa logika routing.&lt;/p&gt;
&lt;h2 id="skill-berbasis-file-titik-awal"&gt;Skill berbasis file: titik awal&lt;/h2&gt;
&lt;p&gt;Skill berbasis file persis seperti namanya — direktori di disk dengan file &lt;code&gt;SKILL.md&lt;/code&gt;, skrip opsional, dan dokumen referensi:&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;Frontmatter &lt;code&gt;SKILL.md&lt;/code&gt; mendeklarasikan nama dan deskripsi skill, dan bagian instruksi memberi tahu agen cara menggunakan skrip dan referensi.&lt;/p&gt;
&lt;p&gt;Kemudian Anda menghubungkannya dengan &lt;code&gt;SubprocessScriptRunner.RunAsync&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="skill-berbasis-kelas-kirim-via-nuget"&gt;Skill berbasis kelas: kirim via NuGet&lt;/h2&gt;
&lt;p&gt;Di sinilah yang menarik bagi tim. Skill berbasis kelas mewarisi dari &lt;code&gt;AgentClassSkill&amp;lt;T&amp;gt;&lt;/code&gt; dan menggunakan atribut seperti &lt;code&gt;[AgentSkillResource]&lt;/code&gt; dan &lt;code&gt;[AgentSkillScript]&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="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 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="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;Sebuah tim bisa mengemas ini sebagai paket NuGet. Tambahkan ke proyek, masukkan ke builder, dan bekerja bersama skill berbasis file Anda.&lt;/p&gt;
&lt;h2 id="skill-inline-jembatan-cepat"&gt;Skill inline: jembatan cepat&lt;/h2&gt;
&lt;p&gt;Saat tim lain membangun skill yang persis Anda butuhkan tapi tidak akan siap dalam satu sprint? &lt;code&gt;AgentInlineSkill&lt;/code&gt; adalah jembatan Anda:&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;1. Minta ID karyawan. 2. Gunakan calculate-balance. 3. Sajikan hasilnya.&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;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;remaining&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="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="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;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;Ketika paket NuGet akhirnya dikirim, Anda mengganti skill inline dengan yang berbasis kelas. Agen tidak tahu perbedaannya.&lt;/p&gt;
&lt;h2 id="persetujuan-skrip-human-in-the-loop"&gt;Persetujuan skrip: human-in-the-loop&lt;/h2&gt;
&lt;p&gt;Bagi developer .NET yang membangun agen produksi, inilah bagian yang benar-benar membuka percakapan deployment. Aktifkan &lt;code&gt;UseScriptApproval&lt;/code&gt; dan agen berhenti sebelum menjalankan skrip apapun:&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;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Agent skills di .NET kini memiliki model authoring yang benar-benar fleksibel. Baik Anda membuat prototip dengan skill berbasis file atau mengirim kemampuan yang dikemas via NuGet, semua pola disusun melalui &lt;code&gt;AgentSkillsProviderBuilder&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/agent-framework/agent-skills-in-net-three-ways-to-author-one-provider-to-run-them/"&gt;pengumuman asli&lt;/a&gt; dan &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/02-agents/AgentSkills"&gt;contoh GitHub&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure MCP Server 2.0 Baru Dirilis — Otomasi Cloud Agentic Self-Hosted Sudah Ada</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-mcp-server-2-self-hosted-agentic-cloud/</guid><description>Azure MCP Server 2.0 mencapai stabilitas dengan deployment remote self-hosted, 276 alat di 57 layanan Azure, dan keamanan tingkat enterprise.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-mcp-server-2-self-hosted-agentic-cloud/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda baru-baru ini membangun sesuatu dengan MCP dan Azure, Anda mungkin sudah tahu bahwa pengalaman lokal bekerja dengan baik. Tapi ketika Anda perlu berbagi pengaturan itu ke seluruh tim? Di situlah hal-hal menjadi rumit.&lt;/p&gt;
&lt;p&gt;Tidak lagi. Azure MCP Server &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;baru saja mencapai 2.0 stabil&lt;/a&gt;, dan fitur utamanya adalah persis yang telah diminta tim enterprise: &lt;strong&gt;dukungan server MCP remote self-hosted&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="apa-itu-azure-mcp-server"&gt;Apa itu Azure MCP Server?&lt;/h2&gt;
&lt;p&gt;Azure MCP Server mengimplementasikan spesifikasi &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro"&gt;Model Context Protocol&lt;/a&gt; dan mengekspos kemampuan Azure sebagai alat terstruktur dan dapat ditemukan. Angkanya berbicara sendiri: &lt;strong&gt;276 alat MCP di 57 layanan Azure&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="hal-besar-deployment-remote-self-hosted"&gt;Hal besar: deployment remote self-hosted&lt;/h2&gt;
&lt;p&gt;Dalam skenario tim nyata, Anda membutuhkan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Akses bersama untuk developer dan sistem agen internal&lt;/li&gt;
&lt;li&gt;Konfigurasi terpusat&lt;/li&gt;
&lt;li&gt;Batas jaringan dan kebijakan enterprise&lt;/li&gt;
&lt;li&gt;Integrasi ke pipeline CI/CD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Azure MCP Server 2.0 mengatasi semua ini. Untuk autentikasi, ada dua opsi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Managed Identity&lt;/strong&gt; — saat berjalan bersama &lt;a href="https://aka.ms/azmcp/self-host/foundry"&gt;Microsoft Foundry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alur On-Behalf-Of (OBO)&lt;/strong&gt; — delegasi OpenID Connect dengan izin pengguna yang sebenarnya&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="pengerasan-keamanan"&gt;Pengerasan keamanan&lt;/h2&gt;
&lt;p&gt;Rilis 2.0 menambahkan validasi endpoint yang lebih kuat, perlindungan terhadap pola injection, dan kontrol isolasi yang lebih ketat.&lt;/p&gt;
&lt;h2 id="memulai"&gt;Memulai&lt;/h2&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; — kode sumber, dokumentasi&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; — deployment dalam container&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp/download/vscode"&gt;Ekstensi VS Code&lt;/a&gt;&lt;/strong&gt; — integrasi IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://aka.ms/azmcp/self-host"&gt;Panduan self-hosting&lt;/a&gt;&lt;/strong&gt; — fitur unggulan 2.0&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Agentic Platform Engineering Menjadi Nyata — Git-APE Menunjukkan Caranya</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/agentic-platform-engineering-git-ape/</guid><description>Proyek Git-APE Microsoft mempraktikkan agentic platform engineering — menggunakan agen GitHub Copilot dan Azure MCP untuk mengubah permintaan bahasa alami menjadi infrastruktur cloud yang tervalidasi.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/agentic-platform-engineering-git-ape/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Platform engineering telah menjadi salah satu istilah yang terdengar hebat di konferensi tetapi biasanya berarti &amp;ldquo;kami membangun portal internal dan wrapper Terraform.&amp;rdquo; Janji sebenarnya — self-service infrastruktur yang benar-benar aman, terkendali, dan cepat — selalu beberapa langkah menjauh.&lt;/p&gt;
&lt;p&gt;Tim Azure baru saja menerbitkan &lt;a href="https://devblogs.microsoft.com/all-things-azure/putting-agentic-platform-engineering-to-the-test/"&gt;Bagian 2 dari seri agentic platform engineering mereka&lt;/a&gt;. Mereka menyebutnya &lt;strong&gt;Git-APE&lt;/strong&gt; — sebuah proyek open-source yang menggunakan agen GitHub Copilot dan server Azure MCP untuk mengubah permintaan bahasa alami menjadi infrastruktur yang tervalidasi dan ter-deploy.&lt;/p&gt;
&lt;h2 id="apa-yang-sebenarnya-dilakukan-git-ape"&gt;Apa yang sebenarnya dilakukan Git-APE&lt;/h2&gt;
&lt;p&gt;Ide inti: alih-alih mempelajari modul Terraform, developer berbicara dengan agen Copilot. Agen menginterpretasikan niat, menghasilkan Infrastructure-as-Code, memvalidasi terhadap kebijakan, dan mendeploy — semuanya dalam VS Code.&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;Buka workspace di VS Code, dan file konfigurasi agen ditemukan otomatis oleh GitHub Copilot:&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;Pembersihan sama mudahnya:&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="mengapa-ini-penting"&gt;Mengapa ini penting&lt;/h2&gt;
&lt;p&gt;Bagi yang membangun di Azure, ini menggeser percakapan platform engineering dari &amp;ldquo;bagaimana kami membangun portal&amp;rdquo; menjadi &amp;ldquo;bagaimana kami mendeskripsikan guardrail kami sebagai API.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Sebagai developer .NET: Azure MCP Server dan agen GitHub Copilot bekerja dengan semua workload Azure — ASP.NET Core API Anda, tumpukan .NET Aspire — semuanya bisa menjadi target alur deployment agentik.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Git-APE adalah pandangan awal tetapi konkret tentang agentic platform engineering dalam praktik. Clone &lt;a href="https://github.com/Azure/git-ape"&gt;repositorinya&lt;/a&gt; dan baca &lt;a href="https://devblogs.microsoft.com/all-things-azure/putting-agentic-platform-engineering-to-the-test/"&gt;postingan lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Hubungkan Server MCP Anda di Azure Functions ke Agen Foundry — Begini Caranya</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/foundry-agents-mcp-servers-azure-functions/</guid><description>Bangun server MCP Anda sekali, deploy ke Azure Functions, dan hubungkan ke agen Microsoft Foundry dengan autentikasi yang tepat.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/foundry-agents-mcp-servers-azure-functions/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ada satu hal yang saya sukai tentang ekosistem MCP: Anda membangun server sekali dan bekerja di mana saja.&lt;/p&gt;
&lt;p&gt;Lily Ma dari tim Azure SDK &lt;a href="https://devblogs.microsoft.com/azure-sdk/give-your-foundry-agent-custom-tools-with-mcp-servers-on-azure-functions/"&gt;menerbitkan panduan praktis&lt;/a&gt; tentang menghubungkan server MCP yang di-deploy ke Azure Functions dengan agen Microsoft Foundry.&lt;/p&gt;
&lt;h2 id="mengapa-kombinasi-ini-masuk-akal"&gt;Mengapa kombinasi ini masuk akal&lt;/h2&gt;
&lt;p&gt;Azure Functions memberi Anda infrastruktur yang dapat diskalakan, autentikasi bawaan, dan penagihan tanpa server. Microsoft Foundry memberi Anda agen AI yang dapat bernalar dan bertindak. Menghubungkan keduanya berarti alat kustom Anda menjadi kemampuan agen AI perusahaan.&lt;/p&gt;
&lt;h2 id="opsi-autentikasi"&gt;Opsi autentikasi&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metode&lt;/th&gt;
&lt;th&gt;Kasus Penggunaan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Berbasis kunci&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pengembangan atau server tanpa Entra auth&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;Produksi dengan managed identity&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;Produksi dengan konteks pengguna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tanpa autentikasi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dev/pengujian atau data publik saja&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="pengaturan"&gt;Pengaturan&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deploy server MCP ke Azure Functions&lt;/strong&gt; — sampel tersedia untuk &lt;a href="https://github.com/Azure-Samples/remote-mcp-functions-dotnet"&gt;.NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aktifkan autentikasi MCP bawaan&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dapatkan URL endpoint&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;Tambahkan server MCP sebagai alat di Foundry&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/give-your-foundry-agent-custom-tools-with-mcp-servers-on-azure-functions/"&gt;panduan lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Membangun UI Multi-Agen Real-Time yang Tidak Terasa Seperti Kotak Hitam</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</guid><description>AG-UI dan Microsoft Agent Framework bergabung untuk memberikan alur kerja multi-agen frontend yang layak — dengan streaming real-time, persetujuan manusia, dan visibilitas penuh atas apa yang dilakukan agen Anda.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Begini kenyataan tentang sistem multi-agen: tampilannya luar biasa dalam demo. Tiga agen saling mengoper pekerjaan, memecahkan masalah, mengambil keputusan. Lalu Anda mencoba menampilkannya kepada pengguna nyata dan&amp;hellip; sunyi. Indikator yang berputar. Tidak ada yang tahu agen mana yang melakukan apa atau mengapa sistem berhenti. Ini bukan produk — ini masalah kepercayaan.&lt;/p&gt;
&lt;p&gt;Tim Microsoft Agent Framework baru saja menerbitkan &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;panduan yang luar biasa&lt;/a&gt; tentang cara memadukan alur kerja MAF dengan &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;AG-UI&lt;/a&gt;, protokol terbuka untuk mengalirkan peristiwa eksekusi agen ke frontend melalui Server-Sent Events. Dan jujur saja? Inilah jembatan yang selama ini kita butuhkan.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting-bagi-developer-net"&gt;Mengapa ini penting bagi developer .NET&lt;/h2&gt;
&lt;p&gt;Jika Anda membangun aplikasi bertenaga AI, Anda mungkin sudah pernah menabrak dinding ini. Orkestrasi backend Anda bekerja dengan baik — agen saling meneruskan pekerjaan, alat berjalan, keputusan dibuat. Tapi frontend tidak tahu apa yang terjadi di balik layar. AG-UI mengatasi ini dengan mendefinisikan protokol standar untuk mengalirkan peristiwa agen (&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;) langsung ke lapisan UI Anda melalui SSE.&lt;/p&gt;
&lt;p&gt;Demo yang mereka bangun adalah alur kerja dukungan pelanggan dengan tiga agen: agen triase yang merutekan permintaan, agen pengembalian dana yang menangani urusan keuangan, dan agen pesanan yang mengelola penggantian. Setiap agen memiliki alat-alatnya sendiri, dan topologi handoff didefinisikan secara eksplisit — tidak ada nuansa &amp;ldquo;cari tahu dari prompt&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="topologi-handoff-adalah-bintang-sesungguhnya"&gt;Topologi handoff adalah bintang sesungguhnya&lt;/h2&gt;
&lt;p&gt;Yang menarik perhatian saya adalah bagaimana &lt;code&gt;HandoffBuilder&lt;/code&gt; memungkinkan Anda mendeklarasikan graf perutean berarah antar agen:&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;Setiap &lt;code&gt;add_handoff&lt;/code&gt; membuat sisi berarah dengan deskripsi bahasa alami. Framework menghasilkan alat handoff untuk setiap agen berdasarkan topologi ini. Jadi keputusan perutean didasarkan pada struktur orkestrasi Anda, bukan pada apa yang ingin dilakukan LLM. Ini sangat penting untuk keandalan produksi.&lt;/p&gt;
&lt;h2 id="human-in-the-loop-yang-benar-benar-bekerja"&gt;Human-in-the-loop yang benar-benar bekerja&lt;/h2&gt;
&lt;p&gt;Demo ini memperlihatkan dua pola interupsi yang dibutuhkan oleh aplikasi agen mana pun di dunia nyata:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interupsi persetujuan alat&lt;/strong&gt; — ketika agen memanggil alat yang ditandai dengan &lt;code&gt;approval_mode=&amp;quot;always_require&amp;quot;&lt;/code&gt;, alur kerja dijeda dan mengeluarkan peristiwa. Frontend merender modal persetujuan dengan nama alat dan argumennya. Tidak ada loop percobaan ulang yang membakar token — hanya alur jeda-setujui-lanjutkan yang bersih.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interupsi permintaan informasi&lt;/strong&gt; — ketika agen membutuhkan lebih banyak konteks dari pengguna (seperti ID pesanan), agen berhenti dan bertanya. Frontend menampilkan pertanyaan, pengguna merespons, dan eksekusi dilanjutkan dari tepat di mana ia berhenti.&lt;/p&gt;
&lt;p&gt;Kedua pola dialirkan sebagai peristiwa AG-UI standar, sehingga frontend Anda tidak memerlukan logika khusus per agen — cukup merender peristiwa apa pun yang masuk melalui koneksi SSE.&lt;/p&gt;
&lt;h2 id="menghubungkannya-sangat-sederhana"&gt;Menghubungkannya sangat sederhana&lt;/h2&gt;
&lt;p&gt;Integrasi antara MAF dan AG-UI adalah satu panggilan fungsi:&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; membuat alur kerja baru per thread, sehingga setiap percakapan mendapat status yang terisolasi. Endpoint menangani semua plumbing SSE secara otomatis. Jika Anda sudah menggunakan FastAPI (atau bisa menambahkannya sebagai lapisan ringan), ini hampir tanpa gesekan.&lt;/p&gt;
&lt;h2 id="pandangan-saya"&gt;Pandangan saya&lt;/h2&gt;
&lt;p&gt;Bagi developer .NET, pertanyaan langsung adalah: &amp;ldquo;Bisakah saya melakukan ini di C#?&amp;rdquo; Agent Framework tersedia untuk .NET dan Python, dan protokol AG-UI bersifat language-agnostic (ini hanyalah SSE). Jadi meskipun demo ini menggunakan Python dan FastAPI, polanya langsung dapat diterapkan. Anda bisa menghubungkan ASP.NET Core minimal API dengan endpoint SSE mengikuti skema peristiwa AG-UI yang sama.&lt;/p&gt;
&lt;p&gt;Kesimpulan yang lebih besar adalah bahwa UI multi-agen menjadi perhatian kelas satu, bukan renungan. Jika Anda membangun apa pun di mana agen berinteraksi dengan manusia — dukungan pelanggan, alur kerja persetujuan, pemrosesan dokumen — kombinasi orkestrasi MAF dan transparansi AG-UI adalah pola yang harus diikuti.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;AG-UI + Microsoft Agent Framework memberi Anda yang terbaik dari kedua dunia: orkestrasi multi-agen yang kuat di backend dan visibilitas real-time di frontend. Tidak ada lagi interaksi agen sebagai kotak hitam.&lt;/p&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;panduan lengkap&lt;/a&gt; dan &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;repositori protokol AG-UI&lt;/a&gt; untuk mendalami lebih jauh.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Foundry Maret 2026 — GPT-5.4, Agent Service GA, dan SDK Refresh yang Mengubah Segalanya</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/microsoft-foundry-march-2026-whats-new/</guid><description>Pembaruan Foundry Maret 2026 sangat besar: Agent Service mencapai GA, GPT-5.4 menghadirkan penalaran yang andal, SDK azure-ai-projects stabil di semua bahasa.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/microsoft-foundry-march-2026-whats-new/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Posting bulanan &amp;ldquo;Yang Baru di Microsoft Foundry&amp;rdquo; biasanya merupakan campuran peningkatan bertahap. &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-microsoft-foundry-mar-2026/"&gt;Edisi Maret 2026&lt;/a&gt;? Hampir semuanya adalah fitur utama.&lt;/p&gt;
&lt;h2 id="foundry-agent-service-siap-untuk-produksi"&gt;Foundry Agent Service siap untuk produksi&lt;/h2&gt;
&lt;p&gt;Runtime agen generasi berikutnya tersedia secara umum — dibangun di atas OpenAI Responses API, kompatibel secara wire dengan agen OpenAI.&lt;/p&gt;
&lt;p&gt;Penambahan utama: jaringan privat end-to-end, ekspansi auth MCP, pratinjau Voice Live, dan hosted agents di 6 region baru.&lt;/p&gt;
&lt;h2 id="gpt-54--keandalan-di-atas-kecerdasan-mentah"&gt;GPT-5.4 — keandalan di atas kecerdasan mentah&lt;/h2&gt;
&lt;p&gt;GPT-5.4 bukan tentang menjadi lebih pintar. Ini tentang menjadi lebih andal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Harga (per M token)&lt;/th&gt;
&lt;th&gt;Terbaik untuk&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 output&lt;/td&gt;
&lt;td&gt;Agen produksi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 Pro&lt;/td&gt;
&lt;td&gt;$30 / $180 output&lt;/td&gt;
&lt;td&gt;Analisis mendalam&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 Mini&lt;/td&gt;
&lt;td&gt;Hemat biaya&lt;/td&gt;
&lt;td&gt;Klasifikasi, ekstraksi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="sdk-akhirnya-stabil"&gt;SDK akhirnya stabil&lt;/h2&gt;
&lt;p&gt;SDK &lt;code&gt;azure-ai-projects&lt;/code&gt; merilis versi stabil di semua bahasa — termasuk .NET 2.0.0.&lt;/p&gt;
&lt;h2 id="fireworks-ai-membawa-model-terbuka-ke-azure"&gt;Fireworks AI membawa model terbuka ke Azure&lt;/h2&gt;
&lt;p&gt;DeepSeek V3.2, gpt-oss-120b, Kimi K2.5 tersedia saat peluncuran.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-microsoft-foundry-mar-2026/"&gt;ringkasan lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Penilaian Modernisasi GitHub Copilot Adalah Alat Migrasi Terbaik yang Belum Anda Gunakan</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</guid><description>Ekstensi modernisasi GitHub Copilot tidak hanya menyarankan perubahan kode — melainkan menghasilkan penilaian migrasi lengkap dengan masalah yang dapat ditindaklanjuti, perbandingan target Azure, dan alur kerja kolaboratif.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Memigrasikan aplikasi .NET Framework lama ke .NET modern adalah salah satu tugas yang semua orang tahu harus dilakukan tapi tidak ada yang ingin memulainya.&lt;/p&gt;
&lt;p&gt;Jeffrey Fritz baru saja menerbitkan &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;analisis mendalam tentang penilaian modernisasi GitHub Copilot&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="ini-bukan-sekadar-mesin-saran-kode"&gt;Ini bukan sekadar mesin saran kode&lt;/h2&gt;
&lt;p&gt;Ekstensi VS Code mengikuti model &lt;strong&gt;Nilai → Rencanakan → Eksekusi&lt;/strong&gt;. Fase penilaian menganalisis seluruh basis kode dan menghasilkan dokumen terstruktur yang menangkap semuanya.&lt;/p&gt;
&lt;p&gt;Penilaian disimpan di bawah &lt;code&gt;.github/modernize/assessment/&lt;/code&gt;. Setiap run menghasilkan laporan independen.&lt;/p&gt;
&lt;h2 id="dua-cara-untuk-memulai"&gt;Dua cara untuk memulai&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Penilaian yang Direkomendasikan&lt;/strong&gt; — jalur cepat. Pilih dari domain yang dikurasi (Peningkatan Java/.NET, Kesiapan Cloud, Keamanan).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Penilaian Kustom&lt;/strong&gt; — jalur terarah. Konfigurasikan apa yang akan dianalisis: komputasi target (App Service, AKS, Container Apps), OS target, analisis kontainerisasi.&lt;/p&gt;
&lt;h2 id="rincian-masalah-dapat-ditindaklanjuti"&gt;Rincian masalah dapat ditindaklanjuti&lt;/h2&gt;
&lt;p&gt;Setiap masalah dilengkapi level kritis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wajib&lt;/strong&gt; — harus diperbaiki atau migrasi akan gagal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Potensial&lt;/strong&gt; — mungkin berdampak pada migrasi, memerlukan penilaian manusia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opsional&lt;/strong&gt; — perbaikan yang direkomendasikan, tidak akan memblokir migrasi&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pendapat-saya"&gt;Pendapat saya&lt;/h2&gt;
&lt;p&gt;Jika Anda memiliki aplikasi .NET Framework lama, ini adalah alat &lt;em&gt;terbaik&lt;/em&gt; untuk memulai. Dokumen penilaian saja sudah sepadan dengan waktunya.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;panduan lengkap&lt;/a&gt; dan unduh &lt;a href="https://aka.ms/ghcp-appmod/vscode-ext"&gt;ekstensi VS Code&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>SQL MCP Server — Cara yang Tepat untuk Memberi Agen AI Akses Database</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/</guid><description>SQL MCP Server dari Data API builder memberi agen AI akses database yang aman dan deterministik tanpa mengekspos skema atau mengandalkan NL2SQL.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jujur saja: sebagian besar server MCP database yang tersedia saat ini sangat menakutkan. Mereka mengambil kueri bahasa alami, menghasilkan SQL secara langsung, dan menjalankannya pada data produksi Anda.&lt;/p&gt;
&lt;p&gt;Tim Azure SQL baru saja &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;memperkenalkan SQL MCP Server&lt;/a&gt;, dan mengambil pendekatan yang secara fundamental berbeda.&lt;/p&gt;
&lt;h2 id="mengapa-tidak-nl2sql"&gt;Mengapa tidak NL2SQL?&lt;/h2&gt;
&lt;p&gt;Model tidak deterministik. SQL MCP Server menggunakan pendekatan &lt;strong&gt;NL2DAB&lt;/strong&gt;. Agen bekerja dengan lapisan abstraksi entitas Data API builder untuk menghasilkan T-SQL yang akurat secara deterministik.&lt;/p&gt;
&lt;h2 id="tujuh-alat-bukan-tujuh-ratus"&gt;Tujuh alat, bukan tujuh ratus&lt;/h2&gt;
&lt;p&gt;SQL MCP Server mengekspos tepat tujuh alat DML:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;describe_entities&lt;/code&gt; — temukan entitas yang tersedia&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_record&lt;/code&gt; — sisipkan baris&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read_records&lt;/code&gt; — kueri tabel dan view&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_record&lt;/code&gt; — modifikasi baris&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete_record&lt;/code&gt; — hapus baris&lt;/li&gt;
&lt;li&gt;&lt;code&gt;execute_entity&lt;/code&gt; — jalankan stored procedure&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aggregate_records&lt;/code&gt; — kueri agregasi&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mulai-dalam-tiga-perintah"&gt;Mulai dalam tiga perintah&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 --database-type mssql --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 --source dbo.Customers --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;h2 id="cerita-keamanan-solid"&gt;Cerita keamanan solid&lt;/h2&gt;
&lt;p&gt;RBAC di setiap lapisan, integrasi Azure Key Vault, Microsoft Entra + OAuth kustom.&lt;/p&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;posting lengkap&lt;/a&gt; dan &lt;a href="https://aka.ms/sql/mcp"&gt;dokumentasi&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>azd Kini Memungkinkan Anda Menjalankan dan Men-debug Agen AI Secara Lokal — Apa yang Berubah di Maret 2026</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>Azure Developer CLI merilis tujuh rilis di Maret 2026. Highlight: loop jalankan-dan-debug lokal untuk agen AI, integrasi GitHub Copilot dalam pengaturan proyek, dan dukungan Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tujuh rilis dalam satu bulan. Itulah yang didorong oleh tim Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) di Maret 2026, dan fitur unggulan adalah yang sudah saya tunggu: &lt;strong&gt;loop jalankan-dan-debug lokal untuk agen AI&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="jalankan-dan-debug-agen-ai-tanpa-deploy"&gt;Jalankan dan debug agen AI tanpa deploy&lt;/h2&gt;
&lt;p&gt;Ini yang besar. Ekstensi &lt;code&gt;azure.ai.agents&lt;/code&gt; baru menambahkan serangkaian perintah:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — memulai agen Anda secara lokal&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — mengirim pesan ke agen (lokal atau ter-deploy)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — menampilkan status dan kesehatan container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — streaming log container secara real time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sebelumnya, menguji agen AI berarti deploy ke Microsoft Foundry setiap kali ada perubahan. Sekarang Anda bisa beriterasi secara lokal.&lt;/p&gt;
&lt;h2 id="github-copilot-men-scaffold-proyek-azd-anda"&gt;GitHub Copilot men-scaffold proyek azd Anda&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; kini menawarkan opsi &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Agen Copilot men-scaffold konfigurasi untuk struktur proyek Anda.&lt;/p&gt;
&lt;h2 id="container-app-jobs-dan-peningkatan-deployment"&gt;Container App Jobs dan peningkatan deployment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; kini men-deploy &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; melalui konfigurasi &lt;code&gt;host: containerapp&lt;/code&gt; yang ada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout deployment yang dapat dikonfigurasi&lt;/strong&gt;: Flag &lt;code&gt;--timeout&lt;/code&gt; baru pada &lt;code&gt;azd deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback build lokal&lt;/strong&gt;: Ketika remote ACR build gagal, &lt;code&gt;azd&lt;/code&gt; otomatis beralih ke Docker/Podman lokal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validasi preflight lokal&lt;/strong&gt;: Parameter Bicep divalidasi secara lokal sebelum deploy&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Loop debugging agen AI lokal adalah bintang rilis ini. Cek &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;catatan rilis lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>KubeCon Europe 2026: Yang Sebenarnya Perlu Diperhatikan Pengembang .NET</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</guid><description>Microsoft menjatuhkan tembok pengumuman Kubernetes di KubeCon Europe 2026. Inilah versi tersaringnya — hanya pembaruan AKS dan cloud-native yang penting jika Anda mengekspedisi aplikasi .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Microsoft baru saja menerbitkan &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;rekap lengkap KubeCon Europe 2026 mereka&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mtls-tanpa-pajak-service-mesh"&gt;mTLS tanpa pajak service mesh&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/application-network"&gt;Azure Kubernetes Application Network&lt;/a&gt; memberi Anda mutual TLS, otorisasi berbasis aplikasi, dan telemetri traffic — tanpa menerapkan mesh sidecar berat. API ASP.NET Core yang berkomunikasi dengan background worker — semua terenkripsi di tingkat jaringan, tanpa perubahan kode aplikasi.&lt;/p&gt;
&lt;h2 id="observabilitas-gpu"&gt;Observabilitas GPU&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/managed-gpu-metrics"&gt;AKS kini menampilkan metrik GPU secara native&lt;/a&gt; ke Prometheus dan Grafana terkelola. Tanpa exporter kustom.&lt;/p&gt;
&lt;h2 id="jaringan-lintas-kluster"&gt;Jaringan lintas kluster&lt;/h2&gt;
&lt;p&gt;Azure Kubernetes Fleet Manager kini mengirimkan &lt;a href="https://aka.ms/kubernetes-fleet/networking/cross-cluster"&gt;jaringan lintas kluster&lt;/a&gt; — konektivitas terpadu, registri layanan global.&lt;/p&gt;
&lt;h2 id="upgrade-yang-lebih-aman"&gt;Upgrade yang lebih aman&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Upgrade agent pool biru-hijau&lt;/strong&gt; membuat node pool paralel. &lt;strong&gt;Rollback agent pool&lt;/strong&gt; memungkinkan Anda kembali ke versi sebelumnya.&lt;/p&gt;
&lt;h2 id="dari-mana-memulai"&gt;Dari mana memulai&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Observabilitas dulu&lt;/strong&gt; — aktifkan metrik GPU dan log aliran jaringan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coba upgrade biru-hijau&lt;/strong&gt; — uji alur kerja rollback&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pilot jaringan berbasis identitas&lt;/strong&gt; — aktifkan mTLS untuk satu jalur layanan&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title>SQL MCP Server, Copilot di SSMS, dan Database Hub dengan AI Agent: Yang Benar-Benar Penting dari SQLCon 2026</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/agentic-ai-microsoft-databases-what-matters/</guid><description>Microsoft merilis serangkaian pengumuman database di SQLCon 2026. Inilah yang benar-benar penting jika Anda membangun aplikasi bertenaga AI di Azure SQL.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/agentic-ai-microsoft-databases-what-matters/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Microsoft baru saja meluncurkan &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;SQLCon 2026 bersamaan dengan FabCon di Atlanta&lt;/a&gt;. Saya akan melewati slide harga enterprise dan fokus pada hal-hal yang penting bagi developer yang membangun dengan Azure SQL dan AI.&lt;/p&gt;
&lt;h2 id="sql-mcp-server-kini-dalam-pratinjau-publik"&gt;SQL MCP Server kini dalam pratinjau publik&lt;/h2&gt;
&lt;p&gt;Ini adalah headline bagi saya. Azure SQL Database Hyperscale kini memiliki &lt;strong&gt;SQL MCP Server&lt;/strong&gt; dalam pratinjau publik yang memungkinkan Anda menghubungkan data SQL dengan aman ke agen AI dan Copilot menggunakan &lt;a href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bagi developer .NET yang membangun agen AI dengan Semantic Kernel atau Microsoft Agent Framework, ini membuka jalur integrasi yang bersih. Agen Anda perlu memeriksa inventaris? Mencari catatan pelanggan? Memvalidasi pesanan? MCP memberinya cara terstruktur untuk melakukan itu tanpa menulis kode pengambilan data khusus.&lt;/p&gt;
&lt;h2 id="github-copilot-di-ssms-22-kini-ga"&gt;GitHub Copilot di SSMS 22 Kini GA&lt;/h2&gt;
&lt;p&gt;Jika Anda menghabiskan waktu di SQL Server Management Studio, GitHub Copilot kini tersedia secara umum di SSMS 22. Pengalaman Copilot yang sama yang sudah Anda gunakan di VS Code dan Visual Studio, tapi untuk T-SQL.&lt;/p&gt;
&lt;p&gt;Nilai praktisnya langsung: bantuan berbasis obrolan untuk menulis query, merestrukturisasi stored procedure, menyelesaikan masalah performa, dan tugas admin.&lt;/p&gt;
&lt;h2 id="indeks-vektor-mendapat-peningkatan-serius"&gt;Indeks vektor mendapat peningkatan serius&lt;/h2&gt;
&lt;p&gt;Azure SQL Database kini memiliki indeks vektor yang lebih cepat dan lebih mampu dengan dukungan insert, update, dan delete penuh. Artinya data vektor Anda tetap terkini secara real time — tidak perlu pengindeksan ulang batch.&lt;/p&gt;
&lt;p&gt;Yang baru:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kuantisasi&lt;/strong&gt; untuk ukuran indeks lebih kecil tanpa kehilangan banyak akurasi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pemfilteran iteratif&lt;/strong&gt; untuk hasil yang lebih tepat&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrasi pengoptimal query yang lebih ketat&lt;/strong&gt; untuk performa yang dapat diprediksi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika Anda melakukan RAG dengan Azure SQL sebagai penyimpan vektor, peningkatan ini berguna secara langsung.&lt;/p&gt;
&lt;h2 id="database-hub-di-fabric-manajemen-agentik"&gt;Database Hub di Fabric: manajemen agentik&lt;/h2&gt;
&lt;p&gt;Microsoft mengumumkan &lt;strong&gt;Database Hub di Microsoft Fabric&lt;/strong&gt; (akses awal), yang memberikan panel tunggal di seluruh Azure SQL, Cosmos DB, PostgreSQL, MySQL, dan SQL Server via Arc.&lt;/p&gt;
&lt;p&gt;Agen AI terus-menerus memantau estate database Anda, menampilkan apa yang berubah, menjelaskan mengapa itu penting, dan menyarankan langkah selanjutnya.&lt;/p&gt;
&lt;h2 id="artinya-bagi-developer-net"&gt;Artinya bagi developer .NET&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Coba SQL MCP Server&lt;/strong&gt; jika Anda membangun agen AI — cara paling bersih memberi agen akses database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aktifkan Copilot di SSMS&lt;/strong&gt; jika belum — kemenangan produktivitas gratis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tinjau indeks vektor&lt;/strong&gt; jika Anda melakukan RAG dan menjalankan penyimpan vektor terpisah.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lihat &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;pengumuman lengkap dari Shireesh Thota&lt;/a&gt; dan &lt;a href="https://aka.ms/database-hub"&gt;daftar untuk akses awal Database Hub&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps MCP Server Hadir di Microsoft Foundry: Apa Artinya untuk Agen AI Anda</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-devops-mcp-server-microsoft-foundry/</guid><description>Azure DevOps MCP Server kini tersedia di Microsoft Foundry. Hubungkan agen AI Anda langsung ke alur kerja DevOps — item kerja, repo, pipeline — dengan beberapa klik.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-devops-mcp-server-microsoft-foundry/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;MCP (Model Context Protocol) sedang naik daun. Jika Anda mengikuti ekosistem agen AI, Anda mungkin sudah melihat server MCP bermunculan di mana-mana.&lt;/p&gt;
&lt;p&gt;Kini &lt;a href="https://devblogs.microsoft.com/devops/remote-mcp-server-preview-in-microsoft-foundry/"&gt;Azure DevOps MCP Server tersedia di Microsoft Foundry&lt;/a&gt;, dan ini adalah salah satu integrasi yang membuat Anda berpikir tentang kemungkinan praktisnya.&lt;/p&gt;
&lt;h2 id="yang-sebenarnya-terjadi"&gt;Yang sebenarnya terjadi&lt;/h2&gt;
&lt;p&gt;Microsoft sudah merilis Azure DevOps MCP Server sebagai &lt;a href="https://devblogs.microsoft.com/devops/azure-devops-remote-mcp-server-public-preview"&gt;pratinjau publik&lt;/a&gt;. Yang baru adalah integrasi Foundry. Anda sekarang dapat menambahkan Azure DevOps MCP Server ke agen Foundry Anda langsung dari katalog alat.&lt;/p&gt;
&lt;h2 id="cara-menyiapkannya"&gt;Cara menyiapkannya&lt;/h2&gt;
&lt;p&gt;Penyiapannya cukup mudah:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Di agen Foundry Anda, buka &lt;strong&gt;Tambah Alat&lt;/strong&gt; &amp;gt; &lt;strong&gt;Katalog&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Cari &amp;ldquo;Azure DevOps&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Pilih Azure DevOps MCP Server (pratinjau) dan klik &lt;strong&gt;Buat&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Masukkan nama organisasi Anda dan hubungkan&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mengontrol-apa-yang-dapat-diakses-agen-anda"&gt;Mengontrol apa yang dapat diakses agen Anda&lt;/h2&gt;
&lt;p&gt;Anda dapat menentukan alat mana yang tersedia untuk agen Anda. Prinsip hak akses minimum, diterapkan ke agen AI Anda.&lt;/p&gt;
&lt;h2 id="mengapa-ini-menarik-untuk-tim-net"&gt;Mengapa ini menarik untuk tim .NET&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Asisten perencanaan sprint&lt;/strong&gt; — agen yang dapat menarik item kerja dan menyarankan kapasitas sprint&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bot code review&lt;/strong&gt; — agen yang memahami konteks PR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respons insiden&lt;/strong&gt; — agen yang membuat item kerja dan mengkorelasikan bug&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orientasi developer&lt;/strong&gt; — jawaban nyata berdasarkan data proyek aktual&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/devops/remote-mcp-server-preview-in-microsoft-foundry/"&gt;pengumuman lengkap&lt;/a&gt; untuk detail lebih lanjut.&lt;/p&gt;</content:encoded></item><item><title>Dari Laptop ke Produksi: Deploy Agen AI ke Microsoft Foundry dengan Dua Perintah</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>Azure Developer CLI kini memiliki perintah 'azd ai agent' yang membawa agen AI Anda dari pengembangan lokal ke endpoint Foundry langsung dalam hitungan menit.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu kesenjangan antara &amp;ldquo;berfungsi di mesin saya&amp;rdquo; dan &amp;ldquo;sudah di-deploy dan melayani traffic&amp;rdquo;? Untuk agen AI, kesenjangan itu sangat lebar.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI baru saja menjadikan ini &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;urusan dua perintah&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="alur-kerja-azd-ai-agent-baru"&gt;Alur kerja &lt;code&gt;azd ai agent&lt;/code&gt; baru&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 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;Itu saja. &lt;code&gt;azd ai agent init&lt;/code&gt; membuat scaffolding infrastruktur-sebagai-kode di repo Anda, dan &lt;code&gt;azd up&lt;/code&gt; menyediakan semua hal di Azure dan menerbitkan agen Anda.&lt;/p&gt;
&lt;h2 id="yang-terjadi-di-balik-layar"&gt;Yang terjadi di balik layar&lt;/h2&gt;
&lt;p&gt;Perintah &lt;code&gt;init&lt;/code&gt; menghasilkan template Bicep yang nyata dan dapat diperiksa di repo Anda — Foundry Resource, Foundry Project, konfigurasi deployment model, managed identity dengan RBAC.&lt;/p&gt;
&lt;h2 id="dev-inner-loop"&gt;Dev inner loop&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 ai agent run &lt;span class="c1"&gt;# jalankan agen secara lokal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent invoke &lt;span class="c1"&gt;# kirim prompt uji&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent monitor --follow &lt;span class="c1"&gt;# stream log real-time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="set-perintah-lengkap"&gt;Set perintah lengkap&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;th&gt;Yang dilakukan&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;Scaffold proyek agen Foundry dengan IaC&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;Provisioning sumber daya dan deploy agen&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;Kirim prompt ke agen remote atau lokal&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;Jalankan agen secara lokal&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;Stream log real-time&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;Bersihkan semua sumber daya Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;panduan lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Foundry Agent Service Sudah GA: Yang Benar-benar Penting untuk Pengembang Agen .NET</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/foundry-agent-service-ga-what-matters/</guid><description>Foundry Agent Service Microsoft baru saja mencapai GA dengan jaringan privat, Voice Live, evaluasi produksi, dan runtime multi-model terbuka.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/foundry-agent-service-ga-what-matters/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mari jujur — membangun prototipe agen AI adalah bagian yang mudah. Bagian sulitnya adalah semua yang datang setelah itu.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/foundry/foundry-agent-service-ga/"&gt;Foundry Agent Service baru saja GA&lt;/a&gt;, dan rilis ini sangat fokus pada kesenjangan &amp;ldquo;semua yang datang setelah itu&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="dibangun-di-atas-responses-api"&gt;Dibangun di atas Responses API&lt;/h2&gt;
&lt;p&gt;Foundry Agent Service generasi berikutnya dibangun di atas OpenAI Responses API. Arsitekturnya sengaja terbuka — Anda tidak terkunci pada satu penyedia model.&lt;/p&gt;
&lt;h2 id="jaringan-privat-hambatan-enterprise-dihilangkan"&gt;Jaringan privat: hambatan enterprise dihilangkan&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tanpa egress publik&lt;/strong&gt; — traffic agen tidak pernah menyentuh internet publik&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Injeksi container/subnet&lt;/strong&gt; ke jaringan Anda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konektivitas alat disertakan&lt;/strong&gt; — server MCP, Azure AI Search melalui jalur privat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="autentikasi-mcp"&gt;Autentikasi MCP&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metode auth&lt;/th&gt;
&lt;th&gt;Kapan digunakan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Berbasis kunci&lt;/td&gt;
&lt;td&gt;Akses bersama sederhana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identitas Agen Entra&lt;/td&gt;
&lt;td&gt;Service-to-service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identitas Terkelola Entra&lt;/td&gt;
&lt;td&gt;Isolasi per-proyek&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passthrough identitas OAuth&lt;/td&gt;
&lt;td&gt;Akses yang didelegasikan pengguna&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="voice-live"&gt;Voice Live&lt;/h2&gt;
&lt;p&gt;Voice Live menggabungkan STT, LLM, dan TTS menjadi satu API terkelola.&lt;/p&gt;
&lt;h2 id="evaluasi"&gt;Evaluasi&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Evaluator siap pakai&lt;/strong&gt; — koherensi, relevansi, keterpancaran&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluator kustom&lt;/strong&gt; — logika bisnis Anda sendiri&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluasi berkelanjutan&lt;/strong&gt; — pengambilan sampel traffic produksi langsung&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lihat &lt;a href="https://learn.microsoft.com/azure/foundry/quickstarts/get-started-code"&gt;panduan quickstart&lt;/a&gt; dan &lt;a href="https://devblogs.microsoft.com/foundry/foundry-agent-service-ga/"&gt;pengumuman GA&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Respons Latar Belakang di Microsoft Agent Framework: Tidak Ada Lagi Kecemasan Timeout</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/background-responses-agent-framework-long-running-tasks/</guid><description>Microsoft Agent Framework kini memungkinkan Anda membongkar tugas AI yang berjalan lama dengan token kelanjutan. Begini cara respons latar belakang bekerja dan mengapa itu penting untuk agen .NET Anda.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/background-responses-agent-framework-long-running-tasks/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda pernah membangun sesuatu dengan model penalaran seperti o3 atau GPT-5.2, Anda tahu rasa sakitnya. Agen Anda mulai memproses tugas yang kompleks, klien menunggu, dan di suatu titik koneksi habis waktu.&lt;/p&gt;
&lt;p&gt;Microsoft Agent Framework baru saja merilis &lt;a href="https://devblogs.microsoft.com/agent-framework/handling-long-running-operations-with-background-responses/"&gt;respons latar belakang&lt;/a&gt; — dan sejujurnya, ini adalah salah satu fitur yang seharusnya ada sejak hari pertama.&lt;/p&gt;
&lt;h2 id="cara-token-kelanjutan-bekerja"&gt;Cara token kelanjutan bekerja&lt;/h2&gt;
&lt;p&gt;Alih-alih memblokir, Anda memulai tugas agen dan mendapatkan kembali &lt;strong&gt;token kelanjutan&lt;/strong&gt;. Anggap seperti klaim tiket di bengkel reparasi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kirim permintaan Anda dengan &lt;code&gt;AllowBackgroundResponses = true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jika agen mendukung pemrosesan latar belakang, Anda mendapat token kelanjutan&lt;/li&gt;
&lt;li&gt;Poll sesuai jadwal Anda hingga token kembali &lt;code&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;/ol&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;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="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;h2 id="kapan-sebenarnya-menggunakan-ini"&gt;Kapan sebenarnya menggunakan ini&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tugas penalaran kompleks&lt;/strong&gt; — analisis multi-langkah, penelitian mendalam&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pembuatan konten panjang&lt;/strong&gt; — laporan terperinci, dokumen multi-bagian&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jaringan tidak dapat diandalkan&lt;/strong&gt; — klien mobile, deployment edge&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pola UX asinkron&lt;/strong&gt; — kirim tugas, lakukan hal lain, kembali untuk hasil&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/agent-framework/handling-long-running-operations-with-background-responses/"&gt;dokumentasi lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>