Testes unitários assumem saída determinística. Saída de LLM varia por design, mesmo com temperature 0, porque cada versão de modelo muda a distribuição. Evals de LLM em CI/CD fecham essa lacuna com quatro peças: dataset golden, checagens determinísticas, juiz automatizado e gate de regressão no pipeline.

O dataset golden vem primeiro

Curadoria manual de 50 a 200 pares entrada/saída esperada, colhidos de queries reais de usuários e de incidentes de produção. Cada incidente entra com dois ou três casos novos. Sem golden set, discussão de qualidade vira briga de opinião.

Versione como fixture junto do código (evals/golden.yaml). Dataset fora do repo morre esquecido em um sprint.

Checagens determinísticas antes de juízes

Rode primeiro o que custa zero token de inferência:

  • Validade de JSON e conformidade de schema com zod ou pydantic
  • Lista de frases proibidas (nome de concorrente, promessa legal)
  • Teto de comprimento e formato obrigatório de saída

Esse filtro pega cerca de 60% das regressões de graça. Juiz entra depois, no que sobrou.

LLM-as-judge com rubrica escrita

Um modelo forte pontua cada saída contra rubrica documentada: correção factual, tom, aderência de formato, nota de 1 a 5 por critério. Custa 10x menos que revisão humana. Todo juiz tem viés; audite 5% das notas à mão para manter honestidade.

Gate de regressão no CI

A suíte roda a cada bump de prompt ou de modelo (GitHub Actions, GitLab CI, tanto faz). Queda de 2-3 pontos no score composto bloqueia merge; na prática esse patamar denuncia regressão real. Com promptfoo, promptfoo eval --config promptfooconfig.yaml vira um step do workflow, com diff de outputs no PR.

Drift de qualidade em produção

Eval no PR protege o presente; drift aparece depois. Provedores trocam pesos sem aviso. Amostre 1-2% do tráfego vivo toda noite, pontue contra baseline e acione o on-call após três dias consecutivos de queda. A suíte de evals é o fusível.

Ferramentas por tamanho de time

promptfoo cobre pipeline open-source com config YAML e comparação de outputs no pull request. Braintrust e LangSmith entregam plataforma gerenciada com tracing e datasets online. Time pequeno vai longe com fixtures de pytest e disciplina de revisão.

Comece com 30 casos golden, três checagens determinísticas e um gate de 2 pontos no merge. Uma tarde de setup compra proteção permanente contra a próxima troca de modelo que quebra tudo.