清华大学研究人员已在 GitHub 开源 AKV,这是一套面向大语言模型智能体的缓存管理系统。智能体对话变长时,AKV 不会缩短或总结对话,而是让智能体丢弃选定的已存信息,并重新排列保留下来的内容。该项目基于用于运行语言模型的软件 SGLang,包含一个用于选择缓存操作的组件,以及一个负责执行这些操作的服务系统。
这一区别很重要,因为智能体的历史记录可能包含大量观察内容、工具调用和工具返回结果。将这些内容全部保留在模型的活动上下文中,会占用存储和计算资源。但编辑较早的消息可能导致系统重新计算后续上下文,这一步称为重新预填充(re-prefilling)。AKV 论文指出,这一过程成本可能很高;而删除过多历史记录又可能降低任务准确率。AKV 则保留完整对话历史,只调整模型关注其键值缓存中哪些部分。
AKV 如何工作?
AKV 为智能体提供两种缓存操作。“丢弃”会将选定信息排除在后续注意力计算之外;“重新排列”则会压缩保留信息的位置。项目示例保留最新的工具结果,在新结果到来后丢弃较早的结果,然后重新排列剩余缓存。原始消息仍保留在请求中,AKV 服务器负责执行缓存指令。论文称,这样可以避免对保留的上下文重新预填充。
系统还必须考虑缓存经过了哪些修改。论文指出,即使对话令牌序列相同,只要智能体采用了不同的操作,缓存状态也可能不同。这意味着,服务器不能仅凭对话前缀相同就安全地复用缓存信息。AKV 将智能体侧策略与基于 SGLang 的服务器结合起来,由后者管理缓存复用、删除和恢复。项目称,服务器采用兼容现有服务 API 的无状态接口,同时在内部管理缓存状态。
测试结果如何?
在作者的实验中,与达到阈值后触发的总结方式相比,针对工具响应采用滚动丢弃策略,使基准测试平均得分提高了 1.7 分,平均成本降低了 27.7%。论文还报告称,输出吞吐量最高提升至 1.2 倍,第 95 百分位请求延迟缩短至原来的 1/1.5。另一种用于改进缓存策略的方法,通过递归优化将成本降低了 7.1%,优于专家设计的策略。这些结果均由论文作者报告;所提供的材料未提及独立复现情况。
GitHub 上的说明介绍了如何使用 Rust、Cargo 和 Python 3.12 安装 AKV。快速入门示例通过 AKV 提供 GPT-OSS-120B 服务,并使用兼容 OpenAI 的聊天补全格式发送请求。项目还介绍了如何将其策略集成到现有智能体框架中:在请求发送至服务器前先进行处理。报告中的结果涵盖四项智能体基准测试,但所提供的材料未说明这些基准的名称,也没有提供足够细节来判断这些节省能否适用于其他模型或工作负载。
为什么重要
对于需要反复调用工具的智能体,AKV 提供了一种丢弃旧工具结果、又不改写对话历史的方法。作者称测试中成本有所降低,但具体团队能否获得类似节省,取决于其使用的模型和工作负载。