Este é o sexto de oito artigos que acompanham as aulas da Capacitação Microsoft AI 2026, que Otávio Lourenço da Silva e eu ministramos ao vivo entre agosto e setembro. As gravações continuam no ar; os artigos existem para quem prefere ler, revisar ou copiar o código com calma.
- ▶️ Gravação da aula e playlist completa no YouTube
- 💻 Código da aula (.NET) · versão Python
- 📑 Slides em PDF
O que a aula cobriu
As aulas 1 a 3 já tinham montado a base: mesmo modelo, mesmo recurso Foundry, mesma identidade e o AIProjectClient de sempre. A sexta aula não troca nada disso — ela envolve esse cliente com AsAIAgent(modelo, nome, instruções) e, de repente, você tem um agente. Com nome, com instruções fixas e, a partir daí, com memória de conversa. O agente roda no seu processo; nada é criado do lado do serviço. Não é um recurso novo para provisionar, é uma camada em cima do que já existia.
Três ideias para levar
1. Um agente é o cliente de sempre, só que com nome e instruções
Não existe um serviço de “agentes” separado para criar e gerenciar. AsAIAgent é um método de extensão sobre o client que você já usava desde a aula 3 — ele recebe o nome do deployment, um nome para o agente e as instruções (o equivalente ao system prompt) e devolve um objeto com os mesmos dois jeitos de responder que você já conhecia.
var agente = client.AsAIAgent(
model: deploymentName,
name: "Assistente de Férias",
instructions: "Responda com base na política de férias da empresa.");
var sessao = agente.GetNewSession();
var resposta = await agente.RunAsync("Quantos dias de férias eu tenho por ano?", sessao);
2. RunAsync e RunStreamingAsync continuam sendo a escolha de sempre
RunAsync devolve a resposta completa de uma vez — cada chamada, isolada, começa do zero se você não passar uma sessão. RunStreamingAsync entrega token a token, do mesmo jeito que o streaming de chat das aulas anteriores. A novidade não está no transporte da resposta, está no que vem entre uma chamada e outra.
3. AgentSession tira de você a lista de mensagens
Até a aula 2, manter contexto significava você mesmo acumular uma lista de mensagens e reenviá-la inteira a cada chamada. Com AgentSession, essa lista passa a viver dentro da sessão: você guarda o objeto da sessão, não o histórico, e o framework decide o que mandar de volta ao modelo. Trocar de assunto no meio da conversa, pedir para o agente “lembrar” algo dito três perguntas atrás — isso deixa de ser código seu para ser comportamento do framework.
Antes de rodar
- Pré-requisitos de sempre: .NET SDK 10,
az loginno tenant certo e um recurso Foundry com um modelo já implantado — mas agora com a função Foundry User atribuída à sua identidade. Ser Owner da subscription não é suficiente; sem esse papel específico, as chamadas do agente voltam com 403. - A configuração sai de variáveis de ambiente —
FOUNDRY_ENDPOINT(o endpoint do projeto) eFOUNDRY_MODEL(o nome do deployment), opcionalmenteAZURE_TENANT_IDeAZURE_TOKEN_CREDENTIALS— definidas numlaunchSettings.jsonlocal e fora do controle de versão. - O único pacote novo é o
Microsoft.Agents.AI.Foundry(ainda em prerelease), mais oAzure.Identityde sempre. Ele já traz consigo os pacotes Azure AI e Microsoft.Extensions.AI de que precisa. Adicionar esses pacotes de novo, manualmente, numa versão diferente da que o framework espera, costuma travar em runtime comMissingMethodException— e os erros do NuGet (NU1608/NU1605) no build já avisam antes disso. - 404 geralmente é endpoint no formato errado; o aviso
OPENAI001aparece quando falta oNoWarnpara a API ainda experimental.
Se você está na trilha Python
A mesma aula existe em Python 3.12+, na pasta aula06-agent-framework, com o mesmo AIProjectClient e o mesmo endpoint de projeto que você já vinha usando desde a aula 3. A ideia de sessão e a separação entre resposta completa e streaming se repete; o que muda é só a sintaxe. Fixar versões no requirements.txt continua valendo, pelo mesmo motivo da aula 5: evitar que uma atualização silenciosa do pacote mude o comportamento do agente entre uma aula e a próxima.
Próximo passo
Rode o exemplo sem passar uma sessão entre duas perguntas que dependem uma da outra — deixe ele “esquecer” de propósito — e depois rode de novo passando a mesma AgentSession nas duas chamadas. A diferença entre as duas execuções é a aula inteira resumida em uma demonstração. Na aula 7 esse agente ganha ferramentas, memória de longo prazo e aprende a trabalhar junto com outros agentes.
Dúvidas ou algo que não funcionou? Deixe nos comentários ou abra uma issue no repositório.
Deixe um comentário