在 DigitalOcean 如何提示词缓存:降低 AI 推理成本与延迟

在调用大模型 API 时,很多成本其实花在了"重复阅读"上。

例如,一个企业知识库应用可能会在每次请求中重复发送相同的系统提示词、工具定义和业务规则;一个 Coding Agent 也会不断把项目说明、代码上下文和历史对话重新提交给模型。即使真正变化的只有用户最后输入的一句话,模型仍然需要重新处理前面的大段内容。

提示词缓存(Prompt Caching)正是为了解决这个问题。

目前,DigitalOcean 无服务器推理已经支持提示词缓存,覆盖 Anthropic、OpenAI 以及部分开源模型。不过,不同模型家族的开启方式并不完全相同:有的需要在请求中显式指定缓存范围,有的只需设置缓存保留策略,还有一些模型会自动处理。

本文将具体介绍:

  • 提示词缓存是什么
  • 它如何降低 AI 推理成本和响应延迟
  • 如何在 DigitalOcean 无服务器推理中使用提示词缓存
  • Coding Agent 如何利用缓存

什么是提示词缓存?

提示词缓存并不是把模型生成的答案保存下来,也不是传统意义上的"问答缓存"。

它缓存的是模型处理提示词前缀时产生的中间计算结果。

一次典型的大模型请求通常包含以下内容:

text 复制代码
系统提示词
+ 工具定义
+ 企业规则或知识文档
+ 历史对话
+ 当前用户问题

模型在生成答案之前,首先需要读取并处理全部输入内容,这个阶段通常被称为 Prefill。输入上下文越长,Prefill 所需的计算量越大,首 Token 延迟也可能越高。

如果后续请求包含完全相同的提示词前缀,平台就可以直接复用之前的计算结果,只处理新增或发生变化的部分。

例如:

text 复制代码
第一次请求:

[系统提示词]
[工具定义]
[产品文档]
[用户问题 A]
text 复制代码
第二次请求:

[系统提示词]
[工具定义]
[产品文档]
[用户问题 B]

前三部分没有变化,因此有机会直接从缓存读取。模型只需要处理新的"用户问题 B",不必重新计算整段产品文档。

需要注意的是,提示词缓存通常采用前缀匹配机制。只有从请求开头连续保持一致的部分,才有可能命中缓存。DigitalOcean 的测试也说明,在提示词最前面加入动态时间戳或随机请求 ID,可能让原本接近完整命中的缓存大幅失效。DigitalOcean 的提示词缓存成本分析对此给出了详细测试结果。

提示词缓存有什么作用?

提示词缓存的价值主要体现在成本、延迟和吞吐量三个方面。

1. 降低输入 Token 成本

缓存命中的 Token 通常按照更低的缓存读取价格计费,而没有命中的新增内容仍按普通输入价格计算。

假设一个 AI 客服应用每次请求都包含:

  • 3,000 Token 的系统提示词和业务规则

  • 5,000 Token 的产品知识

  • 200 Token 的用户问题

在没有缓存时,每次请求都需要按照约 8,200 个输入 Token 计费。

如果前面的 8,000 个 Token 成功命中缓存,那么后续请求中只有新增的用户问题需要按普通输入价格处理,其余部分可以按照相应模型的缓存读取价格计费。

不过,缓存并不等于无条件免费。部分模型会收取缓存写入费用,而且不同模型的缓存读取折扣、最低可缓存长度和有效期可能不同。因此,在正式上线前,仍应查看 DigitalOcean 模型目录中的最新价格。

2. 缩短首 Token 响应时间

模型不再需要重新处理全部输入上下文,因此通常可以更快开始生成结果,也就是降低首 Token 延迟(Time to First Token,TTFT)。

提示词越长、重复部分越多,缓存带来的延迟改善通常越明显。在 DigitalOcean 使用开源模型进行的基准测试中,缓存命中后,部分测试的 TTFT 降低了 69%~92%。这是一组特定环境下的测试结果,并不代表所有模型和负载都能获得相同比例的提升,但它足以说明缓存对长上下文请求的价值。

3. 提高 Agent 的有效吞吐量

AI Agent 往往会在一次任务中连续调用模型多次。例如,一个 Coding Agent 可能需要:

  1. 分析代码库;
  2. 搜索文件;
  3. 读取相关代码;
  4. 修改代码;
  5. 运行测试;
  6. 根据错误再次修改。

每一步都会携带系统提示词、工具定义、项目上下文和历史对话。如果这些内容能够命中缓存,单次任务中的多轮调用就不必反复处理相同信息。

因此,提示词缓存特别适合以下场景:

  • AI Coding Agent
  • 多轮智能客服
  • RAG 知识库问答
  • 长文档分析
  • 带有大量工具定义的 AI Agent
  • 固定格式的数据抽取与分类
  • 需要反复发送企业规则的内部 AI 应用

DigitalOcean 无服务器推理如何支持提示词缓存?

DigitalOcean 的 无服务器推理平台同时提供多种商业模型和开源模型,包括 Claude、GPT、Kimi、DeepSeek、Qwen、GLM 等。提示词缓存可以用于 Chat Completions API 和 Responses API,但不同模型家族的使用方式不同。

模型类型 开启方式 主要特点
Anthropic 模型 设置 cache_control 可指定缓存内容及 5 分钟或1小时 TTL
OpenAI 模型 设置 prompt_cache_retention 支持内存缓存或 24 小时保留策略
开源模型 平台自动处理 无需设置额外缓存参数,目前属于公开预览

下面分别来看。

在 DigitalOcean 中为 Claude 模型开启提示词缓存

在 DigitalOcean 上调用 Anthropic 模型时,可以通过 cache_control 指定需要缓存的内容,并使用 ttl 设置缓存有效期。

目前文档列出的 TTL 包括:

  • 5m:缓存5分钟,也是默认值
  • 1h:缓存1小时

下面是一个经过简化的请求示例:

bash 复制代码
curl https://inference.do-ai.run/v1/chat/completions \
  -H "Authorization: Bearer $DIGITALOCEAN_INFERENCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<CLAUDE_MODEL_ID>",
    "messages": [
      {
        "role": "system",
        "content": [
          {
            "type": "text",
            "text": "你是一名企业技术支持助手。以下是需要始终遵守的产品规则和回答规范......",
            "cache_control": {
              "type": "ephemeral",
              "ttl": "1h"
            }
          }
        ]
      },
      {
        "role": "user",
        "content": "如何排查数据库连接超时?"
      }
    ]
  }'

请将 <CLAUDE_MODEL_ID> 替换为 DigitalOcean 模型目录中当前可用的 Claude 模型 ID。

在这个例子中,系统提示词被标记为可缓存内容。如果后续请求继续使用完全相同的系统提示词,平台就有机会复用缓存,只处理新的用户问题。

如果一条消息中既有固定内容,也有动态内容,可以将它们拆成多个内容块,只为固定部分添加 cache_control

json 复制代码
{
  "role": "developer",
  "content": [
    {
      "type": "text",
      "text": "这里放固定的企业规则、代码规范或产品文档。",
      "cache_control": {
        "type": "ephemeral",
        "ttl": "5m"
      }
    },
    {
      "type": "text",
      "text": "这里放每次请求都会变化的内容。"
    }
  ]
}

如果在使用DigitalOcean 无服务器推理的提示此缓存时,遇到任何问题,可以直接联系咨询 DigitalOcean 中国区战略合作伙伴卓普云

在 DigitalOcean 中使用 OpenAI 模型的提示词缓存

DigitalOcean 文档显示,OpenAI 模型可以在 Chat Completions API 和 Responses API 中使用提示词缓存。

对于符合条件的请求,可以设置:

json 复制代码
"prompt_cache_retention": "in_memory"

或者:

json 复制代码
"prompt_cache_retention": "24h"

完整请求示例如下:

bash 复制代码
curl https://inference.do-ai.run/v1/chat/completions \
  -H "Authorization: Bearer $DIGITALOCEAN_INFERENCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "prompt_cache_retention": "24h",
    "messages": [
      {
        "role": "system",
        "content": "你是一名企业文档分析助手。请严格按照以下分类标准处理用户提交的内容......"
      },
      {
        "role": "user",
        "content": "分析下面这份文档并提取风险项。"
      }
    ]
  }'

OpenAI 模型的提示词通常需要达到 1,024 Token 才具备缓存资格,而且缓存命中采用尽力而为机制,并不保证每次请求都能命中。

OpenAI 官方文档也说明,符合条件的请求会自动参与提示词缓存,不需要改变请求结构。

DigitalOcean 上的开源模型可以自动缓存

对于 DigitalOcean 无服务器推理中的部分开源模型,使用方式更简单。

根据 DigitalOcean 文档,DeepSeek V3.2 等开源模型已经支持自动提示词缓存,开发者不需要设置 cache_controlprompt_cache_retention

bash 复制代码
curl https://inference.do-ai.run/v1/chat/completions \
  -H "Authorization: Bearer $DIGITALOCEAN_INFERENCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<OPEN_SOURCE_MODEL_ID>",
    "messages": [
      {
        "role": "system",
        "content": "这里是一段会在不同请求中反复使用的长系统提示词......"
      },
      {
        "role": "user",
        "content": "请处理本次任务。"
      }
    ]
  }'

只要请求前缀与之前的请求匹配,平台就会自动尝试复用缓存。

目前,DigitalOcean 将开源模型的提示词缓存标记为公开预览功能。缓存以客户账户为单位进行隔离,一个账户生成的缓存不会被其他账户读取或复用。

如何确认提示词缓存是否命中?

最直接的方法是检查 API 响应中的 usage 字段。

DigitalOcean 会通过以下字段返回缓存读取量:

json 复制代码
{
  "usage": {
    "prompt_tokens": 214,
    "prompt_tokens_details": {
      "cached_tokens": 128
    }
  }
}

部分响应中也可能出现:

json 复制代码
{
  "usage": {
    "cache_read_input_tokens": 128
  }
}

如果 cached_tokenscache_read_input_tokens 大于0,说明本次请求至少有一部分输入 Token 命中了缓存。

测试时建议连续发送两次前缀相同的请求。第一次通常负责创建缓存,第二次及之后的请求才有机会读取缓存。

不要只比较总 Token 数量。命中缓存以后,输入 Token 依然可能出现在总用量统计中,只是其中一部分会按照缓存读取价格计费。

Coding Agent 如何使用提示词缓存?

DigitalOcean 无服务器推理的 API 可用于多种 Coding Agent。除了通过 DigitalOcean API 调用模型,Claude Code、OpenAI Codex 等 Coding Agent 也会利用提示词缓存,减少重复处理代码、项目说明和对话历史产生的成本。

Claude Code 默认开启提示词缓存,通常不需要额外配置。如果确实需要关闭,可以设置:

bash 复制代码
export DISABLE_PROMPT_CACHING=1

OpenAI Codex 同样不需要手动开启缓存。符合条件的请求会由底层 OpenAI 模型自动进行提示词缓存,用户无需设置 cache_control 等参数。

为了提高缓存命中率,可以将稳定的项目规范写入 CLAUDE.mdAGENTS.md,同时避免频繁修改全局指令、工具定义和项目配置。需要注意的是,提示词缓存只能降低重复输入的处理成本,不能替代上下文管理。对于彼此无关的开发任务,仍建议开启新的会话。

总结

DigitalOcean 无服务器推理已经支持提示词缓存,但不同模型的使用方式有所区别:

  • Anthropic 模型通过 cache_control 指定缓存范围和 TTL;
  • OpenAI 模型通过 prompt_cache_retention 设置缓存保留策略;
  • 部分开源模型会自动使用提示词缓存,不需要增加额外参数。

对于 Claude Code 和 Codex 等 Coding Agent,提示词缓存也已经成为底层的重要优化机制。Claude Code 默认开启缓存;Codex 使用的符合条件的 OpenAI 模型则会自动参与缓存,用户通常不需要手动配置。

不过,真正决定缓存效果的,不只是"有没有开启",还有提示词本身的结构。将系统指令、工具定义和固定文档放在前面,把用户问题、时间戳和动态参数放在后面,往往比单纯添加一个缓存参数更重要。

如果你的 AI 应用需要反复提交长上下文,那么提示词缓存很可能是最容易被忽视、也最值得尽早启用的一项推理成本优化。

相关推荐
only-qi3 小时前
美的AI Agent面试题的解析与思考
人工智能·ai·llm·agent·react
武子康3 小时前
VLA 落地先签动作合同:从视觉语言输入到可执行控制指令
人工智能·llm·agent
熊猫钓鱼>_>4 小时前
用Seed Evolving+高德地图做城市旅行规划Agent
大模型·agent·规划·智能体·豆包·火山·seed evolving
程序员AI工坊5 小时前
Agent 开发:ReAct 循环与工具调用实战——从单次调用到自主 Agent
人工智能·后端·python·langchain·agent·react
Z-D-K6 小时前
一个AI的真实日记(3)
人工智能·ai·aigc·人机交互·agent·agi
武子康7 小时前
SWE-1.7 的提升究竟来自哪里?接受大量强化学习后训练的 Kimi K2.7 为起点,继续进行大规模 RL
人工智能·llm·agent
布列瑟农的星空7 小时前
LoRA微调BERT模型实践
人工智能·agent
用户469368483208 小时前
kimi-code 深度掌握系列文章-工具系统:从注册到执行(六)
llm·agent