<?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>Containers | The .NET Blog</title><link>https://thedotnetblog.com/pt/tags/containers/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pt</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/pt/tags/containers/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 10 Vem com Ubuntu 26.04 LTS — O que há de Novo</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-ubuntu-2604-resolute-raccoon-net10/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-ubuntu-2604-resolute-raccoon-net10/</guid><description>Ubuntu 26.04 LTS (Resolute Raccoon) chegou com .NET 10 como toolchain de primeira classe. Native AOT, contêineres chiseled, Linux 7.0.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-ubuntu-2604-resolute-raccoon-net10/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;É o dia do Ubuntu LTS. &lt;a href="https://canonical.com/blog/canonical-releases-ubuntu-26-04-lts-resolute-raccoon"&gt;Ubuntu 26.04 (Resolute Raccoon)&lt;/a&gt; chegou hoje com &lt;a href="https://devblogs.microsoft.com/dotnet/whats-new-for-dotnet-in-ubuntu-2604/"&gt;.NET 10&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;LTS sobre LTS — cinco anos de suporte para o OS, alinhados com a janela de suporte de longo prazo do .NET 10.&lt;/p&gt;
&lt;h2 id="instale-net-10-em-dois-comandos"&gt;Instale .NET 10 em dois comandos&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;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install dotnet-sdk-10.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="contêineres-atualize--noble-para--resolute"&gt;Contêineres: atualize &lt;code&gt;-noble&lt;/code&gt; para &lt;code&gt;-resolute&lt;/code&gt;&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;sed -i &lt;span class="s2"&gt;&amp;#34;s/noble/resolute/g&amp;#34;&lt;/span&gt; Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="native-aot-inicialização-em-3ms-binário-de-14mb"&gt;Native AOT: inicialização em 3ms, binário de 1,4MB&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;apt install -y dotnet-sdk-aot-10.0 clang
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet publish app.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# binário nativo de 1,4MB, inicialização em 3ms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Para cargas de trabalho cloud-native onde o tempo de cold-start importa — Functions, contêineres, serverless — uma mudança real.&lt;/p&gt;
&lt;h2 id="precisa-de-net-8-ou-9"&gt;Precisa de .NET 8 ou 9?&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;apt install -y software-properties-common
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add-apt-repository ppa:dotnet/backports
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install -y dotnet-sdk-8.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O &lt;a href="https://devblogs.microsoft.com/dotnet/whats-new-for-dotnet-in-ubuntu-2604/"&gt;post completo&lt;/a&gt; tem mais detalhes sobre cgroup v2, criptografia pós-quântica e Linux 7.0.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2: Suporte a Bun, Melhores Contêineres e Menos Fricção no Debug</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 adiciona suporte de primeira classe ao Bun para apps Vite, corrige confiabilidade do Yarn e traz melhorias em contêineres que tornam o comportamento local mais previsível.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta postagem foi traduzida automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Se você vem construindo backends .NET com frontends JavaScript no Aspire, a 13.2 é o tipo de atualização que melhora seu dia silenciosamente.&lt;/p&gt;
&lt;h2 id="bun-é-agora-cidadão-de-primeira-classe"&gt;Bun é Agora Cidadão de Primeira Classe&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withBun&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;Se sua equipe já usa Bun, o Aspire não te força mais a nadar contra a corrente.&lt;/p&gt;
&lt;h2 id="yarn-ficou-mais-confiável"&gt;Yarn Ficou Mais Confiável&lt;/h2&gt;
&lt;p&gt;Usuários do Yarn recebem menos falhas misteriosas com &lt;code&gt;withYarn()&lt;/code&gt; e &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="melhorias-em-contêineres"&gt;Melhorias em Contêineres&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImagePullPolicy.Never&lt;/code&gt; para usar a imagem local sem ir ao registry. PostgreSQL 18+ com volumes de dados agora funciona corretamente.&lt;/p&gt;
&lt;h2 id="melhorias-de-debug"&gt;Melhorias de Debug&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; em tipos core&lt;/li&gt;
&lt;li&gt;Mensagens de erro melhores para &lt;code&gt;WaitFor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; disparado no momento certo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Post original de David Pine: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;Aspire 13.2: Bun Support and Container Enhancements&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Onde hospedar seus agentes de IA no Azure? Um guia prático de decisão</title><link>https://thedotnetblog.com/pt/news/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/pt/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</guid><description>O Azure oferece seis formas de hospedar agentes de IA — de containers brutos a Foundry Hosted Agents totalmente gerenciados. Veja como escolher a opção certa para sua carga de trabalho .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você está construindo agentes de IA com .NET agora, provavelmente notou algo: existem &lt;em&gt;muitas&lt;/em&gt; formas de hospedá-los no Azure. Container Apps, AKS, Functions, App Service, Foundry Agents, Foundry Hosted Agents — e todos parecem razoáveis até você precisar escolher um. A Microsoft acabou de publicar um &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guia completo sobre hospedagem de agentes IA no Azure&lt;/a&gt; que esclarece isso, e eu quero detalhar tudo pela perspectiva prática de um desenvolvedor .NET.&lt;/p&gt;
&lt;h2 id="as-seis-opções-de-relance"&gt;As seis opções de relance&lt;/h2&gt;
&lt;p&gt;Aqui está como eu resumiria o cenário:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Opção&lt;/th&gt;
&lt;th&gt;Melhor para&lt;/th&gt;
&lt;th&gt;Você gerencia&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;Controle total de containers sem complexidade K8s&lt;/td&gt;
&lt;td&gt;Observabilidade, estado, ciclo de vida&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;Compliance empresarial, multi-cluster, rede customizada&lt;/td&gt;
&lt;td&gt;Tudo (esse é o ponto)&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;Tarefas de agentes curtas e orientadas a eventos&lt;/td&gt;
&lt;td&gt;Quase nada — serverless real&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;Agentes HTTP simples, tráfego previsível&lt;/td&gt;
&lt;td&gt;Deploy, config de 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;Agentes sem código via portal/SDK&lt;/td&gt;
&lt;td&gt;Quase nada&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;Agentes com framework customizado e infra gerenciada&lt;/td&gt;
&lt;td&gt;Apenas seu código de agente&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As quatro primeiras são computação de propósito geral — você &lt;em&gt;pode&lt;/em&gt; rodar agentes nelas, mas não foram projetadas para isso. As duas últimas são nativas de agentes: entendem conversas, chamadas de ferramentas e ciclos de vida de agentes como conceitos de primeira classe.&lt;/p&gt;
&lt;h2 id="foundry-hosted-agents--o-ponto-ideal-para-desenvolvedores-net-de-agentes"&gt;Foundry Hosted Agents — o ponto ideal para desenvolvedores .NET de agentes&lt;/h2&gt;
&lt;p&gt;Isso foi o que chamou minha atenção. Foundry Hosted Agents ficam bem no meio: você tem a flexibilidade de rodar seu próprio código (Semantic Kernel, Agent Framework, LangGraph — o que for) mas a plataforma cuida da infraestrutura, observabilidade e gerenciamento de conversas.&lt;/p&gt;
&lt;p&gt;A peça-chave é o &lt;strong&gt;Hosting Adapter&lt;/strong&gt; — uma camada de abstração fina que conecta seu framework de agentes à plataforma Foundry. Para o Microsoft Agent Framework, fica assim:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.agentserver.agentframework&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;from_agent_framework&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ChatAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chat_client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;AzureAIAgentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;You are a helpful assistant.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_local_time&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;from_agent_framework&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Essa é toda a sua história de hosting. O adapter cuida da tradução de protocolos, streaming via server-sent events, histórico de conversa e rastreamento OpenTelemetry — tudo automaticamente. Sem middleware customizado, sem encanamento manual.&lt;/p&gt;
&lt;h2 id="deploy-é-genuinamente-simples"&gt;Deploy é genuinamente simples&lt;/h2&gt;
&lt;p&gt;Já fiz deploy de agentes no Container Apps antes e funciona, mas você acaba escrevendo muito código de cola para gerenciamento de estado e observabilidade. Com Hosted Agents e &lt;code&gt;azd&lt;/code&gt;, o deploy é:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Instalar a extensão de agente IA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ext install azure.ai.agents
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inicializar a partir de um template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Construir, enviar, fazer deploy — pronto&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esse único &lt;code&gt;azd up&lt;/code&gt; constrói seu container, envia para o ACR, provisiona o projeto Foundry, faz deploy dos endpoints de modelo e inicia seu agente. Cinco etapas condensadas em um único comando.&lt;/p&gt;
&lt;h2 id="gerenciamento-de-conversas-integrado"&gt;Gerenciamento de conversas integrado&lt;/h2&gt;
&lt;p&gt;Essa é a parte que economiza mais tempo em produção. Em vez de construir seu próprio store de estado de conversa, Hosted Agents lidam com isso nativamente:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Criar uma conversa persistente&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conversations&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Primeira rodada&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Remember: my favorite number is 42.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Segunda rodada — contexto é preservado&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Multiply my favorite number by 10.&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;Sem Redis. Sem store de sessões Cosmos DB. Sem middleware customizado para serialização de mensagens. A plataforma simplesmente cuida disso.&lt;/p&gt;
&lt;h2 id="meu-framework-de-decisão"&gt;Meu framework de decisão&lt;/h2&gt;
&lt;p&gt;Depois de passar pelas seis opções, aqui está meu modelo mental rápido:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Precisa de zero infraestrutura?&lt;/strong&gt; → Foundry Agents (portal/SDK, sem containers)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tem código de agente customizado mas quer hosting gerenciado?&lt;/strong&gt; → Foundry Hosted Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precisa de tarefas de agentes curtas orientadas a eventos?&lt;/strong&gt; → Azure Functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precisa de máximo controle de containers sem K8s?&lt;/strong&gt; → Container Apps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precisa de compliance rigorosa e multi-cluster?&lt;/strong&gt; → AKS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tem um agente HTTP simples com tráfego previsível?&lt;/strong&gt; → App Service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para a maioria dos desenvolvedores .NET construindo com Semantic Kernel ou Microsoft Agent Framework, Hosted Agents é provavelmente o ponto de partida certo. Você obtém scale-to-zero, OpenTelemetry integrado, gerenciamento de conversas e flexibilidade de framework — sem gerenciar Kubernetes ou montar sua própria stack de observabilidade.&lt;/p&gt;
&lt;h2 id="para-finalizar"&gt;Para finalizar&lt;/h2&gt;
&lt;p&gt;O cenário de hospedagem de agentes no Azure está amadurecendo rápido. Se você está começando um novo projeto de agente IA hoje, eu consideraria seriamente Foundry Hosted Agents antes de recorrer a Container Apps ou AKS por hábito. A infraestrutura gerenciada economiza tempo real, e o padrão hosting adapter permite manter sua escolha de framework.&lt;/p&gt;
&lt;p&gt;Confira o &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guia completo da Microsoft&lt;/a&gt; e o &lt;a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/samples/python/hosted-agents"&gt;repo Foundry Samples&lt;/a&gt; para exemplos funcionais.&lt;/p&gt;</content:encoded></item><item><title>azd agora permite executar e depurar agentes IA localmente — O que mudou em março 2026</title><link>https://thedotnetblog.com/pt/news/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/pt/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>O Azure Developer CLI lançou sete versões em março 2026. Destaques: loop local de execução e depuração para agentes IA, integração com GitHub Copilot na configuração de projetos, e suporte a Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sete versões em um mês. Foi isso que o time do Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) publicou em março 2026, e a funcionalidade principal é a que eu estava esperando: &lt;strong&gt;um loop local de execução e depuração para agentes IA&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PC Chan &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;publicou o resumo completo&lt;/a&gt;, e embora haja muito conteúdo, deixe-me filtrar o que realmente importa para desenvolvedores .NET construindo apps com IA.&lt;/p&gt;
&lt;h2 id="executar-e-depurar-agentes-ia-sem-fazer-deploy"&gt;Executar e depurar agentes IA sem fazer deploy&lt;/h2&gt;
&lt;p&gt;Esta é a grande novidade. A nova extensão &lt;code&gt;azure.ai.agents&lt;/code&gt; adiciona comandos que te dão uma experiência de loop interno adequada para agentes IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — inicia seu agente localmente&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — envia mensagens (local ou em produção)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — mostra status e saúde do container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — transmite logs do container em tempo real&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes, testar um agente IA significava fazer deploy no Microsoft Foundry toda vez que você fazia uma mudança. Agora você pode iterar localmente, testar o comportamento do seu agente, e só fazer deploy quando estiver pronto.&lt;/p&gt;
&lt;h2 id="github-copilot-configura-seu-projeto-azd"&gt;GitHub Copilot configura seu projeto azd&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; agora oferece uma opção &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Em vez de responder prompts manualmente, um agente Copilot gera a configuração para você. Quando um comando falha, &lt;code&gt;azd&lt;/code&gt; oferece troubleshooting assistido por IA — tudo sem sair do terminal.&lt;/p&gt;
&lt;h2 id="container-app-jobs-e-melhorias-de-deploy"&gt;Container App Jobs e melhorias de deploy&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; agora faz deploy de &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; pela config existente &lt;code&gt;host: containerapp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeouts configuráveis&lt;/strong&gt;: Nova flag &lt;code&gt;--timeout&lt;/code&gt; no &lt;code&gt;azd deploy&lt;/code&gt; e campo &lt;code&gt;deployTimeout&lt;/code&gt; no &lt;code&gt;azure.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback de build remoto&lt;/strong&gt;: Quando o build ACR falha, &lt;code&gt;azd&lt;/code&gt; faz fallback automático para Docker/Podman local.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validação preflight local&lt;/strong&gt;: Parâmetros Bicep são validados localmente antes do deploy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="melhorias-de-dx"&gt;Melhorias de DX&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Detecção automática de pnpm/yarn&lt;/strong&gt; para projetos JS/TS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suporte a pyproject.toml&lt;/strong&gt; para Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diretórios de templates locais&lt;/strong&gt; — &lt;code&gt;azd init --template&lt;/code&gt; aceita caminhos do sistema de arquivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Melhores mensagens de erro&lt;/strong&gt; no modo &lt;code&gt;--no-prompt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variáveis de ambiente de build&lt;/strong&gt; injetadas em todos os subprocessos de build (.NET, Node.js, Java, Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;O loop de depuração local de agentes IA é a estrela desta versão, mas o acúmulo de melhorias de deploy e refinamento de DX faz o &lt;code&gt;azd&lt;/code&gt; parecer mais maduro do que nunca. Se você está fazendo deploy de apps .NET no Azure — especialmente agentes IA — esta atualização vale a pena.&lt;/p&gt;
&lt;p&gt;Confira as &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;notas completas da versão&lt;/a&gt; para todos os detalhes.&lt;/p&gt;</content:encoded></item></channel></rss>