评估 chatbot/AI 工作流:基准测试、验证器、LLM 裁判和实际测试用例

2023年10月05日 10 min read

一个回答得很流畅的 chatbot 并不意味着它就是好的。

它可能会:

  • 回答错误但非常自信,
  • 凭空捏造 (hallucinate) 信息,
  • 不遵守规则,
  • 忘记重要的上下文,
  • 在 Demo 中表现很好但在真实用例中失败,
  • 在基准测试 (benchmarks) 中得分很高,但并没有帮助业务工作流运行得更好。

因此,如果你在认真构建 AI 工作流,评估 (evaluation) 不是一个“以后再做”的环节。它应该及早考虑。

1. 基准测试 (Benchmarks) 是起点,而不是最终答案

基准测试帮助我们初步了解模型的能力。例如,一个模型可能在推理 (reasoning) 方面很强,另一个在编码方面很强,还有一个在多语言任务上表现更好。

但是基准测试通常与实际产品数据不同。

例如,对于 CRM,基准测试无法回答以下问题:

- 模型理解我们的交易阶段 (deal stages) 吗?
- 它知道什么时候不允许提供折扣吗?
- 它保持了品牌基调 (brand tone) 吗?
- 当缺少电话号码/电子邮件时,它会询问吗?
- 它会捏造客户信息吗?

因此,基准测试应该用于选择初始模型。但生产环境的决定必须基于特定工作流的测试用例。

2. 评估 LLM 的 4 种常见方法

Sebastian Raschka 将常见的评估方法分为 4 组:多项选择基准测试 (multiple-choice benchmarks)、验证器 (verifiers)、排行榜 (leaderboards) 和 LLM 裁判 (LLM-as-judge)。

我以更务实的方式解释它们:

多项选择基准测试 (Multiple-choice benchmark)

易于评分,易于比较,但有时不能反映真实任务。

适合问:

模型是否有相对较好的知识/推理基础?

不适合问:

模型能正确处理我的 CRM 工作流吗?

验证器 (Verifier)

验证器是一个结果检查器。它可以是代码、规则、数据库检查或另一个模型。

例如:

如果输出包含价格,但输入数据没有 → 失败 (fail)。
如果消息承诺 24 小时内发货,但政策中没有 → 失败。
如果答案没有引用文档中的来源 → 失败。

验证器非常适合需要严格控制错误的工作流。

排行榜 (Leaderboard)

排行榜对于快速参考很有用,但不应被神化。

在排行榜上排名靠前的模型,并不意味着它适合越南语、你的垂直领域、你的延迟要求或你的预算。

LLM 裁判 (LLM-as-Judge)

使用另一个 LLM 根据评分标准 (rubric) 对输出进行评分。

例如评分标准:

打分 1-5:
- 是否正确回答了问题?
- 是否使用了提供的数据?
- 是否捏造了事实?
- 是否保持了专业的语气?
- 是否给出了明确的下一步行动 (next action)?

LLM 裁判很方便,但不是绝对的。对于关键任务,它应与人工审查或规则检查器结合使用。

3. AI 工作流的评估应从真实错误开始

我喜欢从这个问题开始:

如果这个系统出错了,它会出什么错?

对于 AI 销售助手,错误可能是:

  • 捏造客户信息,
  • 发送脱离上下文的跟进邮件,
  • 错误分类冷/热线索 (leads),
  • 提供未经授权的折扣,
  • 未能识别出客户正在生气,
  • 回复太长,无法使用。

从真实的错误中,我们编写测试用例。

4. CRM AI 助手的测试用例示例

一个简单的测试用例可能长这样:

{
  "name": "当线索缺少电话号码时不会捏造信息",
  "input": {
    "lead_name": "Anh Nam",
    "message": "我想获得 5 人销售团队 CRM 套餐的报价。",
    "phone": null,
    "email": null
  },
  "expected_behavior": [
    "不会捏造电话号码或电子邮件",
    "感谢客户",
    "询问缺失的联系信息",
    "保持礼貌和简洁的语气"
  ]
}

另一个测试用例:

{
  "name": "未经授权不会提供折扣",
  "input": {
    "deal_stage": "Proposal Sent",
    "customer_message": "如果你们给 50% 的折扣,我现在就签约。",
    "discount_policy": "销售助手不能授权折扣。"
  },
  "expected_behavior": [
    "不确认折扣",
    "确认客户的请求",
    "建议转交给授权人员",
    "不捏造新政策"
  ]
}

这样的测试用例比仅仅问模型几个泛泛的问题有价值得多。

5. 一个小型的评估管道

对于小型项目,管道可以非常简单:

数据集测试用例
→ 运行 prompt/新模型版本
→ 使用规则/验证器进行评分
→ 如果需要,使用 LLM 裁判进行评分
→ 记录错误
→ 与旧版本比较
→ 仅当它不破坏关键用例时才部署

一开始不需要很复杂。重要的是要有基准 (baseline)。

6. 应该评估哪些指标?

这取决于工作流,但我会从易于理解的指标开始:

指标含义
准确性 (Accuracy)回答正确吗?
忠实度 (Faithfulness)是否遵循提供的数据?
幻觉率 (Hallucination rate)是否捏造了事实?
策略合规性 (Policy compliance)是否遵守规则?
语气质量 (Tone quality)语气合适吗?
任务完成度 (Task completion)是否完成了任务?
延迟 (Latency)速度太慢吗?
单任务成本 (Cost per task)每项任务花费多少?

对于真实的 AI 产品,技术指标必须与工作流指标联系起来。例如:减少跟进时间、减少报价错误、提高回复率、减少员工必须修改输出的次数。

7. 何时需要人工审查?

在以下情况下应有人工审查:

  • 输出影响资金,
  • 涉及儿童或弱势群体,
  • 存在法律风险,
  • 涉及关键的数据变更,
  • 模型不确定,
  • 客户正在生气或抱怨。

对于 Snow AI Companion,人工审查和家长控制甚至更为重要。儿童的 AI 伴侣不能仅仅用“回答得好不好”来评估。必须对其安全性、边界、语气、记忆和拒绝不当请求的能力进行评估。

8. 我将如何从小处着手?

如果构建一个新的 AI 工作流,我的第一个版本会是这样的:

- 20 个真实的测试用例
- 5 个简单的测试用例
- 10 个中等难度的测试用例
- 5 个困难或危险的测试用例
- 1 个受版本控制的 prompt 文件
- 1 个运行评估的脚本
- 1 个通过/失败记录板
- 1 个需要修复的错误列表

然后,每次我编辑 prompt、更改模型、添加 RAG 或更改工作流时,我都会重新运行评估。

这很简单,但有助于避免“今天 Demo 能跑,下周换个模型就崩了”的情况。

结论

LLM 评估不需要从一个过于复杂的平台开始。

它始于一个非常简单的事实:

我必须知道我的 AI 错在哪里、怎么错的,以及错误是否危险。

基准测试帮助选择模型。验证器帮助捕获明显的错误。LLM 裁判帮助对主观标准进行评分。人工审查帮助控制关键决策。

一个优秀的 AI 工作流不是一个从不犯错的工作流。它是一个知道如何发现错误、限制风险并通过验证不断改进的工作流。

参考资料

New posts, shipping stories, and nerdy links straight to your inbox.

2x per month, pure signal, zero fluff.


分享这篇文章: