Agent开发过程中的会话管理

1、最简单的一种会话管理

对于比较简单的agent开发,如果只是一次响应,上下文要求不高,可以将用户输入的多类型文件进行拆解和转化,注入大模型上下文。一次请求,一次响应,一次分析结果。

2、复杂的会话管理基本思路

对于较复杂,需要进行上下文管理的时候,用户不断上传的资料。我这里的策略是先统一收集这些文件到某个项目文件夹下。在大模型真正思考,需要使用到相关资料的时候才会尝试去读取这些文件中的相关信息。就类似使用claude code这样的工具,针对某个项目文件夹下的文件,是按需、使用时候采取读取的。

这里的开发思路有:

①渐进式披露。用户不断上传、补充待分析的资料。这些资料可能需要二次处理,不能直接注入上下文,只在需要使用的时候才会进行读取。

②工具即能力边界。agent能做什么完全由工具集决定。每一轮对话,不是依靠prompt注入告诉模型相关信息,而是依靠模型自主的使用工具,查询已有的资料获得信息。模型自主的拼接上下文,而非用户写好上下文。

这意味可能需要维持一个文件索引表,这个索引表是需要随时注入大模型的,索引表需要不断更新和维护,让大模型知道当前能够使用的信息有哪一些。

3、对于回话过程中的每次API请求,claude code采用的是这样的策略

图示表达的含义是:完整的上下文一次api请求的操作。

最后的AutoCompact一般是通过阈值实现的,也就是已经使用的上下文达到了模型对话窗口上下文的多少,会强制触发自动压缩功能。而在这之前,针对已有的上下文也会进行很多处理,这是我们经常使用claude code这类agent平时感知不到的。

claude code中使用的还是一些本地操作实现轻量压缩,具体的每个策略都是很值得研究的。这也是一个节约成本的策略,AutoCompact是调用大模型进行上下文压缩,所以会有token消耗。

AutoCompact是一次摧毁细粒度上下文的压缩,只提取、总结核心内容,这么做之后会丢弃很多的信息。所以在AutoCompact之前,这些低成本的压缩是更值得做的,这些低成本的操作是的上下文没有达到阈值,那么也就不会进行AutoCompact操作。

4、针对本人开发项目的使用场景

我的项目的一个特点是:用户需要不断的上传相关文件(图片、txt、log等等文件),AI需要综合这些文件信息来进行分析。除此以外,由于.txt文件可能非常的长,用户可能需要不断的补充信息,比如指出某份.txt文件的某个段落是关键信息。所以在我的开发项目中,需要实现针对已有资料的编辑/注释功能,来辅助AI分析。这一块也涉及到上下文该如何处理的问题。

相关推荐
訾博ZiBo1 小时前
我从"删掉核心代码"的开源项目里,学到了一堂 713 行的 Agent 工程课
agent
jerrywus1 小时前
给 Pi 装上生图插件:从登录报错到画出一只 200×200 的猫
前端·agent·claude
灵动的艺术3 小时前
如一 Agent 架构解读(二):上下文工程——为模型构造它唯一的现实
人工智能·架构·agent
老周聊架构5 小时前
create_agent 实战:一个 Agent 是怎么被组装出来的
agent
灵动的艺术5 小时前
如一 Agent 架构解读(六):阈值、联动与坑位——压缩系统的肌理
人工智能·agent·如一
武子康5 小时前
把调用移进同一个类之后:一次 Spring 事务回滚反例
人工智能·后端·agent
百慕大三角5 小时前
为了在 Linux CI 里跑小程序 E2E,我把微信官方基础库搬进了浏览器:wxa-runner 开源实践
微信小程序·agent·测试
德林恩宝5 小时前
搜索 Agent 的两条路——训练一个,还是工程搭一个
人工智能·大模型·llm·agent
进击的雷神6 小时前
怕 AI Agent 乱删文件?Tank-OS 把它锁进不可变系统
人工智能·ai·api·agent