幻觉

Hallucination

自信但错误的模型输出。分为两种类型,成因和解决方法各不相同:

类型问题表现成因解决方法
事实性编造或弄错现实世界中的事实——不存在的函数、错误的 API 签名、虚假引用参数知识存在缺口,常见于知识截止时间之后的内容加载正确的上下文知识
忠实性输出偏离已加载的上下文知识、用户指令或模型自己先前的推理注意力退化;在低效区间会进一步恶化清空上下文或进行上下文压缩

无论背后的事实是否真实,下一 Token 预测都会生成流畅的输出——模型内部没有信号告诉它自己不知道某件事,因此编造的方法和正确的方法会以同样笃定的语气出现。产生幻觉的代码天然显得合理:它呈现的是“如果这个 API 存在,它应该长成的样子”。正因如此,粗略审查很容易放过它,直到实际运行时才暴露问题。

你必须先判断面对的是哪一种幻觉,因为一种幻觉的解决方法会让另一种变得更糟。事实性问题意味着缺少知识:解决方法是增加上下文——文档、类型定义或相关文件。忠实性问题意味着知识已经存在,却在注意力竞争中落败:解决方法是减少上下文。如果把忠实性问题误判为事实性问题,你会粘贴更多文档,导致上下文膨胀、偏离更加严重。Agent 出错时,先检查正确信息是否已经在上下文中,再判断究竟是哪一种问题。

避免:把“幻觉”当作“错误”的简单同义词——不指出具体类型,这个术语就没有诊断价值。

用法:

“它在这个 schema 上幻觉出了一个 parseAsync 方法。”

“是事实性问题还是忠实性问题?”

“这个方法就在我粘贴的文档里——只是到第四十轮以后,它就不再看文档了。”

“那就是忠实性问题。压缩上下文并重新加载,没必要再加更多文档。”