响应缓存
当后续请求具有相同缓存 Key 时,响应缓存允许 AISIX 复用先前的非流式 Chat Completions 响应。这是网关侧响应缓存,不是模型服务提供方的提示词缓存,也不是 AISIX Cloud 的配置快照缓存。如需为 Anthropic 模型配置模型服务提供方侧缓存,请参阅 Anthropic 提示词缓存。若要为相似而非完全相同的提示词返回缓存响应,可在策略上叠加语义缓存。
本指南介绍如何通过 AISIX Cloud 或声明式资源文件配置模型作用域缓存策略、验证缓存未命中和命中、选择共享范围、绕过与清空缓存条目,并按需使用 Redis 在多个网关实例间共享缓存响应。
响应缓存的工作原理
AISIX 会缓存完全匹配的非流式 Chat Completions 响应。流式响应和其他代理 API 类型不会使用此响应缓存路径。
缓存策略可以应用于所有符合条件的请求、一个模型别名或一个调用方 API Key。每个策略把响应存储在网关的进程内 Memory 缓存中;如果启动时配置了 Redis,也可以存储在 Redis 中。
AISIX 缓存响应之前,网关必须能够使用所选后端,并且请求必须匹配一个已启用的缓存策略。
缓存 Key 匹配
AISIX 根据会影响上游响应的规范化 Chat Completions 请求创建缓存 Key。只有模型别名、消息角色和规范化内容、采样设置、响应长度以及额外的兼容 OpenAI 请求选项都相同时,两个请求才会共享缓存条目。
JSON 对象 Key 的顺序不会影响缓存匹配,包括嵌套对象中的 Key。数组顺序会影响匹配,因此工具定义相同但顺序不同的两个请求会使用不同缓存条目。
如果存在 temperature 和 top_p,则以 0.001 的精度比较,而不是按浮点数精确相等比较。因此,在其他所有字段都匹配时,位于同一千分位区间内的两个显式值会使用同一个缓存 Key 。省略字段与显式设置该字段仍视为不同。
对于多目标模型,缓存 Key 使用调用方请求的别名,而不是处理未命中请求的目标模型。请求 ID 和请求头不参与缓存 Key。
调用方 API Key 是否分隔缓存由策略的 scope 字段控制。默认的 scope: api_key 下条目仅对写入它的 API Key 可见;scope: env 则在环境内所有调用方之间共享。见选择共享范围。
选择缓存后端
每个缓存策略都要选择匹配响应的存储位置:
| 后端 | 行为 |
|---|---|
| Memory | 默认。使用处理未命中请求的网关实例上的进程内缓存。 |
| Redis | 使用网关启动时配置的共享 Redis 缓存。 |
单实例部署或可以接受节点本地缓存条目时使用 Memory。多个网关实例需要共享同一策略的缓存响应时使用 Redis。AISIX 支持单个 Redis 端点、Redis Cluster 和 Redis Sentinel。
配置 Memory 缓存策略
以下示例使用默认的进程内 Memory 后端创建模型作用域策略。请选择 AISIX Cloud 或开源配置路径,再使用通用验证步骤。如果已有其他已启用的缓存策略匹配示例请求,请先将其禁用或删除。
准备工作
开始前,请准备以下内容:
- 以下配置路径之一:
- AISIX Cloud,其中包含环境、已接入的网关和具有写权限范围的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请混合云访问权限,请联系 API7。
- 加载声明式
resources.yaml文件的开源 AISIX 网关。
- 可以发送非流式 Chat Completions 请求的模型别名和调用方 API Key。
curl。AISIX Cloud 路径还会使用jq。
导出两种路径都会使用的网关连接和资源参数:
# AISIX_PROXY 不含尾部斜杠或 /v1 等端点路径
# 本地快速入门使用 http://127.0.0.1:3000。
export AISIX_PROXY="YOUR_AISIX_GATEWAY_URL"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"
export AISIX_MODEL="gpt-4o-mini"
export CACHE_PROMPT="cache-check-$(date +%s)"