← Voltar ao curso
Nível 3 — Automação e escala · Módulo 3.6 — Engenharia de prompt e avaliação

3.6.3 · Montando um dataset de avaliação

5 min de vídeo TEC

Objetivo: ao final, o consultor monta um conjunto de casos que representa a distribuição real do trabalho, inclui deliberadamente os casos difíceis e de borda, e versiona o dataset junto do prompt.

O que você precisa levar desta aula

  1. Volume acima de refinamento, e o dataset quase sempre já existe — não precisa ser criado do zero. Para exercitar, ele sai da instância SAP da Wayon (fictício, livre); para validar prompt que vai para cliente, sai do histórico real, anonimizado. Duzentos casos com nota automática distinguem mais que vinte com nota humana caprichada.
  2. O dataset espelha a distribuição real e inclui os casos difíceis de propósito: entrada vazia, entrada gigante, entrada ambígua e o caso em que dois especialistas discordariam. Sem eles, a avaliação confirma em vez de descobrir.
  3. Versione o dataset junto do prompt. Sem versão, uma queda ou uma melhora não distingue mudança de prompt de mudança de prova — e datasets ficam mais fáceis sozinhos, quando alguém "arruma" o caso que incomodava.

Quantos casos

Não há número mágico, mas há ordens de grandeza úteis:

Tipo de tarefa Casos Por quê
Classificação com rótulo exato 200–1000 A nota é barata (comparação de string), então volume é quase de graça
Extração de campo estruturado 100–300 Nota automática por campo, com tolerância definida
Resumo ou redação 50–200 Nota mais cara (modelo juiz); o volume cai, o custo por caso sobe
Consistência (mesma pergunta, formas diferentes) ~50 grupos Cada grupo tem a mesma pergunta reescrita de várias formas

A regra por trás da tabela: quanto mais barata a nota, mais casos você deve ter. Se a nota é saida == esperado, não há motivo para parar em cinquenta.

Os quatro casos de borda que faltam em todo dataset

Tipo Exemplo no AMS do Meridiano O que ele descobre
Entrada vazia ou inútil "não funciona", sem mais nada Se o prompt inventa um rótulo em vez de assumir baixa confiança
Entrada longa demais Thread com dez e-mails colados, 8 mil tokens Se o prompt classifica pelo último trecho em vez do todo
Entrada ambígua "Não consigo faturar o pedido bloqueado por crédito" — SD, FI ou MM? Se o prompt escolhe arbitrariamente em vez de sinalizar
Caso em que humanos discordam Qualquer chamado que rodou entre duas filas antes de fechar Onde a própria tarefa está mal definida — e isso é achado, não defeito

A última linha merece atenção. Quando dois analistas experientes discordam de um caso, o problema não é do prompt. É de definição de tarefa, e nenhum ajuste de prompt resolve. Encontrar esses casos cedo é uma das coisas mais valiosas que a montagem do dataset produz.

Estrutura do arquivo

# dataset_triagem_v3.jsonl — uma linha por caso
{"id": "T-0001", "ticket": "Não consigo liberar o pedido 4500012345...", "esperado": "MM", "tipo": "tipico"}
{"id": "T-0002", "ticket": "não funciona", "esperado": "OUTRO", "tipo": "borda_vazio"}
{"id": "T-0003", "ticket": "Não consigo faturar o pedido bloqueado...", "esperado": "SD", "tipo": "borda_ambiguo"}

O campo tipo não entra na nota — ele existe para você conseguir ler o resultado por fatia. É o que permite dizer "acerta 91% nos típicos e 43% nos ambíguos" em vez de só "acerta 78%".

import json

def carregar(caminho):
    with open(caminho, encoding="utf-8") as f:
        return [json.loads(linha) for linha in f if linha.strip()]

casos = carregar("dataset_triagem_v3.jsonl")
print(f"{len(casos)} casos")
for tipo in sorted({c['tipo'] for c in casos}):
    print(f"  {tipo}: {sum(1 for c in casos if c['tipo'] == tipo)}")

De onde vem o dataset: duas fontes, duas regras

Antes da anonimização, uma decisão que vem primeiro — de onde o dataset sai. São dois casos, e eles têm regras diferentes:

Uso do dataset Fonte Regra
Exercício, treinamento, aprender a montar o ciclo Instância SAP da Wayon (dados fictícios) Livre. Sem anonimização, sem limite de titulares, sem pedido
Validar prompt que vai para produto ou automação de cliente Histórico real do cliente Anonimização obrigatória, abaixo

Para praticar o que esta aula ensina, use a instância. Ela existe para isso, e o problema de governança desaparece.

Mas há uma ressalva metodológica que você precisa carregar, e ela é o motivo de a segunda linha existir: dado de simulação é, por construção, mais limpo que a realidade. Chamado de AMS real é escrito com pressa, tem informação faltando, mistura dois assuntos, contradiz o título. É justamente essa bagunça que faz a avaliação valer — foi ela que produziu a fatia "ambíguos" da aula 3.6.5, onde o prompt acertava 31%.

Um prompt que acerta 95% num dataset fictício pode acertar 60% em chamado real, e a avaliação não teria avisado. Por isso: aprenda na instância, valide no real.

Anonimização — não é opcional

Isto vale para a segunda linha da tabela acima: dataset construído a partir de histórico de cliente.

Chamado de AMS carrega nome, e-mail corporativo, às vezes valor de pedido e nome de fornecedor. Um dataset é, por definição, esse conteúdo guardado e reutilizado, o que o coloca direto dentro da política de dados da aula 1.1.4.

O que O que fazer
Nome de pessoa, e-mail, telefone Substituir por marcador estável (USUARIO_01) — estável para o caso continuar coerente
Nome de fornecedor e cliente final Substituir, salvo se for irrelevante para a tarefa
Número de pedido, documento, nota Manter — costuma ser o que a tarefa precisa reconhecer
Valor financeiro Manter só se a tarefa depender dele

O marcador precisa ser estável dentro do caso: se o mesmo usuário aparece três vezes no chamado, as três viram USUARIO_01. Trocar por marcadores diferentes destrói a coerência do texto e altera a tarefa.

Regra Wayon Dataset de exercício sai da instância SAP da Wayon — dado fictício, uso livre. É o caminho padrão para praticar. Dataset construído a partir de dado de cliente é anonimizado antes de ser gravado, nunca depois, e respeita o limite de 5 titulares reais da política de dados (aula 1.1.4). Ele vive no repositório do projeto, versionado, e não sai dele — não vai para notebook pessoal, não vai para pasta compartilhada fora do projeto, não vai anexo de e-mail. E o inverso também é regra: dado de cliente não entra na instância de simulação para "testar com dado de verdade" (aula 3.9.3).

📖 Criar avaliações empíricas · Política de dados — aula 1.1.4

Quiz — 4 questões

1.Você tem orçamento para montar um dataset. Qual das duas opções escolher para uma tarefa de classificação?
  • a)25 casos avaliados manualmente por dois analistas seniores, com consenso

    Cuidadoso, mas 25 casos não distinguem prompts próximos — e para classificação a nota automática é praticamente de graça.

  • b)300 casos com o rótulo real vindo do histórico, com nota automática

    Correto. Volume acima de refinamento, especialmente quando a nota é barata.

  • c)25 casos manuais agora, ampliando para 300 só se o resultado for ruim

    Com 25 casos você não sabe se o resultado é ruim — é o problema que a aula 3.6.2 demonstrou.

Ver resposta e por quê
a) Cuidadoso, mas 25 casos não distinguem prompts próximos — e para classificação a nota automática é praticamente de graça.
b) Correto. Volume acima de refinamento, especialmente quando a nota é barata.
c) Com 25 casos você não sabe se o resultado é ruim — é o problema que a aula 3.6.2 demonstrou.
2.No AMS do Meridiano, 60% dos chamados são de MM. Como o dataset deve refletir isso?
  • a)Com aproximadamente 60% de MM, espelhando a distribuição real

    Correto. O dataset representa o trabalho, não uma versão idealizada dele.

  • b)Com 1/7 de cada rótulo, para não favorecer nenhuma categoria

    Balanceamento artificial mede um problema que não é o do cliente.

  • c)Com MM sub-representado, já que é a categoria mais fácil

    A frequência real é o que define o impacto do erro; "fácil" não é critério de proporção.

Ver resposta e por quê
a) Correto. O dataset representa o trabalho, não uma versão idealizada dele.
b) Balanceamento artificial mede um problema que não é o do cliente.
c) A frequência real é o que define o impacto do erro; "fácil" não é critério de proporção.
3.Ao montar o dataset, você encontra chamados em que dois analistas experientes discordariam do rótulo correto. O que fazer?
  • a)Incluí-los e tratar a discordância como achado: a tarefa está mal definida nesse ponto

    Correto. Nenhum ajuste de prompt resolve tarefa ambígua — descobrir isso cedo é um dos maiores ganhos da montagem.

  • b)Excluí-los, porque um caso sem resposta certa não pode ser avaliado

    Excluir esconde o problema real e infla artificialmente a nota.

  • c)Incluí-los com o rótulo do analista mais sênior, para ter uma resposta de referência

    Isso transforma ambiguidade real em critério pessoal, e o prompt será medido contra uma preferência.

Ver resposta e por quê
a) Correto. Nenhum ajuste de prompt resolve tarefa ambígua — descobrir isso cedo é um dos maiores ganhos da montagem.
b) Excluir esconde o problema real e infla artificialmente a nota.
c) Isso transforma ambiguidade real em critério pessoal, e o prompt será medido contra uma preferência.
4.Por que versionar o dataset junto do prompt? ---
  • a)Porque a documentação da Anthropic exige versionamento para usar a API de avaliação

    Não existe essa exigência; a razão é metodológica, não formal.

  • b)Para poder reprocessar o dataset com modelos futuros sem reescrevê-lo

    É um benefício lateral, não o motivo — o dataset serve a modelos diferentes com ou sem versão.

  • c)Porque sem versão você não distingue prompt que melhorou de prova que ficou mais fácil

    Correto. Datasets afrouxam sozinhos quando alguém "arruma" o caso que incomodava.

Ver resposta e por quê
a) Não existe essa exigência; a razão é metodológica, não formal.
b) É um benefício lateral, não o motivo — o dataset serve a modelos diferentes com ou sem versão.
c) Correto. Datasets afrouxam sozinhos quando alguém "arruma" o caso que incomodava.