生产环境智能体的幻觉检测

目录
分享本文
摘要
幻觉检测,就是自动标记出 AI 输出中虚假或缺乏依据的内容,让故障出现在监控面板上,而不是等到客户投诉才发现。对 AI 智能体来说,检测要覆盖三类幻觉:虚假陈述、凭空捏造的动作(比如虚构的 ID 或工具),以及声称做了实际没做的事。没有任何单一方法能同时抓住这三类问题。生产系统的做法是分层:每次运行都跑一遍成本低廉的规则检查,抽样运行评判模型,再把智能体的说法和追踪记录里它实际做的事做对比。
什么是幻觉检测?
幻觉是指一种输出:听起来言之凿凿,却与事实或模型获得的信息对不上——比如编造的引用、错误的数字、根本不存在的 API 方法(Langfuse)。幻觉检测就是在生产规模上,自动给这些缺乏依据的说法打分。
它和幻觉预防不是一回事。预防是想办法从一开始就不让模型产生幻觉,手段包括改进检索、提示词和护栏。检测则假定总会有幻觉漏网,在它们到达用户之前或之后不久将其抓住。它是 AI 智能体可观测性的一部分。
你的智能体真的做了它说的事吗?
智能体幻觉的三种类型
| 类型 | 表现 | 示例 | 危害 |
|---|---|---|---|
| 内容 | 说法缺乏来源或事实支撑 | 政策写明退款窗口是 30 天,它却说“我们的退款窗口是 60 天” | 向用户提供了错误信息 |
| 动作 | 捏造工具、参数或取值 | 调用 refund_order 时传入一个对话中从未出现过的订单 ID | 对错误的对象执行了真实操作 |
| 结果 | 事情没做,却说做了 | 声称“我已取消您的订阅”,但追踪记录里根本没有取消工具的调用 | 用户误以为问题已解决 |
大多数指南只讲第一种类型。在智能体里,第二类和第三类往往更危险,因为它们会碰到真实系统。好在它们也最容易发现:不需要评判模型,只要查看记录就能看到,某个订单 ID 在之前的任何步骤中都没出现过,或者没有任何工具调用与它声称执行的动作匹配。如何阅读这些调用记录,请参见 LLM tracing for agents。
检测方法
| 方法 | 工作原理 | 能抓到什么 | 成本 | 在哪里运行 |
|---|---|---|---|---|
| 基于规则的检查 | 用已知规则校验格式、数据结构(schema)、ID 和数值 | 无效输出、编造的 ID、不可能的数值 | 几乎为零 | 每次运行 |
| 声称与调用记录对比 | 把智能体声称执行的动作,与调用记录中的工具调用做对比 | 结果幻觉 | 几乎为零 | 每次运行 |
| 参数溯源 | 检查工具参数中的 ID 和数值是否在更早的调用记录中出现过 | 动作幻觉 | 低 | 每次运行带写操作的工具时 |
| 有据性评判(Groundedness judge) | 由评判模型逐条核对说法与检索到的上下文是否相符 | RAG 回答中的内容幻觉 | 一次模型调用 | 抽样,外加所有高风险回答 |
| 一致性采样 | 生成多个回答,看它们是否一致 | 不稳定、凭空编造的回答 | 多次模型调用 | 离线,或用小样本 |
| 语义熵 | 按含义对采样得到的回答分组,衡量它们的分散程度 | 虚构(confabulation),即使面对没见过的问题也能识别 | 多次模型调用 | 离线,或用于高风险查询 |
| 人工审核 | 由专家给被标记或抽样的输出打标签 | 几乎一切,但速度很慢 | 高 | 被标记的案例和校准 |
研究怎么说
语义熵由牛津大学的研究人员提出,2024 年发表在《Nature》上。思路是:把同一个问题问模型多次,按含义而不是措辞给回答分组,再衡量这些含义有多分散。分散程度高,说明模型在胡编,产出的答案是随机的、错的。在多种任务上,这种方法都有效,而且不需要针对具体任务的数据(Farquhar 等,《Nature》,via PMC)。由于每个问题要生成多次,它更适合离线测试和高风险查询,而不是每个线上请求都跑(Maxim)。
评判模型(judge model)是生产环境里的主力工具:它们不依赖参考答案,可以把输出与同一条追踪记录(trace)中记录的输入、上下文对照检查(Langfuse)。不过,它们能做到什么程度,取决于提示词和校准,可能过于宽松,也可能前后不一致。在信任评分之前,先拿一组人工标注样例检查每个评判模型。
分层效果最好。生产团队通常会把确定性检查、语义评分和不确定性信号组合起来,先跑成本低的检查,再把可疑结果交给更贵的评分器(Openlayer)。
生产环境的分层方案
按成本从低到高运行检测器,让便宜的检查先过滤流量,把可疑内容交给成本更高的检测器。
-
每次运行:规则、来源与声明核对。校验输出格式,检查工具参数中的每个 ID 和金额是否都在 trace 中更早出现过,并把最终回复里声称的每个动作与实际发生的工具调用对照。这些检查几乎不花成本,能抓住大多数动作和结果类幻觉。
-
固定抽样:评判模型评分。对固定比例的运行按“是否有检索上下文支撑”打分。按任务类型拆分,持续跟踪分数变化。
-
每个高风险回答:评判模型评分,始终执行。只要涉及金钱、健康、法律条款或账户变更,每次运行都要评分,而不只依赖抽样。
-
被标记的案例:人工复核。把低置信度和失败的案例交给熟悉业务领域的人。他们的标注也能让评判模型保持校准。
-
离线:更深入的方法。在测试集和最容易触发标记的问题上,使用一致性采样或语义熵,找出智能体最不可靠的提示词和主题。
每个标记都要关联到对应 trace,这样调查的人能看到是哪次检索、哪个工具结果或哪一步导致了错误声明。若想找把 tracing 与评判模型评分结合起来的平台,可以看我们整理的 12 款最佳 AI 智能体可观测性与评估工具。
把检测结果变成测试用例
每一个确认的幻觉都是现成的测试用例:包含输入、Agent 当时拿到的上下文,以及错误的输出。把它加入回归测试集,之后每次换模型、改提示词或调整检索,都把这个集合重跑一遍,同一个错误就不会悄悄回来。检测与评估正是在这里接上头;可观测性、评估和红队测试三者的关系可以参考相关文章了解。
在发布前抓住编造出来的动作
如何减少 Agent 的幻觉
检测告诉你幻觉发生的频率,而下面这些改动能让它发生得更少:
• 先修检索。 很多内容幻觉的根源是上下文缺失或无关。跟踪空检索和低相关检索,先把这些问题解决,再去调提示词。
• 允许 Agent 说“我不知道”。 明确告诉它:上下文里没有答案时,就升级处理或直接问用户,并在评估中给这种行为加分。
• 约束工具参数。 用 schema(模式)、枚举和查找表,让 Agent 从工具返回结果里取真实 ID,而不是凭记忆手打。
• 行动前先确认。 面对高影响操作,让 Agent 复述目标(“给订单 4471 退款 82 美元”),并在工具执行前对照调用链核对。
• 让声称与行动一致。 最终回复要基于工具结果生成,而不是基于模型的计划,这样它只能报告实际发生的事。
• 有意测试边界。 幻觉往往扎堆出现在模糊请求、数据缺失和用户施压的场景里。上线前专挑这些边界下手,同时记住:对 Agent 来说,最危险的失败是动作,而不是措辞。想知道如何在每次发布时跑这些测试,可以参考《Automated red teaming for AI agents》。
总结
在聊天机器人里,幻觉只是一句错话。在 Agent 里,它可能是一笔退错订单的退款,也可能是一个“已修好”的承诺,而实际上什么都没发生。每次运行都用低成本方式对照调用链检查,抓出动作和结果层面的幻觉;用校准过的评审模型抽样检查,抓出内容层面的幻觉;再把每一个确认的案例变成测试用例。
在用户发现问题之前,先找出智能体中的故障。BotGauge 对 AI 智能体进行红队测试,并记录每次失败背后的完整调用链。免费试用 Botgauge,或预约 30 分钟演示。
如何检测大语言模型(LLM)中的幻觉?
多种方法结合使用。对每个输出执行基于规则的检查;抽取一部分样本,用评审模型(judge model)将输出中的说法与源上下文比对打分;再使用一致性或不确定性方法(例如语义熵),在离线场景或高风险问题上进行检测。
什么是语义熵?
语义熵是 2024 年发表在 Nature 上的一种幻觉检测方法。它对同一个问题采样多个答案,按语义分组,再衡量各语义之间的分散程度。分散程度高,说明模型很可能在编造内容。
用 LLM 作为评审(LLM-as-a-judge)能检测幻觉吗?
可以,而且这是生产环境中最常用的方法,因为它不需要参考答案。其可靠性取决于评审模型的提示词和校准质量,因此要先用人工标注的样本验证一遍。
什么是动作幻觉?
动作幻觉是指 AI 智能体凭空捏造出某个东西,然后基于它采取行动,比如不存在的工具、编造的订单号,或没人给过的金额。只要检查每个参数是否在智能体的调用链中更早出现过,就能抓住大部分这类问题。
如何减少 AI 智能体中的幻觉?
改进检索质量;让智能体在不知道时敢于承认;用 schema 约束工具参数;执行高影响操作前先确认;基于工具返回结果构建回复;在发布前主动测试边界情况。