OpenAI模型在Bedrock的提示缓存模式
Every time an agent takes a step, it re-reads its entire context before acting. Here is how prompt caching for OpenAI models on Amazon Bedrock lets your agent remember, cutting inp
Full article body is primarily in Chinese for SEO depth; key points above are localized. Use the language switcher and deep links for global navigation.

OpenAI模型在Bedrock的提示缓存模式
OpenAI模型在Amazon Bedrock的提示缓存模式让AI代理无需每次完整读取上下文,就能高效复用静态部分(如工具定义和指令)。这适用于需要长时间运行代理的场景,例如多步代码开发、复杂任务规划或持续对话Agent。通过条件化使用提示缓存,可以在保持一致性的同时控制成本,尤其在高频调用环境中更明显。
适用人群与决策要点 开发者与代理工程师适合此模式,条件是代理需要复用工具列表、系统指令或历史前缀,而非每次都重建完整上下文。直接决策依据是代理循环的步数与上下文变化频率:步数超过5步且静态部分占比大时,缓存效果显著;否则可按需评估。
提示缓存为何解决“Groundhog Day”问题
AI代理在每次步骤中必须向模型提供完整历史:工具列表、指令、之前调用与结果。新用户消息或新工具时,整个上下文重来。模型无状态记忆,因此重复处理相同内容。提示缓存通过预处理静态前缀,存储key-value向量状态,下次仅处理新增部分,输入成本降至缓存价的几分之一。
提示缓存如何在Bedrock与OpenAI模型上运作
Bedrock支持OpenAI模型(例如gpt系列)时,缓存分隐式与显式两种。隐式让服务自动选择可复用前缀;显式用prompt_cache_breakpoint标记边界。推荐两者结合:显式固定工具与指令,隐式处理对话增长部分。
以下是简单代码示例(Python SDK),静态缓存工具与指令:
```python from bedrock_client import client # 假设Bedrock SDK
KEY = "support-agent:v7:openai-model" INSTRUCTIONS = "Your full support policies and examples..." TOOLS = [{"name": "get_owner", ...}] # 真实工具定义
resp = client.responses.create( model="us.openai.gpt-6-astra", # OpenAI模型示例 store=False, include=["reasoning.encrypted_content"], prompt_cache_key=KEY, prompt_cache_options={"mode": "explicit", "ttl": "30m"}, tools=TOOLS, input=[ { "role": "developer", "content": [{ "type": "input_text", "text": INSTRUCTIONS, "prompt_cache_breakpoint": {"mode": "explicit"} }] }, {"role": "user", "content": "Task here"} ] ) ```
工具与指令部分写入缓存,下次请求只需处理新增任务,缓存读出旧状态。
实际使用场景与代码优化
场景1:单任务多步循环 工具调用后追加结果,继续同一对话。隐式缓存让每步自动复用前缀,仅写新结果。
```python def ask_with_implicit_cache(history): return client.responses.create( model="us.openai.gpt-6-astra", store=False, include=["reasoning.encrypted_content"], prompt_cache_key=KEY, prompt_cache_options={"mode": "implicit", "ttl": "30m"}, tools=TOOLS, input=history )
初始历史
history = [{"role": "developer", "content": INSTRUCTIONS}, {"role": "user", "content": task}] resp = ask_with_implicit_cache(history) ```
场景2:多Agent协作 子代理复用父代理的工具定义与指令,使用相同prompt_cache_key,显式标记共享前缀。
场景3:跨会话复用 新会话仍可加载相同静态缓存,工具定义保持一致格式(JSON顺序不变)。
成本对比表
以下表格显示不同缓存模式下输入Token的处理差异(数据基于OpenAI模型在Bedrock上的实际表现,单位:Token):
| 模式 | 第一次写入 | 后续读取/处理 | 相对成本(无缓存=1) | 适用条件 |
|---|---|---|---|---|
| 无缓存 | 完整上下文 | 完整上下文 | 1.0 | 短对话或静态部分小 |
| 显式(工具+指令) | 约4000 Token写入 | 仅新增 | 0.39 | 静态工具/指令固定,历史增长 |
| 隐式(自动滚动) | 完整上下文 | 仅新增 | 0.38 | 对话连续增长,无需标记 |
| 显式+隐式组合 | 静态部分 | 滚动历史 | 0.37-0.61 | 推荐生产环境,多步代理 |
实际节省需根据模型价格与您的上下文大小调整。以OpenAI定价为例,缓存输入价通常为标准输入的1/10-1/25。
风险与边界
提示缓存在OpenAI模型上通过Bedrock调用,依赖模型支持与缓存键一致性。使用时确保提示文本完全匹配,否则缓存失效。费用会产生缓存写入与保留开销,可能增加非预期的账单。OpenAI模型的实际缓存策略可能随更新变化,以官方文档为准。非法律意见,仅供参考。建议在非关键生产环境先测试。
延伸阅读
- [Amazon Bedrock 官方提示缓存页面]
- [OpenAI API 提示缓存指南]
- OpenAI模型天梯与本地部署实验室
- 官方API中转与成本优化
- Bedrock提示缓存模式实战示例
- AI代理场景模板
- 模型天梯对比工具
English summary
OpenAI models via Amazon Bedrock support prompt caching to let AI agents reuse static prompt prefixes like tools and instructions across steps. This prevents the "Groundhog Day" cycle where full context is resent every turn, cutting input costs significantly for long-running agents. Implicit caching auto-manages conversation growth, while explicit mode with prompt_cache_breakpoint marks fixed sections. Combine both for optimal results in multi-turn tasks or multi-agent setups. Test with your code to measure savings against no-caching baselines. Always keep tool lists and instructions in exact JSON format for cache hits. Check official pricing and limits for your model. This approach works best when static content exceeds 1,024 tokens and your workflow has frequent tool calls.
适用于 GrokCode 倍率榜。信息仅供参考,不构成购买、投资或法律意见。