技术深度解析
核心创新在于智能体记忆的结构化与访问方式。传统方法将整个对话历史——系统提示、工具定义、过往用户查询和助手回复——拼接成一个单一的庞大上下文,在每一轮都发送给语言模型。这导致令牌成本呈二次方增长:每一轮新增令牌,而整个历史被重新编码。对于一个平均每轮500令牌、共100轮的对话,总令牌消耗约为100 ×(平均上下文长度)≈ 500万令牌,按当前API费率计算成本高达10-25美元。
分层提示缓存打破了这一模式。该架构定义了三个层次:
- 静态层:系统指令、工具模式以及会话期间永不改变的知识库片段。这些内容被缓存一次并重复使用。
- 半静态层:缓慢演变的对话上下文,如用户偏好或项目状态,仅在明确修改时更新。
- 动态层:最新的用户查询、最新的工具输出以及即时的助手回复。仅这一层在每轮中重新计算。
在实现层面,这是通过键值(KV)缓存管理实现的。在基于Transformer的模型中,KV缓存存储了先前令牌的中间表示。通过将KV缓存划分为静态和动态段,模型可以在不同轮次间复用静态段而无需重新计算。动态段则增量追加。这并非理论概念——多个开源项目已展示其可行性。例如,GitHub仓库`lm-sys/FastChat`(超过35,000星)包含一个`cacheflow`模块,实现了多轮对话的前缀缓存。另一个值得注意的仓库是`vllm-project/vllm`(超过30,000星),它支持自动前缀缓存(APC),可检测提示中的重复前缀并缓存其KV状态。vLLM团队最近的基准测试显示,APC可将长对话的首令牌时间(TTFT)降低高达60%,并将总延迟减少40%。
性能数据:
| 指标 | 无缓存 | 分层缓存 | 改进幅度 |
|---|---|---|---|
| 每100轮对话的令牌成本 | ~500万令牌 | ~50万令牌 | 降低90% |
| 首令牌时间(TTFT) | 2.5秒 | 0.8秒 | 加快68% |
| 端到端延迟(100轮) | 120秒 | 35秒 | 加快71% |
| 推理质量(MMLU分数) | 82.3 | 83.1 | +0.8分 |
数据要点:该表表明,缓存并未以质量换取速度——它同时改进了两者。MMLU分数的轻微提升归因于上下文碎片化减少,因为模型不再需要处理臃肿、嘈杂的历史记录。
工程挑战在于缓存失效。当工具输出改变了半静态层(例如,更新用户的购物车)时,缓存必须被选择性失效。高级实现使用依赖图:每个缓存段都标记有版本哈希,仅重新计算依赖关系发生变化的段。这类似于构建系统如Bazel或Nix处理增量编译的方式。
关键参与者与案例研究
多家公司和研究机构正在生产环境中积极部署分层缓存:
- Anthropic:其Claude API在2025年初引入了提示缓存,允许开发者将提示的静态部分标记为可缓存。早期采用者报告称,对于长时间运行的智能体工作流,成本降低了70-85%。Anthropic的方法使用`cache_control`参数,让开发者指定哪些提示块是静态的。
- OpenAI:GPT-4o和GPT-4o-mini现在在其Assistants API中支持一项名为“持久上下文”的类似功能。OpenAI的实现跨线程缓存系统消息和工具定义,将多轮智能体的成本降低高达80%。
- LangChain:该开源框架添加了一个`CacheBackedLLM`包装器,可与Redis或本地存储集成,基于输入哈希缓存LLM响应。虽然不如KV缓存那样精细,但它为开发者提供了一个实用的切入点。
- Google DeepMind:其Gemini 1.5 Pro模型引入了“上下文缓存”,可存储多达100万令牌的静态上下文,增量更新仅需计算差值。这对于需要引用大型代码库或文档语料库的智能体尤为强大。
对比表:
| 提供商 | 缓存机制 | 最大缓存大小 | 报告的成本降低 | 延迟改进 |
|---|---|---|---|---|
| Anthropic Claude | 提示级KV缓存 | 200K令牌 | 70-85% | 50-60% |
| OpenAI GPT-4o | 线程级持久上下文 | 128K令牌 | 75-80% | 40-50% |
| Google Gemini 1.5 Pro | 带增量更新的上下文缓存 | 1M令牌 | 80-90% | 60-70% |
| vLLM(开源) | 自动前缀缓存 | 取决于模型 | 60-80% | 40-68% |
数据要点:Google的Gemini在缓存大小和成本降低方面领先。