Playlist completa no YouTube · Código .NET da aula 7 · Código Python da aula 7 · Slides da aula (em breve)
O que a aula cobriu
A aula 7 pega o agente simples da aula 6 e dá a ele mais responsabilidade: ferramentas reais, um passo de aprovação humana antes de ações irreversíveis, acesso à documentação oficial via MCP hospedado, e um fluxo com três agentes trabalhando em sequência.
São quatro demos na mesma base de configuração das aulas anteriores (endpoint, identidade e AIProjectClient não mudam):
- Function calling: quatro ferramentas (consulta a uma base de conhecimento, previsão do tempo, calculadora e um envio de e-mail simulado) criadas com
AIFunctionFactory.Create, cada uma documentada com atributos de descrição que o modelo lê para decidir quando chamar. - Human-in-the-loop: a ferramenta de envio de e-mail é envolvida num wrapper de aprovação. O agente pausa, devolve um pedido de aprovação, e só continua a execução depois que uma pessoa confirma.
- MCP hospedado: o agente ganha acesso a um servidor MCP público de documentação da Microsoft, sem precisar de nenhuma integração customizada — é só mais uma ferramenta na lista.
- Workflow sequencial: três agentes (pesquisador, validador e redator) encadeados, cada um processando a saída do anterior e transmitindo seu resultado em streaming.
Três ideias para levar
1. O modelo nunca executa nada — a sua aplicação executa. Toda ferramenta que você expõe a um agente é só um método comum que a sua aplicação roda quando o modelo pede. Isso significa que validar os parâmetros, nunca devolver segredos e tratar erros com mensagens legíveis (em vez de deixar uma exceção estourar) é responsabilidade sua, não do modelo.
2. Aprovação é uma decisão de wrapper, não da ferramenta. A mesma função de envio de e-mail funciona com ou sem aprovação humana — o que muda é só a camada que envolve ela. Isso separa bem a lógica de negócio da política de segurança: você decide onde exigir aprovação sem tocar no código da ferramenta em si.
// A ferramenta de envio de e-mail só é executada depois de aprovação explícita
var emailTool = new ApprovalRequiredAIFunction(
AIFunctionFactory.Create(EnviarEmailSimulado)
);
// O agente pausa e devolve um ToolApprovalRequestContent
// em vez de executar direto — a aplicação decide o que fazer com isso
3. Nem todo problema precisa de vários agentes conversando. O workflow sequencial da aula mostra o caso em que faz sentido ter mais de um agente — quando cada etapa precisa de um papel e um contexto diferentes. Mas vale sempre perguntar primeiro se um único agente, num loop simples, não resolveria o mesmo problema por um custo menor.
Antes de rodar
- Confirme que sua conta tem o papel Foundry User no recurso — sem ele, as chamadas à API retornam 403.
- Copie o
launchSettings.template.jsonda aula 6 e ajuste só o nome do perfil. - Configure as variáveis de ambiente
FOUNDRY_ENDPOINTeFOUNDRY_MODEL— o modelo escolhido precisa suportar function calling (use algo da família GPT-5.x caso o agente nunca chame as ferramentas). - Rode
az login --tenant <id>antes dodotnet run, e definaAZURE_TENANT_IDeAZURE_TOKEN_CREDENTIALS=AzureCliCredentialpara autenticação mais previsível. - Se o restore reclamar de versões conflitantes entre os pacotes de Workflows e de Foundry (erros NU1608/NU1605), pin as duas na mesma versão.
- A demo 3 precisa de saída de internet do serviço para alcançar o MCP hospedado — confirme que sua rede permite isso.
Se você está na trilha Python
O equivalente em Python está em Python/aula07-agentes-avancados, com main.py e um módulo próprio de ferramentas (ferramentas.py) espelhando as mesmas quatro demos. A lógica de validação de entrada e de não devolver segredos nas respostas das ferramentas vale igual nos dois ecossistemas — é decisão de arquitetura, não de linguagem.
Próximo passo
Na aula 8 fechamos a série com avaliação de agentes: como medir se o que construímos até aqui está realmente funcionando antes de colocar em produção.
Deixe um comentário