Skip to content

开始使用

编写测试套件

一个测试套件由两个文件和一个数据集组成。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: label

system.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: 会对每个用例进行多次测量,并报告有多少用例在完全相同的测量之间改变了判定结果。

在信任任何比较之前,这个数字都值得先了解:针对一个线上助手,约九分之一的观测用例在完全相同的运行之间改变了判定结果。

下一步