如何测试 AI?

2025-03-27   出处: qahiccupps.blogspot.com  作/译者:Camille/小窝

最近,有几位同仁问我如何测试 AI。很高兴分享我的经验,但我倾向于从更广义的视角来解读这个问题,也许可以这样问:在测试包含人工智能组件的系统时,我会考虑哪些方面。

第一次回答这个问题时,我是自由发挥的,但当问题再次出现时,我决定写下一些要点,帮助我记住关键内容。这篇文章就是这个列表的最新版本。

重要声明:我不是专家;以下内容是我在对话中提醒自己注意的事项,因此非常简洁;它也比较杂乱;绝对不是一个指南或最佳实践集合;每一点都应根据具体情况应用;这些分类非常粗略;当然,这并不完整。

另外需要注意的是,我合作的团队在各自领域、技术和医学安全方面等都非常专业,下面列出的一些内容通常是他们的经验。

测试 AI

  • 测试 AI 与测试其他任何东西是一样的:寻找相关的不一致性。
  • 你可以运用你在常规测试工作中使用的所有技能。
  • CODS - 控制、观察、分解、简化
  • 你永远无法测试所有内容,尤其是AI,更加如此。
  • 需建立对比机制:输入与行为输出的(部分)预期基准。
  • 系统行为的实证数据至关重要。
  • 你(感知到的)输入和输出空间的覆盖范围是核心指标。
  • 切勿被"AI"标签误导系统具备"理解"能力。
  • 在这个使用场景和上下文中,这个系统的风险是什么?
  • 有哪些极其糟糕的输出?
  • 可能出现的坏结果是什么?有多严重?对谁?何时发生?
  • 是否有效解决问题?是否存在替代解决方案?

信息空间

  • 输入和输出空间在功能上是无限的。
  • 受底层模型限制,数据存在不确定性。
  • 你无法确定“推理”将产生什么结果。

预期基准构建

  • 如何定义优质输出的特征?
  • 如何评估输出与这些特征的匹配度?
  • 需关注隐含的交叉影响:社会、人际、交互等维度。
  • 问题通常具备多维度特性。
  • 建议采用多个度量指标。
  • 如何平衡多个度量标准来判断系统整体的行为?

数据

  • 仔细考虑输入空间的覆盖情况。
  • 仔细考虑输出空间的覆盖情况。
  • 考虑超大数据集,并为可接受的正确率设定一些指标。
  • 是否有特定的情况必须得出特定的结果?
  • 是否有特定的结果是我们绝对不希望看到的?
  • 尝试语义上相同但语法不同、同义词、空内容、长度变化、改变顺序、隐藏相关内容等数据。
  • 你的测试数据来自哪里?

  • 你是否有现有的系统,包含用户数据和期望的输出?

  • 你是虚构数据的吗?基于什么依据?使用什么工具?你如何判断这些数据与真实用户数据的相似度?
  • 无意义数据:哪些数据永远不应该得到响应?(警惕只关注理想情况的误区)
  • 允许使用哪些语言?LLM 通常会回应任何你输入的内容。

各种方法

  • 在大多数项目中,你会需要规模化。
  • 在大规模测试中,你需要自动化来运行你的系统。
  • 自动化检测变更。
  • 自动化探索。
  • 在大规模测试中,你还需要对结果进行统计评估。
  • 即使在大规模下,你可能仍然需要一个人工环节。

  • 你能从测试和生产环境中采样进行人工审查吗?多少数据?多频繁?哪些数据?

  • 属性驱动测试是一种值得考虑的模型。

  • 变形测试是一种有价值的方法。
  • 考虑输入的组合。
  • 对抗性测试(使用其他 AI)。
  • 领域专家可以识别你可能错过的细节。
  • 如何评估两个版本系统之间的差异?
  • 评估某个版本系统中变异的程度。
  • 是否存在偏见?针对谁?依据谁?
  • 为不同类型的实验设计定制工具。
  • 为不同类型的实验设计定制度量标准。
  • 你能将系统拆分成多个步骤并逐个检查吗?
  • 如果系统是基于对话的,你是评估每次对话、最终结果,还是两者?

开发

  • 如何测试变更的影响?(例如,向提示中添加“不要偏见”)
  • 这次测试的目标是什么?
  • 什么时候运行你的测试?谁来运行你的测试?
  • 测试的成本是多少?不测试的潜在成本是什么?

模型/提供商选择

  • 这是正确的模型/提供商吗?(你在选择时有什么限制?为什么?)
  • 换到另一个模型/提供商会可行性有多少?
  • 该提供商的服务级别协议(SLA)是什么?
  • 你相信他们会遵守协议吗?
  • 如何测试这一点?

可重复性/可解释性

  • 普遍存在的非确定性(即使低熵设置)
  • 追踪 bug 可能很困难。
  • 通常不清楚如何得出某个特定结果。

道德

  • 模型训练使用了谁的数据?
  • 使用该提供商的系统对环境的影响是什么?(电力消耗等)
  • 系统是否接受并输出有争议的语言(敏感内容),例如种族主义、性别歧视等?

长期考量

  • 日志记录(但要小心记录敏感数据,如 PHI)。
  • 生产环境中的监控(哪些数据能告诉我们可能有问题?我们怎么知道?)
  • 本地开发。应该运行哪些测试?冒烟测试、回归测试、行为测试等?
  • 构建流水线。应该运行哪些测试?冒烟测试、回归测试、行为测试等?
  • 集成测试。是否有来自外部服务的一致性?
  • 何时重新测试?例如流水线变更、提示变更、模型变更等。
  • 对部分生产流量进行人工审查。哪些数据?为什么?何时?

可靠性

  • 提示词就像代码,但不是代码。
  • 白盒视角的局限性。
  • 非确定性管理。
  • 幻觉控制。
  • 外部模型变更应对(如果使用外部提供商)。
  • 性能指标(例如延迟、错误率)。
  • 容灾策略:限流、熔断机制等(如果与 LLM 的连接失败或过慢等)。

安全性

  • 越狱攻击防卫。
  • 训练数据泄露防护。
  • 用户信息保护机制。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
/75 人阅读/0 条评论 发表评论

登录 后发表评论
最新文章