15步实操指南:从零掌握LLM评估全流程
下面是真正掌握 LLM 评估的分步方法,每一步都配了能证明你已掌握的实战项目:
1. 先搭一个能被你搞崩的东西
不要在抽象层面学评估。做一个小的 LLM 应用,让它有真实的失败面:对文档站点做 RAG、一个 text-to-SQL 机器人,或者一个会调用工具的 agent。丑一点没关系。你需要的是 trace,不是打磨。
2. 手工读 100 条 trace
把输入、输出、检索到的 chunk、工具调用全部导进电子表格。每条失败用大白话写一行。给它们聚类。数一下数量。大多数人跳过这一步,直接为自己根本不存在的问题去造指标。
项目:把你的失败分类法连同每一类的数量一起发出来。
3. 搭你的第一个黄金数据集
从你最常见的 3 类失败里各取一些,凑 50 条;再加 20 条简单的 happy-path,10 条对抗性用例。列:输入、期望输出或评分 rubric、类别、难度、业务分段。把它提交进 git,每次改 prompt 都要标注这次打分用的是哪个数据集版本。
4. 正确地生成合成数据
先写清你的维度(人设 × 意图 × 复杂度 × 边界情况),用脚本生成这些组合,再让 LLM 把每个组合改写成一句自然的查询。人工过一遍,把烂的扔掉。用 embedding 把近似重复的去重。
项目:一个 300 条的合成数据集,附一张覆盖矩阵,说明你测了哪些组合。
5. 在 judge 之前先写代码检查
pytest + pydantic 做 schema 校验,正则、必填字段、长度限制。把生成的 SQL 拿到一个真实的 SQLite 测试库上跑。把生成的代码丢进沙箱执行。尽量让至少一半的失败类别能不靠 LLM 就检查出来。
6. 搭一个 LLM judge 并做对齐
手工标 100+ 条 pass/fail。切成 train/dev/test。二元判定、写清楚 rubric、先写批评再下结论。在 dev 集上反复迭代 prompt,直到 TPR 和 TNR 都高,然后在 test 集上只报一次。把 judge 模型的版本钉死。
项目:一个 judge 对齐的 notebook,里面有混淆矩阵,以及你试过的每一次 prompt 迭代。
7. 把 RAG 评估拆开
给 50 条查询标出相关 chunk。算 recall@5、MRR、nDCG。然后把每个答案拆成一条条 claim,逐条对照检索到的上下文,给忠实度打分。改一下 chunk 大小或换个 embedding 模型,看哪个数字会动。
8. 给 agent 的轨迹打分
每一步都记录工具名、参数、结果、token 数。给 30 个任务写参考路径。给工具 precision/recall、参数正确性、步数、错误恢复打分。故意让某个工具 20% 的时候失败,看你的 agent 是能恢复,还是直接螺旋下坠。
9. 为多轮对话模拟用户
给一个模拟器 LLM 设定人设、隐藏目标和约束(“除非被问两次,否则不给订单号”)。跑 50 段对话,每段最多 15 轮。给目标完成度、解决所需轮数、违规次数打分。
10. 测可靠性,不是测运气
在你的生产温度下,每条用例跑 5 次。把 pass@1 和 pass^5 并排报出来。那些时好时坏的用例,才是你真正的生产 bug。
11. 学一点统计,别自欺欺人
用 bootstrap 算置信区间。在同一批样本上配对比较两个模型(McNemar 检验适合 pass/fail)。如果你的测试分不出两次运行的差别,那你什么都没改进,只是运气好。
12. 消除成对比较的偏差
每个 A/B 比较都正反两个顺序各跑一遍,只算两边一致的判定。把胜率和答案长度画成图。如果越长的答案总是赢,那你的 judge 其实在给字数打分。
13. 把它接进 CI
在 GitHub Action 里,凡是改动 prompt、模型、工具或检索配置的 PR 都跑一遍。每个 PR 跑快速的确定性检查,完整 judge 套件 nightly 跑或者打个 label 再跑。按类别设阈值。把分数 diff 作为 PR 评论贴出来。
项目:一个 PR,CI 真的拦下了一次回归。截图存好。这就是你的证明。
14. 上线
采样 5% 的线上流量,异步跑 judge,做一个按类别分的 dashboard,对漂移报警。新模型先 shadow-deploy,再切流量。把闭环搭起来:点踩 → 分诊队列 → 新的标注测试用例。
15. 把成本也变成一个指标
记录 token、每个成功任务的成本、p50/p95 延迟。换一个更便宜的模型;如果 CI 上质量不掉,就把省下来的钱画成图。“质量不变,便宜 40%” 是最容易向任何团队推销的成果。
工具:pytest、pydantic、promptfoo、DeepEval、Ragas、Inspect、Langfuse、LangSmith、Braintrust、Arize Phoenix。挑一套栈,把概念学透。工具会换。
阅读:Hamel Husain 和 Shreya Shankar 关于评估的文章、Eugene Yan 的 LLM 评估博客,以及 τ-bench 论文(pass^k 这个指标就来自那里)。
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖