跳转到主要内容

概览

LemonData 提供智能缓存系统,可显著降低您的 API 成本和响应延迟。我们的缓存不仅限于简单的请求匹配 —— 它还能理解 Prompt 的语义含义

节省成本

缓存命中仅按正常成本的一小部分计费。

更快的响应

缓存的响应会立即返回,无需模型推理。

上下文感知

语义匹配即使在措辞不同的情况下也能找到相似的请求。

隐私控制

完全控制缓存和共享的内容。

工作原理

LemonData 使用双层缓存系统:

第一层:响应缓存(精确匹配)

对于确定性请求(temperature=0),我们会缓存精确的响应:
  • 匹配:相同的模型、消息和参数
  • 速度:瞬时(微秒级)
  • 最适用于:重复的相同查询

第二层:语义缓存(相似度匹配)

对于所有请求,我们还会使用两阶段匹配算法检查语义相似度:
  • 第一阶段(仅查询):用户查询相似度 ≥95%
  • 第二阶段(完整上下文):包含对话上下文的相似度 ≥85%
  • 最适用于:常见问题解答(FAQ)类查询、常见问题
User A: "What is the capital of France?"
User B: "Tell me the capital city of France"
→ Same cached response (high semantic similarity)

缓存控制

请求级控制

使用请求体中的 cache_control 参数控制每个请求的缓存行为:
# Skip cache lookup, always call the model
curl https://api.lemondata.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Hello"}],
    "cache_control": {"type": "no_cache"}
  }'
类型效果
no_cache跳过缓存查找,始终获取新鲜响应
no_store不要将此响应存储在缓存中
response_only仅使用精确匹配缓存(跳过语义匹配)
semantic_only仅使用语义缓存(跳过精确匹配)

响应头

每个响应都包含缓存状态:
X-Cache-Status: HIT    # 响应来自缓存
X-Cache-Status: MISS   # 来自模型的新鲜响应

检查缓存状态

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1"
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "What is 2+2?"}]
)

# Check cache status from response headers
# (Available in raw HTTP response)
print(f"Cache: {response._raw_response.headers.get('X-Cache-Status')}")

缓存计费

缓存命中的费用显著低于新鲜请求:
类型费用
缓存命中 (HIT)1 折(优惠 90%)
缓存未命中 (MISS)原价
具体的折扣显示在您的仪表板使用日志中。

隐私控制

组织 / 用户级别

在仪表板设置中配置缓存行为:
模式描述
共享 (Shared)启用缓存,响应可能会在用户之间共享(个人账户默认设置)
隔离 (Isolated)启用缓存,但响应对您的组织私有(组织默认设置)
禁用 (Disabled)完全不进行缓存
其他可用设置:
  • 相似度阈值:调整语义匹配灵敏度(默认:92%)
  • 自定义 TTL:覆盖缓存过期时间
  • 排除的模型:禁用特定模型的缓存

请求级别

使用 cache_control 参数覆盖单个请求:
# Disable caching for this request
curl https://api.lemondata.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "..."}],
    "cache_control": {"type": "no_store"}
  }'

缓存反馈

如果您收到错误的缓存响应,可以进行报告:
curl -X POST https://api.lemondata.cc/v1/cache/feedback \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "cache_entry_id": "abc123",
    "feedback_type": "wrong_answer",
    "description": "Response was outdated"
  }'
反馈类型:
  • wrong_answer - 事实错误
  • outdated - 信息陈旧
  • irrelevant - 与问题不符
  • other - 其他问题
当缓存条目收到足够的负面反馈时,它会自动失效。

最佳实践

确定性设置可最大化缓存命中率。
一致的格式可以提高语义匹配效果。
时事、实时数据应跳过缓存。
在仪表板中查看缓存统计信息和节省情况。

何时不应使用缓存

在以下情况下禁用缓存:
  • 实时信息:股票价格、天气、新闻
  • 个性化内容:针对特定用户的推荐
  • 创意任务:当需要多样性时
  • 敏感数据:机密信息
# For time-sensitive queries
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "What's the current stock price of AAPL?"}],
    extra_body={"cache_control": {"type": "no_cache"}}
)