我的代理一直在记住不真实的事情——4次空跑之后,这是将错误记忆归零的门控
摘要
一位代理构建者描述了一种记忆层,通过要求逐字源引用并追踪事实何时成为真,来防止虚假事实,尽管存在提取失败,但在压力测试中实现了零错误记忆。
引发这个问题的漏洞:一个代理自信地使用了一个过时的账户余额($12.69),而该余额早在几天前就被更正为$30。没有任何幻觉——数字是真实的,只是不再正确。这是代理记忆中最可怕的失败类别,因为每个检索系统都会乐此不疲地提供它:几乎所有系统都认为“最近写入的”就是“最真实的”。因此,我围绕两条规则构建了我的代理记忆层:每个事实都追踪**它何时成为真**,与它最后被提及的时间分开。一个关于旧真相的新句子不能覆盖当前值。一个确定性的门控决定什么被存储。一个事实必须携带其源文档的逐字引用,否则被拒绝;任何无日期或存在争议的事实将被保留供人工审查,而不是被断言。LLM只负责提取——纯代码进行所有判断。下游的代理只能陈述通过门控的事实。今天,我对提取端进行了压力测试,使用了50个密集的自身操作日志块(故意使用小型本地模型,因此提取器是瓶颈)。它失败了四次,每次运行一种方式:首先模型为事实发明了自己的名称,然后它将我的关键定义复制回作为“值”,接着它复制了我给出的提示词,升级到更大模型后,它开始转述引用——正确的值,重新构建的措辞,而精确子串检查拒绝了这一点。今晚运行的当前修复方案:模型只返回值加上一个简短的位置短语,确定性的代码找到精确跨度并自己获取逐字引用。停止信任模型去复制粘贴;让代码处理逐字部分。让所有四次失败感觉像胜利的部分是:毒化数据全天保持为零。没有一条虚假事实进入任何一次运行的记忆。每种失败模式都以“拒绝”结束,从未“存储了错误的东西”。对于依靠记忆行动的代理——发送东西、预订东西、回答客户——我每次都会选择提取不足,而不是自信的谎言。今晚它回放约640块真实日志,整夜运行,并针对66个手工冻结的金标准事实自我评分。很乐意分享结果(包括如果失败)以及门控设计的更多细节,如果大家感兴趣的话。给代理构建者的问题:你们如何处理旧值重新浮现在新文档中的问题?基于新鲜度权重的检索会使情况**更糟**,而且我很少看到在存储/检索选择之外讨论这个问题。
相似文章
智能体记住一切听起来很有用,直到它记错了那些乱七八糟的东西
作者批评了让智能体记住一切的想法,并介绍了TrueMemory,这是一个将记忆转化为带有置信度和证据的特质主张的系统,旨在更好地校准智能体行为。
有没有其他人的智能代理会自信地“记住”已经变化的内容?
用户描述了一个问题:AI智能代理会自信地从记忆层中检索过时的事实,而不标记变化,并询问社区如何使旧的记忆失效或跟踪事实时效性。
我的智能体不停撒谎,于是我让它们展示工作过程
作者描述构建了一个‘门控’,记录工具调用并验证AI智能体回答中的声明是否对应实际日志条目,迫使智能体展示其工作过程,从而减少幻觉回答。
测试了小模型在对话中能记住一个事实多长时间。记忆失败模式对智能体来说是一个真正的问题,而且这并非我所预料的。
一位开发者测试了小型边缘模型(LFM2.5、Gemma 变体)在多个对话轮次中保持一个事实的能力,发现模型常常自信地否认知道仍在上下文中的信息,这给智能体架构带来了信任问题,并暗示了记忆与格式规范之间的权衡。
尝试让智能体记忆跨会话持久化所学的经验
本文反思了AI智能体记忆的复杂性,远超简单的存储问题,强调了诸如判断真实性、优先级变化、区分决策与噪音以及何时恰当地呈现上下文等挑战。