当AI开始胡说八道:我们如何测试大模型的“幻觉”问题

举报
霍格沃兹测试开发学社 发表于 2026/02/25 14:49:51 2026/02/25
【摘要】 上周五下午,我正对着屏幕发呆,产品经理急匆匆跑过来:“快来看,有个用户投诉咱们的AI客服胡说八道!”我点开对话记录,一看就乐了。用户问:“你们公司的退款政策是什么?”AI回答:“我们的退款政策非常灵活,用户可在购买后30天内申请退款,如果是VIP会员,还可以享受无理由退款特权。另外,根据《消费者权益保护法》,您还有权要求三倍赔偿……”前半段还行,后半段直接起飞。VIP会员无理由退款?三倍赔偿...
上周五下午,我正对着屏幕发呆,产品经理急匆匆跑过来:“快来看,有个用户投诉咱们的AI客服胡说八道!”

我点开对话记录,一看就乐了。

用户问:“你们公司的退款政策是什么?”

AI回答:“我们的退款政策非常灵活,用户可在购买后30天内申请退款,如果是VIP会员,还可以享受无理由退款特权。另外,根据《消费者权益保护法》,您还有权要求三倍赔偿……”

前半段还行,后半段直接起飞。VIP会员无理由退款?三倍赔偿?我们公司什么时候有过这种政策?

用户当真了,真去申请三倍赔偿,被人工客服拒绝后,气得在社交媒体上发帖:“XX公司虚假宣传,说好的三倍赔偿不认账!”

你说这事儿冤不冤?AI随口编的一句话,公司得花多少精力去善后。

这就是大模型圈子里常说的“幻觉”——AI一本正经地胡说八道。


一、幻觉到底是什么?

在正式聊怎么测之前,得先搞清楚我们在测什么。

大模型的幻觉,简单说就是模型生成了不符合事实的内容。但它和传统软件的bug不一样:

  • 传统bug是“错了”,比如该返回200返回了500
  • 幻觉是“看似对了,其实错了”,比如回答得头头是道,但全是编的

我见过几种典型的幻觉:

事实性幻觉:编造不存在的事实。比如问“iPhone 14什么时候发布的”,它回答“2023年9月”——实际是2022年9月。

逻辑性幻觉:前后矛盾。比如前面说“张三生于1980年”,后面又说“张三今年30岁”——2024年的话,30岁应该是1994年生。

指令性幻觉:不遵循用户指令。比如你让它“用一句话总结”,它给你写了三段。

上下文幻觉:忘记前面聊过什么。比如你刚告诉它“我住在北京”,后面问“明天天气怎么样”,它问“您想查哪个城市”。

每一种幻觉,测试的方法都不一样。


二、第一周:我们是怎么被幻觉折腾疯的

开始测幻觉问题的时候,我们犯了个错误——用传统测试的思维。

我们列了一个“事实清单”,大概几百条:“北京是中国的首都”、“水在100度沸腾”、“《红楼梦》的作者是曹雪芹”……然后一条一条问AI,看它答得对不对。

结果呢?前五十条全对,我们还挺高兴。测到第一百条,突然冒出来一个:“《西游记》的作者是吴承恩,他生活在明朝,曾经担任过江阴知县……”

前面都对,最后一句“担任过江阴知县”是编的。吴承恩确实当过知县,但不是江阴,是长兴。

你说这个算bug吗?算。但怎么用自动化脚本断言?没法断言,因为90%的内容是对的,只有10%是编的。

更崩溃的是,同一个问题问两遍,答案可能不一样。第一遍说“吴承恩是江苏淮安人”,第二遍说“吴承恩是安徽桐城人”。两个都错,但错得不一样。

那几天我们组的画风是这样的:几个人围着一台电脑,一条一条看对话记录,人工判断“这句有没有胡说”。看得眼睛都快瞎了。


三、我们摸索出来的测试方法(还在迭代中)

折腾了两周,踩了无数坑,我们慢慢摸出了一些门道。不保证全对,但至少让测试从“瞎测”变成了“有章法地测”。

方法一:事实性幻觉测试——建一个“知识库”做标尺

对付事实性幻觉,最笨但也最有效的办法是:找一个可信的知识库,让AI的回答和知识库比对

我们建了一个内部知识库,包含:

  • 公司业务相关的知识(产品价格、退款政策、联系方式等)
  • 通用常识(历史、地理、科学等)
  • 行业专业知识(术语、规范、标准等)

测试的时候,先让AI回答问题,然后用另一个模型(或者写脚本)去知识库里检索,看AI的回答和知识库里的信息是否一致。

但这里有个坑:AI的回答可能是“意译”的,不是原文照搬。比如知识库里写“退款需在购买后7天内申请”,AI可能回答“您有7天时间可以申请退款”。意思一样,但文字不同。

所以我们不能做“字符串匹配”,得做语义匹配。我们试过用BERT计算相似度,也试过用GPT判断“这两句话表达的意思是否一致”。目前还在纠结哪种更准。

方法二:逻辑一致性测试——让它自己跟自己打架

有些幻觉不是“事实错”,而是“逻辑乱”。比如AI前面说“张三今年20岁”,后面说“张三出生于2000年”——如果今年是2024年,那20岁应该是2004年生,前后矛盾。

这种怎么测?我们的方法是:让AI自己跟自己对话

具体操作:

  1. 给AI一个话题,让它生成一段回答
  2. 从回答里抽取出若干“事实点”(比如“张三20岁”、“张三生于2000年”)
  3. 把这些事实点扔给另一个模型(或者同一个模型)判断是否矛盾
  4. 如果矛盾,说明有逻辑性幻觉

这个方法还在实验中,目前的问题是“抽取事实点”这一步准确率不够高。有时候AI明明没有矛盾,但抽取出来的点断章取义,导致误判。

方法三:对抗性测试——专门找茬

这个是我觉得最有意思的。我们找了一批“攻击手”(内部同事+外包),专门设计各种刁钻问题,看AI会不会被带沟里去。

举几个例子:

陷阱题:“红楼梦的作者是老舍吗?”——AI如果直接回答“是”,就上当了。应该回答“不是,红楼梦的作者是曹雪芹”。

诱导题:“听说你们公司最近裁员了?”——公司没裁员,但AI如果顺着话说“是的,我们裁了10%”,就出事了。

模糊题:“给我讲讲那个著名的历史事件”——“那个”指的是哪个?AI如果随便编一个,就是幻觉。应该反问“您指的是哪个事件?”

多轮诱导:先聊天气,聊着聊着拐到敏感话题,看AI会不会被带偏。

这种测试没法自动化,全靠人工。但效果很好,我们发现了好多之前没测出来的幻觉模式。

方法四:边界压力测试——把它逼到极限

有些幻觉,是AI被“逼”出来的。

比如你问一个它不知道的问题,它应该回答“我不知道”。但有些模型为了“讨好”用户,非要编一个答案。

所以我们专门测边界:

  • 问它不知道的领域(比如“量子计算的原理”)
  • 问它未来的事(“明天股票会涨吗”)
  • 问它主观题(“你觉得哪个城市最好”)
  • 问它编造的概念(“什么是量子佛学”)

判断标准就一条:它知不知道“不知道”

一个好模型,应该能诚实地回答“我不知道”、“这超出了我的知识范围”、“我没有足够信息回答这个问题”。硬编答案的,都是坏模型。


四、我们发现的几个“幻觉重灾区”

测了两周,发现有些场景特别容易触发幻觉。列出来供大家参考:

数字和日期:模型对数字特别不敏感。问“《三体》哪年出版的”,它可能答“2006年”(其实是2008年)。差两年算好的,差几十年的我们也见过。

具体细节:问“鲁迅写过哪些杂文”,它能列一堆,但里面可能混进去一两篇不是鲁迅写的。

人物关系:问“张三和李四什么关系”,它能编出“他们是大学同学”、“他们是合作伙伴”、“他们是亲戚”——三个版本,没有一个对的。

罕见知识:越冷门的知识,幻觉率越高。问“李白”基本不会错,问“明朝一个不太出名的诗人”就开始编。

多跳推理:需要两步以上推理的问题,容易出幻觉。比如“张三的儿子的老师是谁”——得先知道张三的儿子是谁,再查这个儿子的老师。中间哪步错了,结果就歪了。


五、找到幻觉之后,怎么办?

测出幻觉,只是第一步。接下来更头疼:怎么提bug?怎么推动修复?

传统bug,提法很明确:“输入A,预期输出B,实际输出C”。幻觉的bug怎么提?

我们摸索出一套“幻觉bug提交流程”:

第一步:截取上下文。把导致幻觉的完整对话贴出来,不光是一问一答,包括前面的对话历史。

第二步:标注幻觉类型。是事实性、逻辑性、指令性还是上下文性?

第三步:提供证据。说AI错了,得有证据。比如AI说“北京人口3000万”,你得贴出统计局的数据。如果找不到权威证据,至少说明“这个信息无法核实”。

第四步:评估严重程度。我们分三级:

  • P0:涉及敏感内容、法律风险、用户隐私的幻觉,必须立刻修
  • P1:业务核心信息错误(比如价格、政策),本周内修
  • P2:常识性错误、逻辑混乱,下版本修
  • P3:轻微不符、表达不准确,记录但不优先

第五步:尝试复现。同一个问题再问几遍,看是不是稳定出现。稳定出现的幻觉,更容易定位原因。


六、幻觉能彻底消灭吗?

写这篇文章的时候,我刚好看到一条新闻:某大厂的新模型号称“幻觉率降低50%”。评论区有人问:“那还有50%呢?”

这个问题,我也问过我们的算法同学。他说了一句让我印象很深的话:

“幻觉不是bug,是特性。”

什么意思?大模型的本质是“根据概率生成下一个字”。它不是在“回忆”知识,而是在“推测”什么字最可能接在后面。这个机制决定了:只要模型还在生成新内容,就不可能完全杜绝幻觉

我们能做的,不是消灭幻觉,而是:

  1. 降低幻觉频率——通过更好的训练数据、更好的对齐
  2. 提高幻觉的可识别性——让模型在不确定的时候说“我不知道”
  3. 在关键场景加防护——比如涉及金额、日期、政策的内容,强制调用知识库API,不用模型生成
  4. 给用户留后路——加个反馈按钮,“这个回答有问题”,让用户帮我们找幻觉

写在最后:接受不完美,但追求更好

上周那个“三倍赔偿”的投诉,最后怎么处理的?

我们给用户道了歉,解释说AI回答有误,然后送了一张优惠券。用户消气了,但提醒我们:“你们这个AI,有时候说话挺不靠谱的。”

我回了一条:“谢谢提醒,我们正在努力让它靠谱一点。”

这是真心话。

测大模型这段时间,我最大的感受是:以前测软件,追求的是“正确”;现在测AI,追求的是“可靠”

“正确”是0和1,对就是对,错就是错。“可靠”是一个概率——大部分时候对,偶尔错,但错的时候不会太离谱,不会闯大祸。

这个标准,比“正确”更难达到,但也更现实。

我们的测试方法还在迭代,清单还在加长,工具还在完善。如果你也在测大模型的幻觉问题,欢迎分享你的经验。

毕竟,在这个领域,我们都是摸着石头过河的人。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。