幻觉是模型信心十足却实际错误的输出。它分为两类,成因和解决办法各不相同:
无论底层事实是否真实,下一 Token 预测都会生成流畅内容。模型内部没有“我不知道”的信号,因此编造的方法会以和正确方法同样肯定的语气出现。幻觉代码在结构上往往十分可信:它看起来恰好像是“如果这个 API 存在,它应该有的样子”。正因如此,它很容易通过粗略审查,直到真正运行时才失败。
必须先判断面对的是哪一类幻觉,因为适用于一类的修复方法会让另一类变得更糟。事实性问题意味着缺少知识,解决办法是增加上下文——加入文档、类型定义或相关文件。忠实性问题则意味着正确知识已经存在,却在注意力竞争中落败,解决办法反而是删减上下文。如果把忠实性问题误判成事实性问题,就会继续粘贴更多文档,导致上下文膨胀、偏离更加严重。当智能体出错时,先检查正确内容是否已经位于上下文中,再判断究竟属于哪一种问题。
避免:把“幻觉”当作“错误”的简单同义词。如果不说明具体类型,这个术语就没有诊断价值。
用法:
“它在这个 schema 上编造了一个 parseAsync 方法。”
“是事实性问题,还是忠实性问题?”
“这个方法就在我粘贴的文档里——只是到了第 40 个轮次之后,它不再关注那部分内容了。”
“那就是忠实性问题。先压缩再重新加载,不要再添加更多文档。”