开始使用
编写测试套件
一个测试套件由两个文件和一个数据集组成。oloproof init 会生成这两个文件的骨架,并且骨架中带有注释,因为第一次入门走查中有四次尝试失败,原因是缺了一个字符串,而不是缺了某个功能。
项目文件
oloproof.yaml 声明要度量什么,以及由什么来度量。
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 是被测对象的导入路径。criterion 是指标、阈值和报告都会用来指代该评估器结果的名称,因此值得选一个你在门控中一眼就能认出的词。
评估器类型
该文件接受的每一种 type:,按类别列出。被拒绝的字段会得到该评估器所接受字段的列表作为回应,因此猜错一次,再运行一次就能改对。
| 类别 | 类型 |
|---|---|
| 确定性 | exact_match、contains、regex、json_schema |
| LLM 评判模型 | rubric_judge、groundedness_judge、citation_support_judge, probability_judge, cascade |
| 模型 | model_classifier |
| 检索 | hit_rate、recall、mrr、ndcg、citation_validity |
| 智能体 | agent_max_steps、agent_tool_called、agent_no_tool_loop、agent_tool_sequence、agent_no_undeclared_tool、agent_constraints_satisfied |
| 多智能体 | agent_route、agent_tool_permissions、agent_max_handoffs |
| 预测 | predictive_correct、predictive_precision、predictive_recall、predictive_ranking、predictive_brier、predictive_log_loss、predictive_absolute_error |
使用非 OpenAI 端点的 LLM 评判模型还需要两个字段:base_url: 和 api_key_env:。密钥在调用时从环境变量中读取,从不存储。
运行
oloproof run一次运行会执行每个用例,用每个评估器评判每个用例,并将结果存储为内容寻址的记录。针对未变更的系统和未变更的数据集再次运行时,会复用已有的结果,这就是为什么重复运行几乎没有成本,也不计量。
oloproof plan RUN_ID --run 会报告要让一条尚未得出决策的规则得出结论需要什么,并根据该运行的实际花费估价。如果给的是比较 id,则不需要这个参数。
重复测量
一个用例只测量一次,只能告诉你那一次发生了什么。replicates: 会对每个用例进行多次测量,并报告有多少用例在完全相同的测量之间改变了判定结果。
在信任任何比较之前,这个数字都值得先了解:针对一个线上助手,约九分之一的观测用例在完全相同的运行之间改变了判定结果。