Começar
Escrevendo uma suíte
Uma suíte é composta de dois arquivos e um dataset. oloproof init gera a estrutura dos dois, e essa estrutura vem comentada porque a primeira sessão de onboarding perdeu quatro tentativas por causa de uma string ausente, e não de um recurso ausente.
O arquivo do projeto
oloproof.yaml declara o que é medido e o que faz a medição.
version: 1
project: example
dataset: data/example.jsonl
system:
name: example-support-bot
version: "1"
callable: app:answer
config: {}
evaluators:
- type: exact_match
criterion: exact_label
field: labelsystem.callable é um caminho de import para a coisa sob teste. criterion é o nome que uma métrica, um limiar e um relatório vão todos usar para o resultado deste avaliador, então vale a pena escolher uma palavra que você reconheça em um gate.
Os tipos de avaliador
Todo type: que o arquivo aceita, por família. Um campo rejeitado responde com os campos que aquele avaliador aceita, então um palpite errado fica a uma execução do certo.
| Família | Tipos |
|---|---|
| Determinísticos | exact_match, contains, regex, json_schema |
| Juiz LLM | rubric_judge, groundedness_judge, citation_support_judge, probability_judge, cascade |
| modelo | model_classifier |
| Recuperação | hit_rate, recall, mrr, ndcg, citation_validity |
| Agente | agent_max_steps, agent_tool_called, agent_no_tool_loop, agent_tool_sequence, agent_no_undeclared_tool, agent_constraints_satisfied |
| Multiagente | agent_route, agent_tool_permissions, agent_max_handoffs |
| Preditivos | predictive_correct, predictive_precision, predictive_recall, predictive_ranking, predictive_brier, predictive_log_loss, predictive_absolute_error |
Um juiz LLM em um endpoint que não seja o da OpenAI precisa de mais dois campos: base_url: e api_key_env:. A chave é lida do ambiente no momento da chamada e nunca é armazenada.
Executando
oloproof runUma execução roda cada caso, julga cada um com todos os avaliadores e armazena os resultados como registros endereçados por conteúdo. Executá-la de novo contra um sistema e um dataset inalterados reaproveita o que já existe, e é por isso que uma execução repetida quase não custa nada e não é medida.
oloproof plan RUN_ID --run informa o que seria necessário para resolver uma regra não decidida, com o preço calculado a partir do que aquela execução realmente gastou. Se receber o id de uma comparação, não precisa de flag.
Réplicas
Um caso medido uma vez diz o que aconteceu uma vez. replicates: mede cada caso mais de uma vez e informa quantos mudaram de veredito entre medições idênticas.
Vale a pena saber esse número antes de confiar em qualquer comparação: contra um assistente real, cerca de um em cada nove casos observados mudou de veredito entre execuções idênticas.
Próximos passos
- Registrando o que um sistema fez trata de artefatos, uso e métricas de latência.
- Avaliação de RAG, Agentes e ferramentas e
Classificadores e regressores tratam dos tipos de recuperação, agente e preditivos.
- Gate no CI transforma uma decisão em um código de saída.
- Juízes trata do que um juiz LLM precisa atingir antes de poder servir de gate para um lançamento.
- Conceitos básicos explica os quatro estados de decisão e por que os denominadores importam.