上下文工程入门:Prompt Caching、长上下文和可复用前缀
从提示前缀、缓存、上下文分层和任务状态出发,整理长上下文 AI 应用的工程设计方法。
长上下文让模型能读更多材料,但也带来成本、延迟和注意力分散问题。上下文工程的核心不是“塞更多文本”,而是决定哪些信息稳定、哪些信息变化、哪些信息应该被压缩或缓存。
OpenAI 和 Anthropic 都有 prompt caching 相关文档,说明稳定前缀在一定条件下可以被缓存,从而改善重复请求的成本或延迟特征。[ctx-001][ctx-002]
把上下文分成三层
一个应用请求可以拆成:
- 稳定层:系统规则、工具说明、输出 schema。
- 半稳定层:用户资料、项目背景、长期偏好。
- 动态层:本轮问题、检索结果、临时状态。
上下文工程的第一步,是不要把所有信息都当成“本轮提示词”。
概念组织方式:
[稳定前缀:角色、规则、格式]
[半稳定背景:项目、用户、权限]
[动态输入:问题、检索片段、当前任务状态]可复用前缀要保持稳定
如果希望利用 prompt caching,稳定前缀就不要频繁变化。把时间戳、随机 ID、临时检索结果放进前缀,会降低复用价值。
实践建议:
- 把输出格式和安全规则放在稳定前缀。
- 把检索片段放在动态区。
- 给上下文模板做版本号。
- 记录每次请求的模板版本和输入长度。
长上下文也需要摘要
长上下文不是记忆系统。对于多轮任务,仍然应该把历史压缩成状态:
{
"task_goal": "写一篇 RAG 评估教程",
"decisions": ["使用官方文档作为主要来源"],
"open_questions": ["是否需要加入代码示例"]
}综合这些资料可以推断:高质量 AI 应用会把 prompt 当成可版本化资产,把上下文当成分层数据结构,而不是临时拼接字符串。
参考资料
- [ctx-001] OpenAI Developers, “Prompt caching”, https://developers.openai.com/api/docs/guides/prompt-caching
- [ctx-002] Anthropic Docs, “Prompt caching”, https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
- [ctx-003] Anthropic Docs, “Prompt engineering overview”, https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview