评估(Evals)是 AI 工程中最被低估的技能。
-
从错误分析开始,而非指标 抽样 100 条以上的生产环境追踪(traces)。用自由文本标注每次失败(开放式编码,open coding),然后将其聚类为不同的失败类别(主轴编码,axial coding)。统计每个类别的频次。排名前 3 的类别就是你的首批指标。
-
构建版本化的黄金数据集(golden dataset) 将输入、预期输出或评分标准(rubrics)以及元数据(意图、难度、用户细分)存储在版本化数据集中。对其进行分层抽样(stratify),确保罕见但关键的用例不会被简单用例淹没。将其与你的提示词(prompts)同步进行版本管理,以确保每个得分都可复现。
-
沿显式维度生成合成数据 不要仅仅向 LLM 索要“测试问题”。定义维度(用户画像 × 意图 × 复杂度 × 边缘情况),将组合生成为元组(tuples),然后将每个元组转化为自然输入。这样你获得的是测试覆盖率,而不是 200 个几乎相同的样本。
-
优先使用确定性断言(deterministic assertions) JSON 模式校验、正则检查、必填字段、长度限制、代码执行,以及在测试数据库中实际运行的 SQL。这些方法成本低、速度快且方差为零。将基于模型的评分(model-based grading)保留给代码确实无法检查的内容。
-
将检索与生成分开评估 对于 RAG,使用 recall@k、MRR 或 nDCG 针对已标注的相关片段(chunks)来衡量检索效果。使用忠实度(faithfulness,即每个论断是否都有检索到的上下文支持)来衡量生成效果。如果你只对最终答案进行评分,将无法判断究竟是哪一半出了问题。
-
针对智能体(agents)的轨迹评估(Trajectory evals) 记录每一步:工具名称、参数、结果、token 数量。参照参考路径(reference path)对工具调用的精确率与召回率、参数正确性、步骤数以及错误恢复能力进行评分。如果一个智能体(agent)在 3 次调用就能搞定的情况下却用了 14 次调用才得出正确答案,这就是一个成本与延迟(latency)层面的 Bug。
-
pass@k vs pass^k pass@k = 在 k 次运行中至少成功一次。pass^k = 在 k 次运行中全部成功。在单次运行成功率为 80% 的情况下,pass^5 会骤降至约 33%。生产环境的可靠性体现在 pass^k 上,因此请使用你实际的温度参数(temperature)对每个用例进行多次运行。
-
用于多轮对话的模拟用户(Simulated users) 为 LLM 设定一个用户画像(persona)、一个隐藏目标以及约束条件,然后让它与你的系统进行对话,直到目标达成或达到轮次上限。对目标完成度、解决所需的轮次以及违规情况进行评分。单轮评估(Single-turn evals)会漏掉大部分状态与记忆(memory)方面的 Bug。
-
像训练分类器一样对齐你的 LLM 评判器(judge) 人工标注 100 个以上的样本为通过/失败(pass/fail)。将其划分为训练/开发/测试集(train/dev/test)。使用开发集迭代评判器的提示词(prompt),然后在测试集上报告 TPR(真阳性率)和 TNR(真阴性率)。使用带有书面评分标准(rubric)的二元输出,要求在给出最终判定前提供简短的批评意见,并锁定评判模型版本。
-
在成对比较中控制评判器偏差(bias) LLM 评判器存在位置偏差(position bias),且往往偏好更长的回答。将每项 A/B 比较以调换顺序的方式运行两次,只统计一致的判定结果。如果冗长(verbosity)导致结果偏移,则需对长度进行归一化或设限。
-
尊重统计学 在 100 个样本且准确率为 80% 的情况下,95% 的置信区间(confidence interval)约为 ±8 个百分点。从 80% 跃升至 83% 很可能只是噪声。在宣布取得胜利之前,请使用自举法(bootstrapped)置信区间,或对相同样本进行配对测试(paired test)。
-
在 CI 中把关部署 在每个涉及提示词、模型、工具或检索配置的 PR 上运行评估套件(eval suite)。按类别设定阈值,而不是仅看一个全局得分,这样某一方面的大幅提升就不会掩盖另一方面的性能倒退(regression)。一旦出现倒退,就让构建失败。
-
生产环境中的在线评估(Online evals) 抽样一定比例的实时流量,异步运行你的评判器,并针对每个失败类别的漂移(drift)发出警报。使用影子部署(shadow deployments)在真实流量上运行新提示词或模型,而无需向用户展示输出。
-
将成本与延迟作为一等指标(first-class metrics) 在关注质量的同时,追踪每次请求的 token 数量、每个成功任务的成本(而非每次调用的成本)以及 p50/p95 延迟。一项在保持质量平稳的同时削减 40% 成本的改动是真正的胜利,值得发布上线。
-
闭环 每个生产环境的失败案例都会转化为一个新的已标注测试用例。每个新模型发布后,都要在任何人讨论是否切换之前先运行完整评估套件。随着时间的推移,你的评估集将成为代码库中最有价值的资产。
提示词是一次性的。模型每隔几个月就会被替换。
你的评估基础设施才是能产生复利(compounds)的资产。