一个智能体查到了一条用户偏好,在执行记录里写下它的编号,最后给出了不错的答案。这能说明记忆起了作用吗?

还不能。没有这条偏好,答案也许一样。智能体可能读到了,却没有理会;也可能确实受到了影响,但结果反而更差。

讨论个人 AI 时,我觉得有必要分清三个问题:记忆是否可用,它是否影响了行为,这种影响是否有用。本文提出一种检验思路。文中的例子均为假设情境,并非已经完成的基准评测结果。

先选一个能观察到的决定

假设有这样一个任务:从一天的记录中挑出一件事,写成一则个人近况。当天的材料包括一次例行进度会、一次成功的晚餐尝试,以及一场关于艰难职业选择的谈话。

用户此前纠正过系统:“这类近况里,我更想看日常生活,不想看例行工作。”

在看结果之前,要先说清楚我们期待这条偏好改变什么。它应该改变智能体关注的候选事件、最终选中的事件,还是只改变措辞?关于职业选择的谈话是个很好的边界案例:它发生在工作中,谈的却可能是很个人的事情。

如果要求只是“更有个人感”,几乎任何结果都能在事后得到一套解释。更具体的问题是:这条反馈能否减少例行工作汇报被选中的次数,同时又不把每件工作上的事硬写出一层人生意义?

不同层次的证据,能说明的事情不同

证据层次 要看什么 还不能说明什么
记忆可用 本次执行能够访问这条记忆 智能体实际读过它
记忆已被读到 实际输入或工具返回中包含了这条记忆 它影响了某个决定
行为发生变化 受控对照中,选择或表达发生变化 变化对用户有益
变化有用 合适的评估者更认可变化后的结果 效果能推广到其他条件

模型对自己决定的解释,可以帮助排查问题,但不能独立证明它为什么这么做。同样,在答案里找到记忆编号,只能说明它引用了这条记忆,不能说明拿掉这条记忆后结果就会不同。

W3C PROV 模型提供了描述来源关系的词汇。来源记录有助于查清信息从哪里来;要回答“没有它会怎样”,仍然需要做对照。

一次只改一个条件,再看后果

针对上面的假设任务,可以准备两组条件。两组使用相同的当日材料、任务、提示词、工具、模型配置和允许访问的时间范围。一组得到那条有明确适用范围的偏好,另一组得不到。推理预算保持一致,同时记录实际消耗。

在运行之前,先确定候选事件的标记,以及要观察的结果。保存实际输入、工具返回、选择和最终输出。两组都应重复运行,不能只凭一对看起来漂亮的结果下结论。

相同的当前材料 + 相同任务 + 相同执行条件
    A:不提供选定的记忆
    B:提供选定的记忆
比较:关注了什么、选了什么、是否忠于事实、对用户是否有用

这里描述的是实验对照,不是产品必须照搬的执行流程。产品中的智能体可以自行选择检索策略;实验只是暂时控制那些回答当前问题所必需的条件。

如果两组选择不同,还要检查差异是否来自我们想检验的那条偏好。B 组选了晚餐吗?它有没有把普通会议改写成感人的人生顿悟?又或者,只因为看见“工作”两个字,就漏掉了那场有意义的职业谈话?

再找一个记忆不该起作用的地方

现在把任务换成工作交接。针对个人近况的偏好,不应该让系统删掉必要的项目信息。

这一步检验的是适用范围。一个系统如果在所有任务里都照着同一条偏好做,看起来很懂用户,实际判断却可能很不准确。还应该加入一种情况:当天根本没有适合写进近况的生活片段。正确做法不是为了满足偏好编出一件来。

报告结果时,应分别列出事实错误、选材变化、用户评价和成本。不能把虚构事件带来的问题,平均进一个总体不错的文笔分数里。

结论说到证据能支持的地方

一组对照中出现差异,是一次观察。在受控条件下,重复运行出现方向一致的差异,才能支持“这项干预在这个场景下产生了影响”。用户评价更好,可以支持被评样本范围内的产品效果。这些证据中的任何一种,都不能单独证明记忆对不同用户、任务或模型普遍更有帮助。

即使是受控结果,也要小心解释:去掉记忆会改变上下文长度,还可能通过与内容含义无关的方式影响模型注意力。后续可以用长度相近、但与任务无关的材料替换它,继续做对照;前提是把这项设计事先说清楚,并如实报告。

我们不必要求每一条记忆都在每一次回答里留下明显痕迹。有时,正确的结果就是不变。真正要弄清楚的是:记忆什么时候起了作用,改变了什么,以及这个人是否因此得到了更好的帮助。