Skip to content

上下文缓存 (Context Caching)

上下文缓存是一项旨在降低成本和延迟的功能,特别适用于具有大量重复上下文(如长文档、系统指令、代码库)的场景。

为什么使用上下文缓存?

  • 降低成本: 缓存的 token 价格通常低于输入的 token 价格。如果您多次重复使用相同的长上下文,缓存可以显著节省费用。
  • 提高速度: 预处理的上下文无需每次请求都重新计算,从而减少首个 token 的生成延迟(TTFT)。

适用场景

  1. 文档问答: 针对一本长篇手册或法律文档进行多轮问答。
  2. 代码助手: 加载整个代码库作为上下文,以便进行代码补全或重构。
  3. 角色扮演: 包含大量世界观设定或角色描述的对话系统。

如何使用

上下文缓存通常涉及创建一个 cachedContent 对象,该对象包含您希望缓存的内容(文本、文件等)以及生存时间(TTL)。

代码示例 (Python 伪代码)

python
from google import genai
import datetime

client = genai.Client()

# 1. 创建缓存内容
# 假设我们有一个名为 'large_document.txt' 的大文件
with open('large_document.txt', 'r') as f:
    doc_content = f.read()

cached_content = client.caches.create(
    model="gemini-1.5-pro-001",
    contents=[doc_content],
    ttl=datetime.timedelta(minutes=60) # 缓存存活 60 分钟
)

# 2. 使用缓存内容进行生成
response = client.models.generate_content(
    model="gemini-1.5-pro-001",
    contents="根据这份文档,总结主要观点。",
    config={'cached_content': cached_content.name}
)

print(response.text)

注意: 缓存功能通常适用于较大的上下文(例如超过 32k token),具体阈值请参考官方最新文档。

Gemini 中文版博客