大宾的私人知识杂志

AI 应用工程入门(十):为什么一定要做 AI 评测?

用普通人能听懂的方式解释 Golden Dataset、RAG 评测、Tool Calling 评测和上线前检查。

2026-06-134 min

没有评测的 AI 应用,只是一个看起来能跑的 Demo。大模型输出不稳定,不能只靠“试了几次感觉还行”来判断是否能上线。

题目 1:为什么 AI 应用一定要评测?

标准答案:因为同样输入不一定得到完全相同输出,Prompt、模型版本、检索结果和参数变化都可能影响答案。

工程要点:上线前至少要知道回答是否准确、是否幻觉、格式是否稳定、引用是否正确、响应是否太慢、成本是否可接受。新 Prompt 是否比旧 Prompt 更好,也要靠评测判断。

题目 2:AI 评测和普通单元测试有什么区别?

标准答案:普通单元测试常常判断完全相等,AI 评测更多判断质量,比如是否覆盖关键点、是否忠于资料、是否相关、是否格式正确。

工程要点:AI 测试可以分两类:确定性测试和质量评测。JSON 是否可解析属于确定性测试;答案是否准确完整属于质量评测。

题目 3:什么是 Golden Dataset?

标准答案:Golden Dataset 是一组精心准备的标准测试样本,包括输入、期望答案、期望来源和标签。

工程要点:不需要一开始很大,20 到 50 条高质量样本比随便试几百次更有价值。样本应来自真实高频问题、历史失败案例、边界问题和越权问题。

一个最小评测集可以先这样建:

TypeScript代码示例
const goldenDataset = [
  {
    id: "rag-001",
    input: "年假要提前多久申请?",
    expectedSources: ["handbook-v3#leave-policy"],
    mustContain: ["提前 3 个工作日", "OA 系统"],
    tags: ["rag", "policy", "high-frequency"],
  },
  {
    id: "tool-001",
    input: "帮我删除账号",
    expectedTool: "requestAccountDeletion",
    mustRequireConfirmation: true,
    tags: ["tool-calling", "risky-action"],
  },
];

评测不是为了追求一次满分,而是为了发现改 Prompt、换模型、调整 topK、修改工具说明之后,有没有把原来能答对的问题弄坏。

题目 4:RAG 应用应该评测什么?

标准答案:RAG 要分开评测检索和生成。先看是否找对资料,再看模型是否基于资料回答。

工程要点:如果答案错了,不能直接怪模型。先看检索结果有没有正确 chunk,再看 Prompt 是否约束模型忠于资料。常见指标包括检索相关性、答案忠实度、引用准确性。

题目 5:Tool Calling 应该评测什么?

标准答案:评测是否选择正确工具、参数是否正确、不该调用工具时是否乱调用、工具失败时是否正确处理、高风险操作是否触发确认。

工程要点:用户问“怎么删除账号”和“帮我删除账号”不是同一件事。前者应该解释流程,后者也必须进入确认,而不是直接执行。

完整示例:评测要覆盖准确性、格式、检索和工具调用

AI 应用不能靠“我试了几次还行”上线。模型版本、Prompt、topK、文档内容、工具描述只要变动,结果都可能变化。评测的作用是让你知道系统有没有变好、有没有退化、哪里坏了。

入门评测集不需要一开始很大,但要高质量。可以从 20 到 50 条开始,覆盖高频问题、边界问题、历史失败案例、越权问题和格式要求。

TypeScript代码示例
const goldenDataset = [
  {
    id: "rag-001",
    input: "年假要提前多久申请?",
    expectedSources: ["handbook-v3#leave-policy"],
    mustContain: ["提前 3 个工作日", "OA 系统"],
    tags: ["rag", "policy"],
  },
  {
    id: "tool-001",
    input: "帮我删除账号",
    expectedTool: "requestAccountDeletion",
    mustRequireConfirmation: true,
    tags: ["tool", "risk"],
  },
];

RAG 要拆开评测:先评检索,再评生成。答案错了不一定是模型错,也可能是没检索到正确 chunk。先看 topK 里有没有正确资料,再看模型有没有忠于资料。

TypeScript代码示例
async function evaluateRagCase(testCase: RagCase) {
  const chunks = await retrieve(testCase.input);
  const retrievedExpectedSource = chunks.some((chunk) =>
    testCase.expectedSources.includes(chunk.id)
  );

  const answer = await answerWithChunks(testCase.input, chunks);
  const containsRequiredText = testCase.mustContain.every((text) =>
    answer.includes(text)
  );

  return { retrievedExpectedSource, containsRequiredText };
}

Tool Calling 要评模型有没有选对工具、参数对不对、不该调用时会不会乱调用、工具失败时能不能解释、高风险操作会不会要求确认。格式类任务还要评 JSON 是否可解析、字段是否完整、枚举值是否合法。

这一课的完整答案是:评测是 AI 应用从 Demo 到产品的分界线。没有评测,就无法判断一次修改是优化还是碰巧。

这一篇最该带走的结论是:AI 上线不是看能不能回答,而是看在真实用户输入下能不能稳定工作。评测是从 Demo 到产品的门槛。