我找到了一种方法,无需借助其他AI,就能知道AI在代码上是否产生了幻觉——或者说谎。

Reddit r/AI_Agents 工具

摘要

Hedgemony通过将命题与实际运行时环境进行核对,来检测AI生成代码何时提出虚假主张,并对错误如虚构和矛盾进行分类。

标题使用了流行的词汇“幻觉”和“说谎”,但Hedgemony使它们精确化。它并不声称观察模型内部的隐藏思想,或判断模型是否意图欺骗任何人。它捕捉的是概率猜测在代码中变成可证伪的外部主张的确切时刻。在模型生成代码之前,其下一个词元只是一个概率。但当它写出 `import ghostlib`、`json.serialise(...)` 或 `math.sqrt(2, 3)` 时,它就提出了一个关于世界的命题:这个包存在,这个属性属于这个对象,或者这个调用是可能的。这些命题在代码应运行的环境中具有真值。这就是Hedgemony衡量的边界。它获取生成代码提出的主张,将其提交给独立权威,并记录结果。模型不检查自身。另一个模型不投票。置信度不是证据。解释器和包注册表决定什么存在,而可执行示例决定所述行为是否确实成立。这就是“幻觉”不再是模型行为的模糊描述,而成为一个可重现的技术事件的时刻:生成的代码断言了可检查的内容,而现实与之矛盾。Hedgemony精确命名每种事件形式。虚构是对世界虚假主张的总称。发明是不存在的名称,如 `import ghostlib`。错误归属是将真实名称分配给错误所有者,如 `json.serialise`。畸形是指目标存在但尝试的调用不可能,如向 `math.sqrt` 传递两个参数。矛盾是指实现与其自身陈述的行为不一致。因此,“说谎”是简写,而非对意图的声明。Hedgemony不决定虚假陈述出现的原因。它只决定可确定的部分:代码说这个东西存在或以这种方式行为,而所选环境证明并非如此。底层操作简单但强大。语言模型产生概率输出。Hedgemony将该输出的支持部分转化为确定性问题:这个包存在吗?这个模块路径能解析吗?这个名称能被导入吗?这个对象拥有这个属性吗?这个函数能接受这种调用形状吗?实现是否产生了它明确声称会产生的结果?对于每个支持的问题,Hedgemony要求外部证据。流利的解释无法改变答案。第二个模型无法否决它。重复相同的自信主张不会增加其真值。考虑一个生成 `console.table(...)` 的代理。这个表达式看起来合理,附带的解释可能听起来权威,另一个模型可能批准它。已安装的解释器无法被说服。要么 `table` 在该对象上存在于所选环境中,要么不存在。Hedgemony报告确切行数、虚假的所有权主张,并将其分类为错误归属。但现有名称并不保证正确逻辑。模型可以使用真实包、有效方法和合法参数,同时计算出错误结果。因此,Hedgemony在有限子进程中对文件陈述的 `>>>` 示例进行第二遍运行。当实现与示例不一致时,模型看似合理的逻辑就变成了可测量的矛盾。Hedgemony拒绝隐藏的一个边界。如果代码包含看似合理但错误的逻辑,且没有陈述正确行为应该是什么,就没有外部标准来判断它。Hedgemony称之为虚构化,并不假装检测它。相反,它报告 `NO_CONTRACT`,使缺失的证据可见。添加一个预期示例,原本不可判定的虚构化就变成了可判定的矛盾。这可能是自主代理最重要的属性:不确定性永远不会被默默转化为安全性。干净的结果意味着没有发现支持的虚构或测试的矛盾。这并不意味着整个程序被证明正确。在代理工作流中,模型仍然可以自由想象、生成和修复。但它不再是自身工作的最终权威。代理生成一个文件,Hedgemony识别确切的虚假或矛盾主张,代理修复这些行,确定性裁判再次运行。创造力保持概率性;接受变为基于证据。首次公开发布没有运行时依赖,支持Python 3.9及更高版本,生成机器可读的发现,并通过228次检查、干净的轮子和源分发安装,以及不可变的加密证明发布进行验证。因此,我对构建真实代理的人提出这个问题:如果你能识别AI幻觉在代码中变成可证伪主张的确切点,你会将那个关卡放在哪里?在每个生成文件之后、测试之前、拉取请求之前,还是在自主操作到达生产之前?而代理嵌入在看似工作代码中的最有说服力的虚假主张是什么?
查看原文

相似文章

如何防止你的AI产生幻觉?

Reddit r/ArtificialInteligence

用户在研究和分析中遇到AI幻觉,比如虚假引用和答案,并寻求提示以防止LLMs编造信息。

AI幻觉可能比人类更“人性”

Reddit r/artificial

文章指出,AI幻觉其实映射了人类的认知偏差——确认偏误、过度自信等,它们并非纯粹的技术缺陷,而是像人类一样在知识缺口处“脑补”的结果。