幻觉级联
我的 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://t.me/GyaanSetuAi
