提示词缓存
利用提示词缓存(Prompt Caching)减少重复内容的处理成本,并通过请求 ID 保持会话路由一致性。
什么是提示词缓存
许多模型厂商(如 Anthropic Claude、OpenAI)原生支持提示词缓存。当相同的上下文内容被反复发送时,厂商会从缓存中复用计算结果,从而降低延迟并减少 Token 费用。
缓存使用限制
缓存无法跨账号共享——这是厂商侧的限制,与平台无关。作为 Tokens Router,同一账号的前后两次请求不保证一定路由到同一个后端渠道;如果两次请求被分配到不同渠道,已建立的缓存将无法复用,可能导致缓存命中率降低、成本上升。
保持路由一致性
为解决上述问题,您可以在请求中携带上一次请求的 ID,系统会尽量将新请求路由到同一个渠道,从而复用已有缓存。支持以下两种方式:
| Header | 值来源 | 有效期 |
|---|---|---|
X-Request-Id | 上一次响应的 X-Calgine-Request-Id Header | 5 分钟 |
X-Response-Id | 上一次响应 JSON 中的对话 ID(如 Claude 的 message.id) | 5 分钟 |
示例
python
import anthropic
client = anthropic.Anthropic(
base_url="https://api.calgine.com.cn/anthropic",
api_key="API_KEY",
)
# 第一次请求
response = client.messages.create(
model="claude-opus-4-5-20251101",
max_tokens=1024,
messages=[{"role": "user", "content": "你好!"}],
)
# 获取响应 ID,用于后续请求保持路由一致
response_id = response.id
# 第二次请求:携带上一次响应 ID
response2 = client.messages.create(
model="claude-opus-4-5-20251101",
max_tokens=1024,
messages=[
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": response.content[0].text},
{"role": "user", "content": "继续我们的对话……"},
],
extra_headers={"X-Response-Id": response_id},
)bash
# 第一次请求后,从响应头中获取 X-Calgine-Request-Id
# 第二次请求时携带该 ID
curl https://api.calgine.com.cn/anthropic/v1/messages \
-H "x-api-key: API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "X-Request-Id: 上一次响应的 X-Calgine-Request-Id" \
-H "Content-Type: application/json" \
-d '{"model": "claude-opus-4-5-20251101", "max_tokens": 1024, "messages": []}'子任务扩展
部分模型(如视频生成、图像编辑等)支持基于已有任务进行继续扩展操作,例如在已生成的视频末尾追加内容,或对已生成的图像进行二次编辑。这类操作通常需要在新请求中提供原始任务的 task_id,具体参数请参考对应模型的使用文档。