跳转到主要内容

为非确定性 AI 功能编写验收标准

阅读需 1 分钟Tian PanTian Pan

你的工程团队已经开发文档摘要生成器三个月了。规范要求:“摘要生成器应返回准确的摘要。”你发布了它。用户抱怨摘要有一半时间是错误的。事后分析显示,在发布前没有人能以可测试的方式定义“准确”的含义。

这是 AI 功能开发的标准轨迹,之所以会发生,是因为团队将为确定性软件构建的验收标准模式,套用到了本质上是概率性的系统上。由 LLM 驱动的摘要生成器没有单一的“正确”输出 —— 它有一系列的输出分布,其中一些是可以接受的,另一些则不然。二元的通过/失败规范无法映射到分布上。

这个问题不仅是哲学上的,它还会导致切实的痛苦:功能发布时质量门槛模糊,回归测试在用户发现之前难以察觉,产品和工程团队在功能是否“完成”上无法达成一致,因为没有人规定对于随机系统来说,“完成”意味着什么。这篇文章将介绍真正有效的模式。

为什么“应返回准确结果”不是一个规范

传统的验收标准源于一个系统要么执行、要么不执行的世界。给定一个有效的 HTTP 请求,端点返回 200。给定一个特定的输入,函数返回预期的输出。这些规范直接转化为产生二元结果的自动化测试。

由 LLM 驱动的功能并非如此工作。同一个问题问两次,你可能会得到两个不同的答案。问一千次,你会得到一个分布。在该分布中,有些回答是好的,有些是坏的,大多数处于中间位置。问题不在于该功能是否返回了正确的结果,而在于在什么条件下,多大比例的结果是可以接受的,以及随着输入分布的变化,这个比例如何维持。

“准确”也存在定义问题。对于摘要生成器来说,准确是指与源文档的事实一致吗?简洁吗?涵盖了要点吗?没有幻觉出原文中没有的细节吗?这些标准中的每一个都是不同的维度,每个维度的测量方式也不同,而且它们有时会发生冲突。简洁的摘要可能会忽略细微差别;完整的摘要可能会包含用户不需要的材料。将所有这些都归结为“准确”,会导致团队中的每个工程师产生不同的理解。

第一步是分解:将针对特定功能的“好”定义分解为不同的、可衡量的维度。摘要生成器的规范可以将事实一致性(无幻觉主张)、覆盖率(包含关键点)、简洁性(源文档低于 2,000 字时,摘要低于 150 字)和语气(中性、专业)分开。每个维度都需要自己的标准和测量方法。

评估阈值合约 (Eval Threshold Contracts)

一旦有了可衡量的维度,你就可以编写评估阈值合约 —— 这是验收标准的 AI 模拟物。其结构是:这个指标,通过这种方式测量,在这个测试集上,应该以这种置信度达到这个阈值

一个具体的例子:“事实一致性得分,通过使用 LLM 评委将提取的主张与源文档进行交叉引用来衡量,在包含 200 个示例的黄金数据集上应超过 0.85,且 95% 置信区间的下限应高于 0.82。”

该合约指定了你要测量的内容(事实一致性)、方式(基于 LLM 的主张提取和验证)、数据(固定的黄金数据集)、通过阈值(0.85)以及可接受的不确定性(置信区间下限高于 0.82)。工程师可以实现这个测试,在 PR 上运行它,并获得清晰的信号。

阈值水平取决于上下文。法律文档审查工具需要事实一致性高于 0.95,且置信区间较窄。用于总结会议记录的内部工具可能接受 0.80。重要的是,阈值是明确的,在开发开始前就已写下,并在发布前由产品和工程团队达成一致,而不是在收到投诉后才进行争论。

统计校准在这里非常重要。在 20 个示例上设置 0.90 的阈值意义不大 —— 置信区间太宽,以至于你无法判断你的功能是 0.85 还是 0.95。实际指导建议:对于失败成本较高的功能,使用 300-500 个示例并使用自助法(bootstrap)计算置信区间。对于低风险的内部工具,可以使用 50-100 个示例,并明确承认你接受了更多的不确定性。样本大小的选择应作为权衡后的深思熟虑被记录下来,而不是含糊处理。

错误预算(Error budgets)与阈值配合得很好。与其将规范定义为“必须达到 0.90”,不如将其定义为“在最多 10% 的情况下允许失败”。这种框架自然地映射到运维思维中 —— 已经习惯于使用运行时间错误预算的团队会发现,将相同的概念应用于 AI 功能质量是非常直观的。

基于示例的行为规范

阈值合约能告诉你某个功能何时在整体上通过,但它们无法告诉你哪些行为是必须的或被禁止的。基于示例的规范通过将需求锚定到特定实例来填补这一空白。

一个客户支持机器人的行为规范可能如下:给定一条包含取消请求的消息,响应必须确认该请求,确认取消流程,且不得向上下文中标记为高流失风险的用户提供留存折扣。这是一个具体的、可测试的行为 —— 你可以运行它,根据标准评估输出,并得到一个明确的答案。

黄金数据集大规模地编码了这些示例。一个构建良好的黄金数据集涵盖了预期的输入分布(常见情况)、边缘情况(罕见但重要)、对抗性案例(旨在破坏功能的输入)以及边界条件(功能可能失效的决策边界附近的情况)。每个示例都应有明确的预期行为 —— 不是单一的正确输出,而是一组任何可接受的输出都必须满足的标准。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 8 分钟

A/B 测试陷阱:为什么标准实验设计在 AI 功能中会失效

标准的 A/B 测试在 LLM 驱动的功能中往往会失效 —— 非确定性的输出、异方差性以及无法体现语义质量的参与度指标,这些因素共同导致了虚假的信心。本文将探讨你应该采取的替代方案。

insider
llm
阅读需 10 分钟

AI 的测试金字塔倒置:为什么单元测试是 LLM 功能的错误投资

经典测试金字塔在 LLM 功能上失效的原因、提示词级单元测试为何带来虚假信心,以及与 AI 故障实际分布相匹配的测试分配策略。

insider
ai-engineering
阅读需 9 分钟

Spec-to-Eval:将产品需求转化为可证伪的 LLM 评估标准

大多数 AI 功能用自然语言描述、也用自然语言评估——这正是为什么团队在站会上达成共识,却在上线时产生分歧。本文介绍一套实用方法,在编写第一个 Prompt 之前,将英文需求转化为具体、可证伪的 LLM 评估标准。

llm
evaluation
阅读需 10 分钟

需求鸿沟:当“正确”是一个分布时,如何为 AI 功能编写规格说明

标准的用户故事和验收标准在面对概率性 AI 输出时会失效。本文介绍了一种两层行为规范格式——将硬性策略约束与可协商的质量阈值区分开来,并解释了为什么预先定义这些内容可以将迭代周期缩短 3–5 倍。

ai-engineering
product
阅读需 9 分钟

试点炼狱:廉价的 90% 正是你的 AI POC 无法转正的原因

一个可运行的 AI 演示只是那看起来像 100% 但其实很廉价的 90%。那些能确保其在生产环境中安全运行的评估、护栏、可观测性、成本上限和权属划分,才是没人预估过的昂贵的 10% —— 这里有一份清单,帮你提前预估这些成本。

insider
ai-engineering