返回文章列表

上下文工程入门:Prompt Caching、长上下文和可复用前缀

从提示前缀、缓存、上下文分层和任务状态出发,整理长上下文 AI 应用的工程设计方法。

长上下文让模型能读更多材料,但也带来成本、延迟和注意力分散问题。上下文工程的核心不是“塞更多文本”,而是决定哪些信息稳定、哪些信息变化、哪些信息应该被压缩或缓存。

OpenAI 和 Anthropic 都有 prompt caching 相关文档,说明稳定前缀在一定条件下可以被缓存,从而改善重复请求的成本或延迟特征。[ctx-001][ctx-002]

把上下文分成三层

一个应用请求可以拆成:

  • 稳定层:系统规则、工具说明、输出 schema。
  • 半稳定层:用户资料、项目背景、长期偏好。
  • 动态层:本轮问题、检索结果、临时状态。

上下文工程的第一步,是不要把所有信息都当成“本轮提示词”。

概念组织方式:

[稳定前缀:角色、规则、格式]
[半稳定背景:项目、用户、权限]
[动态输入:问题、检索片段、当前任务状态]

可复用前缀要保持稳定

如果希望利用 prompt caching,稳定前缀就不要频繁变化。把时间戳、随机 ID、临时检索结果放进前缀,会降低复用价值。

实践建议:

  1. 把输出格式和安全规则放在稳定前缀。
  2. 把检索片段放在动态区。
  3. 给上下文模板做版本号。
  4. 记录每次请求的模板版本和输入长度。

长上下文也需要摘要

长上下文不是记忆系统。对于多轮任务,仍然应该把历史压缩成状态:

{
  "task_goal": "写一篇 RAG 评估教程",
  "decisions": ["使用官方文档作为主要来源"],
  "open_questions": ["是否需要加入代码示例"]
}

综合这些资料可以推断:高质量 AI 应用会把 prompt 当成可版本化资产,把上下文当成分层数据结构,而不是临时拼接字符串。

参考资料

  1. [ctx-001] OpenAI Developers, “Prompt caching”, https://developers.openai.com/api/docs/guides/prompt-caching
  2. [ctx-002] Anthropic Docs, “Prompt caching”, https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
  3. [ctx-003] Anthropic Docs, “Prompt engineering overview”, https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview