L04 从一段成功录像到可复现评测
适用章节:M04。本实验允许多种正确实现;验收不变量固定,不强制特定框架。
工程事故
开发者只展示最成功的一次,失败尝试的成本没有记账;模型自述完成,评测器就计为成功。你需要重建一个不会被文本和幸存者偏差误导的评测闭环。
最终交付
任务验收器设计、指标计算器、10条教学试次分析、一个bad-case报告,以及真实运行结果的空白记录模板。
已提供材料
data/evaluation/trials.json、data/traces/refund_response_lost.json、data/retail/tasks.jsonl、reference/agentlab/metrics.py
先独立写出预期行为再看参考解。所有商店、订单、试次与价格单位都是教学构造;不连接真实资金系统。
接口与不可破坏的约束
把Task、Trial、Attempt分开:一个任务可多次独立试验,一次试验可包含重试。所有计费尝试进入总成本;未知成本标记unknown,不能默认为0。p95在本课程使用nearest-rank定义,必须在报告说明。
任务成功基于领域状态及授权不变量。LLM-as-judge只能负责需要语义判断的部分,保留rubric与人工抽查;不能让judge覆盖“未审批退款”的确定性失败。
实施步骤
- 为T01–T24逐条标出应读的事实与正确终态,不把expected字段送进Agent。
- 运行离线指标样例,手算成功率与每个成功任务成本。
- 设计Trace schema:run/attempt/span、工具状态、延迟、usage、错误分类;不保存密钥或隐藏思维过程。
- 分析响应丢失轨迹:unknown不等于失败,恢复后ledger_count=1才是确认。
- 写分层故障分类:检索、推理/决策、协议、授权、工具、恢复、预算、验收器错误。
- 选修真实模型运行:固定模型标识、provider、配置、任务版本和预算,进行重复试次;给小样本不确定性,不夸大百分比。
验收矩阵
| 条件 | 正确处理 |
|---|---|
| 教学10试次,7成功,总成本14.5 | success_rate=.7,cost_per_success=14.5/7 |
| 成功数0 | cost_per_success未定义,不显示0 |
| 空数据集 | success_rate未定义 |
| 延迟100…1000ms | nearest-rank p95=1000ms |
| 成本NaN/负值 | 拒绝输入 |
| 文本说成功但账本无操作 | 业务失败或未确认,不能成功 |
如何运行已有参考测试
在包根目录运行:
python -m unittest discover -s reference/tests -v
本实验主要参考测试类为MetricTests。已有测试默认验证reference/;测试通过不代表你的starter/实现通过。接入自己的实现时,将被测模块显式替换/注入,保持测试和领域契约不变,不要修改断言来迁就实现。
评分
独立oracle30;成本/指标25;trace/错误归因20;可复现性15;结论克制10。
出现跨租户泄露、未经批准的退款或伪造结果时,不以其他分数抵消。允许记录未完成的选修功能,但必须说明范围。
进阶挑战
比较pass@k与pass^k的含义;对安全违规单列硬门槛,不用高正确率平均掉违规。为失败任务写一个最小回归测试。
提交前自查
保存代码版本、运行命令、输入数据版本、输出日志、失败案例与设计决策。解释至少一个被你否决的方案。没有运行的测试标记“未运行”,不写“预计通过”。参考解见对应答案。