上下文缓存 (Context Caching)
上下文缓存是一项旨在降低成本和延迟的功能,特别适用于具有大量重复上下文(如长文档、系统指令、代码库)的场景。
为什么使用上下文缓存?
- 降低成本: 缓存的 token 价格通常低于输入的 token 价格。如果您多次重复使用相同的长上下文,缓存可以显著节省费用。
- 提高速度: 预处理的上下文无需每次请求都重新计算,从而减少首个 token 的生成延迟(TTFT)。
适用场景
- 文档问答: 针对一本长篇手册或法律文档进行多轮问答。
- 代码助手: 加载整个代码库作为上下文,以便进行代码补全或重构。
- 角色扮演: 包含大量世界观设定或角色描述的对话系统。
如何使用
上下文缓存通常涉及创建一个 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),具体阈值请参考官方最新文档。
