Capacitação Microsoft AI — Aula 8: avaliação, observabilidade e Responsible AI

Playlist completa no YouTube · Código .NET da aula 8 · Código Python da aula 8 · Slides da aula 8 (PDF)

O que a aula cobriu

A aula 8 fecha a série levando o agente das aulas 6 e 7 para perto da produção: ele ganha tracing com OpenTelemetry exportado para o Application Insights, é avaliado por um modelo juiz sobre um conjunto de perguntas com gabarito e enfrenta um ataque de prompt injection, primeiro sem proteção e depois com um escudo e a aprovação humana como segunda barreira.

São quatro demos sobre a mesma base de configuração das aulas anteriores:

  • Tracing: o agente é envolvido com UseOpenTelemetry e cada chamada vira um trace com spans de modelo e de ferramenta, impressos no console e enviados ao Application Insights conectado ao projeto Foundry.
  • Avaliação do agente: cinco perguntas com gabarito, um modelo juiz e três métricas (relevance, coherence e equivalence), com a nota por pergunta e a média.
  • Prompt injection, o ataque: o usuário pede o resumo de um e-mail de fornecedor que contém uma instrução maliciosa. Se o modelo obedecer, só a aprovação humana segura o envio.
  • Prompt injection, a defesa: a mesma cena com a leitura do documento escudada: uma heurística local detecta o padrão, marca o conteúdo como dado não confiável dentro de delimitadores e avisa o modelo.

Três ideias para levar

1. Sem trace, você não sabe o que o agente fez. Observabilidade em agente não é luxo de produção: é o que permite achar a causa de um erro, ver qual ferramenta foi chamada e acompanhar custo e qualidade ao longo do tempo. Mantenha prompts e respostas fora do trace por padrão e ligue dados sensíveis só quando precisar.

using TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource(FonteDoAgente).AddSource("*Microsoft.Agents.AI")
    .AddProcessor(new ProcessadorDeConsole())
    .AddAzureMonitorTraceExporter(o => o.ConnectionString = connectionString)
    .Build();

AIAgent agente = projectClient.AsAIAgent(model, name, instructions, tools)
    .AsBuilder()
    .UseOpenTelemetry(FonteDoAgente, o => o.EnableSensitiveData = false)
    .Build();

2. O juiz é um instrumento, não a verdade. Avaliar com um modelo juiz dá um número comparável entre versões do agente, mas o número muda quando você troca o juiz. Por isso a demo roda a avaliação duas vezes, com juízes diferentes: poucas métricas bem escolhidas, acompanhadas com constância, valem mais do que um painel grande que ninguém olha.

3. O modelo não distingue dado de ordem. Um texto que chega de fora, seja e-mail, documento ou página web, pode carregar instruções. Separar o que é dado do que é ordem é responsabilidade da arquitetura: filtre a entrada, delimite o conteúdo não confiável, limite o que o agente pode fazer e mantenha a aprovação humana para ações irreversíveis. O escudo local da demo é a camada barata; o Prompt Shields e os filtros de conteúdo do Foundry, configurados no deployment, se somam a ela.

Antes de rodar

  • Cumpra os pré-requisitos da aula 6: SDK .NET 10, Azure CLI, recurso Foundry e o papel Foundry User.
  • Conecte um Application Insights ao projeto Foundry (portal, projeto, Tracing). Sem ele, o programa avisa e imprime os traces só no console.
  • Copie o launchSettings.template.json e defina FOUNDRY_ENDPOINT e FOUNDRY_MODEL; FOUNDRY_JUDGE_MODEL é opcional e, se vazio, o juiz usa o mesmo modelo.
  • Rode az login --tenant <id> antes do dotnet run.
  • Se o restore acusar NU1605 ou NU1608, alinhe os dois pacotes Microsoft.Extensions.AI.Evaluation à versão de Microsoft.Extensions.AI que o framework resolveu, sem mexer no framework.

Se você está na trilha Python

O equivalente em Python está em Python/aula08-observabilidade: enable_instrumentation com Azure Monitor para o tracing, azure-ai-evaluation sobre o agente e a mesma cena de prompt injection com escudo e aprovação humana. A decisão de arquitetura é a mesma nas duas trilhas.

Próximo passo

Com este artigo a série fecha os oito encontros. Para recomeçar de qualquer ponto, os artigos estão aqui: aula 1, aula 2, aula 3, aula 4, aula 5, aula 6 e aula 7. Se você ainda não recebeu o e-book gratuito da Capacitação, o bloco de cadastro está no topo da página inicial.

Comentários

Deixe um comentário