Agent 改了一版:
怎么知道变好了、别处没退化?
先弄清楚:每个概念是什么
- 回归集(regression suite)
- 固定的一批 task,按类别分组,每次改动之后全部重跑。
- 成功率
- 同一个 task 跑 k 次,成功的比例。
- Gate
- 合并之前必须通过的自动检查。
- Hidden task
- 平时不拿来调 agent 的一部分 task,只用来最后确认,防 overfit 回归集。
- 回流
- 把线上失败的 case 加进回归集。
看图:改动前后按类别比成功率
30 秒回答
I keep a fixed regression suite, grouped by category, and rerun all of it after every change, not just the cases I fixed. Agents are nondeterministic, so each task runs several times, and I compare success rates per category with the model version and environment pinned. A change merges only if no category drops by more than the noise. I also check the trajectory, meaning tool choices, step count and tokens, because a run can pass for the wrong reason. Production failures go back into the suite, and I hold out some hidden tasks so I don't overfit to it.
Version chain
| 版本 | 做法 | 还剩的问题 |
|---|---|---|
| v1 只测修好的 | 只重跑这次修的那几个 bad case | 别的类别退化了看不到 |
| v2 回归集 | 每次改动全部重跑回归集 | 同一个 task 这次过、下次不过 |
| v3 多跑 + gate | 每个 task 跑 k 次;按类别比成功率;没有类别的下降超过 noise 才合并 | 回归集越调越熟,分数虚高 |
| v4 回流 + hidden task | 线上失败的 case 回流;留一部分 hidden task | 回归集变大,重跑一遍变慢 |
环境不固定,两版的差别可能来自环境。结果对了也可能是碰巧,成本也可能涨了,所以还要看 tool 选择、步数和 token。回归集由 eval harness 来跑(见 LLM harness),变大之后怎么跑得完见 大批量跑 agent。
手算:掉多少才算退化
图里每类有 100 个 run。成功率是 80% 时,它的标准误差是 \(\sqrt{0.8 \times 0.2 / 100} = 0.04\),也就是 4 个点。两版相减,误差约 \(4 \times \sqrt{2} \approx 5.7\) 个点。所以掉 2 个点在 noise 里,掉 20 个点是真的退化。
同一个 task 的几次 run 并不独立,实际的 noise 更大。稳妥的做法是把未改动的版本重复跑几遍,直接量出来(见 noise floor)。
必答点
- 回归集固定,按类别分组,每次改动全部重跑
- 同一个 task 跑 k 次看成功率,一次通过不代表稳定
- gate:没有类别的下降超过 noise 才合并
- 比较时固定 model 版本和环境
- 除了最终结果,也看 tool 选择、步数、token
- 线上失败的 case 回流;留 hidden task 防 overfit
追问
用 review agent 打分,它自己错了怎么办?
确定性检查优先,比如 test 是否通过、输出是否和 reference 相等。review agent 只做补充,并且抽样人工核对(偏差见 LLM evaluation)。
线上 log 是海量的,怎么变成有限的回归集?(字节原题)
随机抽样会被常见的简单 case 占满。先按失败类型分组和去重,每类留几个代表,写上期望结果再入库。
来源牛客:字节 AI大模型开发平台一面 · 牛客:字节全栈二面 · 牛客:蚂蚁一面 · 牛客:阿里千问技术部一面(「review agent怎么确保他的评价是正确的?」)· 牛客:字节 AI Agent 评测二面 · PracHub:Cresta eval platform · ml-八股 08 第 33 题