代理缓存:Valkey和Redis的多层LLM缓存
Agent-cache 是一种三层缓存解决方案,旨在通过减少 token 用量和执行时间来优化 LLM 操作。它使用 Valkey 或 Redis 缓存 LLM 响应、工具输出和会话状态。其架构包括精确匹配的 LLM 响应缓存、用于函数调用结果的工具输出缓存,以及用于代理检查点的会话状态缓存。每一层均采用不同的 TTL 策略:LLM 响应缓存时长为小时级,工具输出缓存时长较短,会话状态则与活跃用户会话同步。LLM 响应的缓存键包含提示词哈希和模型参数,而工具输出的缓存键使用工具名称和参数哈希。由于系统不跟踪依赖关系,因此需要手动失效缓存,支持使用 Redis 通配符模式进行针对性清除。当 Valkey/Redis 不可用时,agent-cache 默认采用优雅降级,跳过缓存层,同时允许为每一层配置快速失败或本地回退选项。系统集成了 OpenTelemetry 和 Prometheus 等可观测性工具,以监控缓存性能和健康状态。该库提供了针对 LangChain、LangGraph 和 Vercel AI SDK 的适配器,并处理各框架的序列化。该方案专为已部署 Valkey 或 Redis 的环境设计,支持独立、哨兵和集群部署,并通过哈希标签实现高效的键分布。主要风险包括工具输出过期、潜在的缓存键冲突以及内存压力,这些风险通过短 TTL、全面的缓存键和内存策略加以缓解。重启期间的会话状态丢失问题可通过 RDB 快照或 AOF 持久化解决。Agent-cache 适用于具有重复提示词或工具调用的代理,旨在控制 token 成本并利用现有的 Redis 基础设施。然而,它不适用于会修改外部状态的工具、因高度动态提示导致缓存命中率低的场景,或需要语义相似度匹配而非精确匹配的情况。该库有效弥合了框架特定缓存与通用 Redis 之间的差距,在代理循环和工具行为已充分理解时效果最佳。