使用 Gemini 进行上下文缓存¶
Supported in ADKPython v1.15.0Java v0.1.0
在使用智能体完成任务时,你可能希望在多个智能体请求之间重用扩展指令或大量数据。
对每个智能体请求重新发送这些数据很慢、效率低下且可能很昂贵。利用生成式 AI 模型中的上下文缓存功能可以显著加快响应速度,并减少每次请求发送到模型的令牌 (Token) 数量。
ADK 上下文缓存功能允许你将请求数据缓存到支持该功能的生成式 AI 模型中(包括 Gemini 2.0 及更高版本)。本文档解释如何配置和使用此功能。
配置上下文缓存¶
你可以在 ADK App 对象级别配置上下文缓存功能,该对象包装了你的智能体。
使用 ContextCacheConfig 类来配置这些设置,如下列代码示例所示:
from google.adk import Agent
from google.adk.apps.app import App
from google.adk.agents.context_cache_config import ContextCacheConfig
root_agent = Agent(
# 配置使用 Gemini 2.0 或更高版本的智能体
)
# 创建带有上下文缓存配置的应用 (App)
app = App(
name='my-caching-agent-app',
root_agent=root_agent,
context_cache_config=ContextCacheConfig(
min_tokens=2048, # 触发缓存所需的最小令牌数
ttl_seconds=600, # 最多存储 10 分钟 (600 秒)
cache_intervals=5, # 使用 5 次后刷新
),
)
import com.google.adk.agents.BaseAgent;
import com.google.adk.agents.ContextCacheConfig;
import com.google.adk.apps.App;
import java.time.Duration;
// 创建带有上下文缓存配置的应用 (App)
App app = App.builder()
.name("my-caching-agent-app")
.rootAgent(rootAgent)
.contextCacheConfig(
new ContextCacheConfig(
5, /* cache_intervals (最大调用次数) */
Duration.ofMinutes(10), /* ttl (生存时间) */
2048 /* min_tokens (最小令牌数) */))
.build();
配置设置¶
ContextCacheConfig 类包含以下用于控制智能体缓存行为的设置。当你配置这些设置时,它们将应用于该应用 (App) 内的所有智能体。
min_tokens(int):请求中启用缓存所需的最小令牌数。此设置允许你避免在性能提升有限的小型请求上产生额外的缓存开销。默认为0。ttl_seconds(int):缓存的生存时间 (TTL),以秒为单位。此设置确定缓存内容在刷新之前存储的时长。默认为1800(30 分钟)。cache_intervals(int):同一缓存内容在失效前可被使用的最大次数。此设置允许你即使在 TTL 尚未过期的情况下,也能控制缓存更新的频率。默认为10。
下一步¶
有关上下文缓存功能的完整实现和测试示例,请参阅:
cache_analysis:演示如何分析上下文缓存性能的代码示例。
如果你的用例需要在会话期间共用指令,请考虑为智能体使用 static_instruction 参数,这允许你修改生成式模型的系统指令。更多详细信息请参阅:
static_instruction:使用静态指令实现数字宠物智能体。