如何破解AI的长链记忆
如何破解AI的长链记忆
现状
AI的长链记忆,目前是各大模型公司,一个比较棘手的问题,也是一个非常热门的讨论点。
我在长时间,高强度使用了各个代码助手,模型以后,对于长链记忆,提一些不一样的思考和角度.
长链记忆的现象
我在过去的一段时间,在大范围,高强度的使用各种代码助手和模型,在使用过程中就发现如下问题
- 在某一个需求占用较多的上下文以后,原本AI的输出是中文,突然会在某一个对话返回后变成英文.
- 目前的AI助手都带有记忆功能,但是在多次交互以后,特别是一个复杂的功能,执行到一半,后续还有步骤没有执行完,但是当前执行的步骤已经出问题,如果这个时候用多轮对话解决当前问题,AI很容易就忘记原来的步骤.
- 在复杂的场景下,假设最开始已经提示AI
注意 前后端请求采用POST+JSON的方式,而AI在执行过程中,如果页面生成不是在一起,后面的页面就会出现Restful的调用方式.
上述只是我在使用代码助手过程中,发现的几个小问题,我认为,这些问题都属于AI的长链记忆问题.AI的长链记忆本质上是由于模型宽度引发的,也就是一个模型在发布的时候,后面带的xxb的这个参数导致的.
目前在AI圈里面讨论AI的长链记忆,一般都是基于模型,基于算法,也就是说,后续如果真的能解决AI的长链记忆,好像都是模型层面就解决了.这理论上是一个很完美的思路.
但是在AI能力,显卡存储,算法等都无法满足的时候,就应该需要思考,是不是这个问题不完全是模型的事情,是不是可以考虑把事情开放到应用端完成?
应用端的便利
从技术角度考量,目前应用端的存储已经非常成熟.无论是各种数据库,还是各种文件存储,无论是访问速度,还是存储结构,都有很多解决方案.也就是说,如果是由应用端来考虑长链记忆,工具是不缺的.
如果是说存储,话题就会偏移到知识库,这又是一个烂坑,这边先往那个方向走.
从另外一个角度看,虽然所有的AI都在承诺,不收集用户信息(我对这个话非常怀疑,或者说我认为我玩过的AI,基本都在搜集信息用于自己的训练),而每次AI请求都可以看做是一次新的谈话.这里的含义,不就是告诉我们,AI的请求是无状态的么?
如果一个请求是无状态的,那么是不是应该在请求之前把数据准备好?如果能在请求前把数据准备好,是不是就能解决长链记忆的问题呢?怎么又到知识库那边去了......坚决不说知识库
无论是各种助手也好,还是编码工具也好,最终还是希望在AI的帮助下,完成现实世界的任务.注意,这个任务 , 只要是任务,就有流程,就有做事情的方法,步骤等等.所以,目前为止,大量的AI在使用过程中,都让AI先起草计划,再分步骤,最后按照步骤执行.
那这个任务,是不是就类似n8n,dify那种,使用各种flow就能搞定么?我这边吹个牛逼,这种人类定制的流程,已经过了AI的时间窗口了.如果不是工作流,那应该用什么模型来表达这个任务呢?
目前为止的一些开源框架也好,工具也好,都在用工作流的概念来处理这个任务,而这种解决问题的方式,最大的问题在于,这个流程本身,这个流程是人类按照对事情的理解产生的,而现实的环境为什么会按照人类定义的工作流的方式来处理呢?AI能修改这个流程么?AI能回滚这个流程么?这个才是问题.
那些工具也好,框架也好,引以为傲的流程,恰恰是问题的根源.
我的解决方案
我的方案,就是在应用和AI的中间,增加一个中间件,这个中间件提供如下功能
- 在应用请求AI过程中,让AI创建一个任务
- 把应用的任务,让AI分解为多个步骤/里程碑,进行存储
- 按照生成的任务步骤,调用AI执行
- 每一步结束,让AI查看任务的目标/里程碑是否满足,如果不满足,是否要放弃当前分支任务,如果满足,则继续执行下一步
- 如果不满足,在总任务的初心下,是否还有其他方案,生成步骤/里程碑
整个中间的过程,将多轮对话转换成单轮对话,由于调用入口在中间件,那么中间件能控制每次提交给AI的信息,一步一调用.
上述方案,完全不依赖知识库,只依赖中间件本地的存储.更加好的情况是,在任务的逐步推进过程中,人类可以在适当的时候进行干预.
如何验证
设计一个马踏棋盘的小应用,在没有中间件支持的条件下,当前的AI能力,无法独自完成完成,基本所有的模型都会死在半路.
如果有中间件的帮助,只要能完成,就能说明这个方案是可行的.
