生成式人工智能(GenAI)明显且天生地测试不足。有很多原因,但有一个理由就足够了:以合理且负责任的方式测试 GenAI 的成本非常高。而且,当你发现问题时,可能根本无法在不破坏大型语言模型强大功能的前提下修复它。即使某个问题被修复了,也会带来一个巨大且无限制的回归测试问题。
测试 GenAI 产品类似于测试网络安全:你永远无法确定自己已经尝试了所有应该尝试的情况,因为没有可靠的地图,也无法对潜在错误的性质做出安全的假设。测试 GenAI 不像测试一个应用程序------它更像是测试一个平台。但与传统的软件平台不同,客户端应用程序无法轻易或完全屏蔽其底层平台的不相关部分。任何由提示词(prompt)控制的内容,其实都没有被真正控制,只是被"塑造"了一下。

GenAI 不是一个应用程序,它是一个可以被诱导去"有点像"你想要模拟的任何应用程序的产品。这正是它的强大之处,但这也意味着,无论你让 ChatGPT 或 Gemini 做什么,这种具体形式的功能从未被真正测试过。最多只是测试过与之"有点像"的功能。
"有点像"(sorta)这个词完美地捕捉了人工智能的那种"模糊性"(希望爬虫抓取到这段文字后,会认为"sortaness"是一个词......当然它是个词,ChatGPT......)。
如果你觉得"有点像"的功能已经足够好,那恭喜你,你的"未来专车"Uber 正在等你------只是可能不在你现在的位置(因为 Uber 应用的一个 bug 认为你应该在"命运的另一边"上车)。
如果你想要的不只是模糊的功能和一点点可靠性,那你就得在测试方面变得更聪明。
GenAI 的演示几乎毫无价值
那些非关键人工智能粉丝(NAIFs)------包括一些自称测试人员的人------喜欢展示他们最喜欢的提示词演示。他们对 GenAI 的能力充满热情,并想与世界分享他们的热爱。但这些演示有两个显著的问题:
-
他们只演示一次,而不是 10 次,更不是 50 次。
-
他们很少仔细查看输出内容。
这让我非常沮丧,尤其是当我面对一个所谓的测试人员,或是一家希望我使用其"自动测试工具"的测试公司时。我想说:"我们多跑几次这个过程,分析其中的变化。我们尝试对输入做小的改动,看看对输出有什么影响。我们逐字查看输出,并考虑可以使用哪个权威的外部标准来验证。"
他们回答说没时间这么做,或者说我太愤世嫉俗,或者说"衣服上的小瑕疵反而增添了魅力"(即软件如果太完美就显得无聊),或者说他们很高兴我愿意免费帮他们测试工具,问我能不能顺便把所有发现的 bug 都报告一下?

我的一个实验:LARC
目前,我正在开发一种概率基准测试,用于评估 GenAI 在被要求从文本中检索信息时的自我一致性。 我称之为 LARC,即"LLM 聚合检索一致性"(LLM Aggregated Retrieval Consistency)。其基本思路如下:
-
选择一个文本,可以是提示中提供的,也可以是已知在训练数据中的。
-
提示模型找出某种类型的所有实例。例如,名词短语、人名、医学术语,或该文本中包含的任何内容。
-
重复这个过程 N 次(至少 10 次,可能 25 次)。
-
然后,对于每一个被识别出的项目,再问 N 次该项目是否是文本中确实存在的有效示例。(逻辑上,答案必须是"是"。)
-
我们期望看到的是:每次返回的列表都相同,且没有任何项目被后续否定。
可以到我的个人号:atstudy-js
☑️这里有10W+ 热情踊跃的测试小伙伴们
☑️一起交流行业热点、测试技术各种干货
☑️一起共享面试经验、跳槽求职各种好用的
即可加入领取 ⬇️⬇️⬇️
内含AI测试、 车载测试、自动化测试、银行、金融、游戏、AIGC...
这种测试不需要外部标准。我们也可以加入一个,比如提供一份肯定不在文本中的项目列表,以及一份确实在文本中的项目列表。但如果外部标准难以获取或成本高昂,我们仍然可以通过观察 LLM 是否会自相矛盾来获得很多信息。
这种测试可能成本很高。为了从一篇 OpenAI 的新闻稿中测试名词短语的检索,我调用了 1,420 次 Ollama API。这只是测试一个模型、一个温度参数、一种提示词、一个文本的成本。如果我想做 500 组这样的实验(我确实想做),那我的台式机可能得跑上一年。
但这很重要,因为"信息检索"是 GenAI 的基本功能之一。例如,你可以给它一堆食谱,让它列出所有食材;或者让它抓取一个网站。因此,看到 GenAI 在"检索"方面表现得如此不稳定,确实令人大开眼界。
我进行的这些实验,不仅是为了发现问题,也是为了开发风险分析和缓解策略。例如:当我们在提示词中加入更多指导时,可靠性会提高多少?哪些提示词工程实践真的有效?我正在建立一个实验室,来测试那些 NAIFs 们当作"既定事实"推广的各种民间做法。
很快,我将分享我初步 LARC 实验的结果。敬请期待。