幻觉级联

我的 AI Agent 进入了一个死循环。

它会写出一个带有虚假列名的 SQL 查询。数据库会返回一个错误。错误信息中包含了真实的列列表。Agent 会读取纠错信息。然后,它又会写出完全相同的错误列名。

我称之为“幻觉级联”。

这不是模型的问题,而是工具设计的问题。

循环的工作原理如下:

  • Agent 根据其训练内容生成查询。
  • 查询失败。
  • 错误信息提供了真相。
  • Agent 看到了真相,但却转而依赖其内部训练。
  • Agent 重复错误。

Agent 面临两种信号。一种信号是错误信息,另一种信号是模型的训练。训练往往更强大。错误信息只出现一次,而训练则伴随着模型写下的每一个字。

我尝试通过提示工程(prompt engineering)来修复这个问题。我告诉模型要关注错误,但没有效果。

真正的问题在于,我的 Agent 只能通过失败来学习。它在行动之前没有办法检查表结构,只能靠猜。

如果你给人类一个 API,你会给他们文档。你不会让他们不断发送错误的请求,直到错误信息教会他们 Schema。

我通过构建一个主动式工具解决了这个问题。Agent 不再等待错误发生,而是先调用 describe_table 工具。

新的工作流:

  • Agent 想要查询一张表。
  • Agent 调用 describe_table 来查看真实的列。
  • Agent 获取正确的名称和类型。
  • Agent 第一次尝试就能写出正确的查询。

循环停止了。模型并没有变得更聪明,Agent 只是不再瞎猜了。

如果你的 Agent 使用数据库或 API,请问自己一个问题:它们在行动前能验证结构吗?还是只能通过失败来学习?

被动式的错误提示固然有用,但还不够。一个只能通过失败来学习的 Agent 永远离幻觉只有一步之遥。

构建那些允许 Agent 在犯错之前先提问的工具。

来源: https://dev.to/niclydon/the-confabulation-cascade-when-your-agent-learns-nothing-from-its-own-mistakes-m08

可选学习社区: https://t.me/GyaanSetuAi