Como avaliar um sistema de IA antes de colocá-lo em produção

Um roteiro prático para testar LLMs com dados representativos, métricas úteis, revisão humana e regressão antes do lançamento.

Diagrama do ciclo de avaliação de LLM com decisão de produto, dados, testes e iteração

Diagrama do processo de avaliação de LLM. Imagem: GitHub Blog.

O protótipo responde bem, a demonstração impressiona e o benchmark mostra um número bonito. A tentação é apertar o botão de publicar. O problema começa quando chegam entradas ambíguas, contexto incompleto, usuários fazendo perguntas que ninguém previu e erros que o conjunto de teste nunca mostrou.

Avaliar um sistema de IA antes da produção não é perguntar apenas se o modelo acerta. É descobrir se ele ajuda na decisão certa, quais erros são aceitáveis, onde uma pessoa precisa revisar e quanto custa manter o comportamento sob controle.

O GitHub publicou as lições que aprendeu ao avaliar um sistema com LLM criado para reduzir falsos positivos no secret scanning. O caso envolve segurança, mas o método serve para assistentes, automações, análise de documentos, atendimento e ferramentas de programação.

Comece pela decisão, não pelo modelo

Quando um sistema de IA falha, a reação mais comum é mexer no prompt, adicionar contexto ou trocar de modelo. Antes disso, escreva a decisão que a avaliação precisa sustentar.

No caso do GitHub, a pergunta não era “o modelo classifica uma string corretamente?”. A pergunta era mais específica: o sistema consegue reduzir alertas falsos sem deixar passar credenciais reais em um fluxo de segurança?

Essa diferença muda as métricas. Reduzir falsos positivos melhora a experiência do desenvolvedor, mas perder um segredo verdadeiro pode criar um risco muito maior. Por isso, o GitHub separou os critérios em três grupos:

  • resultado principal: redução de falsos positivos e melhora da precisão;
  • limite de segurança: recall dentro de uma faixa aceitável;
  • limites operacionais: latência, custo, confiabilidade e compatibilidade com a produção.

Uma configuração que melhora muito a precisão, mas derruba o recall abaixo do limite, não vence. Outra que melhora menos, preserva a segurança e funciona dentro do orçamento pode ser a escolha correta.

Monte um conjunto de teste que pareça com a vida real

Um benchmark limpo ajuda a comparar modelos. Ele não representa necessariamente o que o produto recebe. Em produção, o valor analisado pode aparecer no meio de código, comentários, exemplos, placeholders e outras strings parecidas.

Imagine que o sistema precisa avaliar candidate_value, mas o trecho ao redor também contém uma variável chamada example_token. O modelo pode produzir uma explicação convincente sobre a variável errada. Se o conjunto de teste tiver apenas um candidato isolado por exemplo, essa falha não aparece.

O conjunto representativo precisa manter as características que tornam a tarefa difícil:

  • contexto incompleto ou truncado;
  • mais de um elemento parecido na entrada;
  • casos raros, mas perigosos;
  • formatação estranha;
  • rótulos incertos;
  • dados próximos do fluxo que o sistema realmente receberá.

Dados sintéticos podem preencher lacunas, especialmente em casos raros ou sensíveis. Eles devem complementar dados reais, não substituí-los. Um exemplo fabricado consegue testar um formato de chave; dificilmente reproduz sozinho a ambiguidade de um repositório real.

Desconfie dos rótulos de produção

O histórico do produto parece uma fonte perfeita de verdade, mas muitas vezes registra o fim de um fluxo, não a resposta correta. Um alerta encerrado pode significar que a credencial foi rotacionada, que o risco foi aceito ou que alguém precisava liberar uma tarefa. Isso não prova que o alerta era falso.

Antes de transformar eventos do produto em dataset, pergunte:

  • quem criou esse rótulo?
  • qual decisão levou ao estado final?
  • estamos agrupando motivos diferentes?
  • os casos ambíguos passaram por revisão humana?

Não é necessário revisar cada linha manualmente. É necessário entender onde o rótulo pode enganar a avaliação.

Trate a avaliação como teste de integração

Prompts, modelos, contexto e lógica ao redor mudam com frequência. A avaliação precisa rodar novamente sempre que uma mudança relevante acontece, como um teste de integração.

Registre em cada execução:

  • versão do prompt;
  • modelo utilizado;
  • versão do dataset;
  • configuração do pipeline;
  • métricas e limites;
  • observações sobre os erros encontrados.

Também altere uma variável importante por vez. Se você troca o prompt e o modelo no mesmo teste, pode até melhorar o resultado, mas não sabe o que causou a mudança. Isso dificulta reproduzir, manter e desfazer.

Olhe os erros, não apenas a média

Uma métrica agregada informa se o resultado geral subiu ou desceu. Ela não explica o que corrigir. Para avançar, separe falsos positivos e falsos negativos por padrão.

Para cada falha, tente classificá-la:

  • o modelo interpretou mal?
  • o prompt orientou a tarefa errada?
  • faltou contexto?
  • o pipeline montou uma entrada incorreta?
  • o dataset não cobre aquele cenário?
  • o rótulo está errado?

Essa classificação transforma “o modelo está ruim” em uma tarefa de engenharia. Às vezes a solução é melhorar o prompt. Em outros casos, o problema está no dado, no recorte do contexto ou numa regra fora do LLM.

Funil que separa exemplos claros, casos de baixa confiança, divergências e casos de alto impacto para revisão humana
O funil usa automação nos casos claros e concentra a revisão humana nas divergências e nos riscos maiores. Imagem: GitHub Blog.

Use outro LLM para triagem, não como verdade

Um LLM avaliador pode ajudar a separar casos claros, identificar possíveis rótulos errados e priorizar divergências. Ele também erra e pode concordar com o primeiro modelo pelo motivo errado.

O uso mais seguro é como funil:

  1. processe automaticamente casos claros e de baixo risco;
  2. mande baixa confiança, divergências e alto impacto para pessoas;
  3. amostre periodicamente casos classificados como fáceis;
  4. acompanhe a discordância entre modelo, avaliador e revisão humana;
  5. versione e teste o prompt do avaliador.

A automação reduz o volume da revisão. A decisão humana continua concentrada onde um erro muda o produto ou cria risco.

Crie regressão antes do lançamento

Cada erro importante corrigido deve virar um caso permanente. Assim, uma nova versão do prompt ou do modelo não reintroduz o mesmo problema silenciosamente.

Guarde um baseline e compare toda mudança contra ele. Teste também upgrades de modelo com regularidade. Um modelo novo pode funcionar com um prompt mais simples, mas também alterar custo, latência, formato e desempenho em categorias específicas.

Depois da avaliação offline, faça um lançamento controlado. Comece com tráfego limitado, monitore guardrails e mantenha rollback. Avaliação não elimina a incerteza da produção; ela mostra onde essa incerteza está.

Roteiro enxuto para a primeira avaliação

  1. escreva a decisão que o produto precisa tomar;
  2. defina uma métrica principal, um limite de segurança e guardrails operacionais;
  3. monte dados parecidos com a entrada real;
  4. revise rótulos ambíguos;
  5. registre prompt, modelo, dataset e configuração;
  6. mude uma variável por experimento;
  7. classifique os erros por causa provável;
  8. transforme falhas corrigidas em regressão;
  9. use revisão humana nos casos de maior impacto;
  10. faça um rollout controlado e mantenha rollback.

O GitHub relata uma redução de 95% nos falsos positivos dentro do conjunto offline avaliado, mantendo o recall no limite definido. O número é relevante, mas a principal lição é o processo que permitiu entendê-lo: dados próximos da produção, baseline reproduzível, análise de erro e limites claros.

Antes de confiar em um sistema de IA, tente explicar por que ele deve avançar, quais erros ainda comete e o que fará a equipe interromper o lançamento. Se essas respostas não estão registradas, o sistema ainda está em demonstração.

Fonte: GitHub Blog — How to evaluate LLMs before production.

Resumo da semana

Leve contexto para a caixa de entrada.

Uma edição semanal, sem barulho e sem promessas vazias.