DeepSeek 的 Input Cache(输入缓存)是什么?一文讲清原理、作用和使用技巧

在使用 DeepSeek API 时,你可能会看到一个概念:Input Cache(输入缓存)

很多人第一次看到都会有几个疑问:

  • Input Cache 是什么?
  • 它缓存的是 Prompt 还是回答?
  • 为什么开启缓存后响应更快、费用更低?
  • 开发时怎样才能提高缓存命中率?

本文就从这些问题出发,介绍 Input Cache 的工作原理以及在实际开发中的使用建议。


一、为什么需要 Input Cache?

先来看一次普通的大模型调用过程。

假设我们发送下面这样一段 Prompt:

你是一名专业的 Java 面试官。

请根据下面要求生成面试题:

要求:
1. 包括 Java 基础
2. 包括 JVM
3. 包括 Spring
4. 包括 MySQL
5. 每道题附答案

现在请生成 20 道题。

对于模型来说,它并不是直接"读懂"这段文字,而是需要经过一系列计算:

Prompt
    │
    ▼
Tokenizer 分词
    │
    ▼
Token
    │
    ▼
Embedding
    │
    ▼
Transformer 多层计算
    │
    ▼
生成回答

真正消耗 GPU 算力的是 Transformer 对输入进行编码计算

如果每次请求都包含几千甚至上万 Token,而这些内容又基本相同,那么模型每次都重新计算一遍,就会浪费大量算力和时间。

因此,大模型服务通常都会引入 Input Cache 来减少重复计算。


二、什么是 Input Cache?

Input Cache 可以理解为:

把模型已经计算过的输入内容缓存起来,当下次请求拥有相同的前缀时,直接复用之前的计算结果,而不是重新计算。

例如第一次请求:

你是一名 Java 老师。

请根据下面要求生成试题:

要求:
1.
2.
3.
4.
5.

生成 Java 集合相关试题。

第二次请求:

你是一名 Java 老师。

请根据下面要求生成试题:

要求:
1.
2.
3.
4.
5.

生成 JVM 相关试题。

可以发现:

只有最后一句不同。

前面的 Prompt 完全一致。

第一次请求:

固定 Prompt
        │
        ▼
GPU 完整计算
        │
        ▼
缓存中间结果

第二次请求:

固定 Prompt
        │
        ▼
直接读取缓存
        │
        ▼
只计算后面新增内容

因此:

  • 响应速度更快;
  • GPU 计算量更少;
  • API 成本更低。

三、缓存的到底是什么?

很多人以为 Input Cache 缓存的是回答,其实并不是。

它缓存的是:

模型处理输入 Prompt 时产生的中间计算结果(KV Cache)。

也就是说,缓存的是:

Prompt
    │
    ▼
Transformer 编码计算
    │
    ▼
KV Cache(缓存)

而不是:

Prompt
    │
    ▼
最终回答

所以,即使输入前半部分相同,只要最后的问题不同,模型依然可以生成完全不同的回答。

例如:

第一次:

介绍 Python。

第二次:

介绍 Java。

虽然最终回答不同,但前面的系统 Prompt 可以直接复用缓存。


四、缓存的是计算过程,不是最终回答

这是 Input Cache 最容易产生误解的地方。

很多人第一次看到"缓存"两个字,就会认为:

模型是不是把回答一起缓存了?下次直接返回?

答案是否定的。

DeepSeek 的输入缓存不会缓存最终回答,缓存的是模型处理输入时产生的中间状态,包括:

  • 输入 Prompt 的重复前缀
  • 长上下文对应的中间计算结果
  • 可复用的 KV Cache(Key-Value Cache)状态

也就是说,它缓存的是:

模型"读懂前面这段 Prompt"所完成的计算。

而不是:

模型最后生成的回答。

例如第一次请求:

你是一位 Java 面试官……

请生成 Java 集合相关的面试题。

第二次请求:

你是一位 Java 面试官……

请生成 JVM 相关的面试题。

由于前面的 Prompt 完全一致,模型可以直接复用已经计算好的上下文状态,只需要继续处理最后变化的内容。

需要注意的是,即使命中了缓存,模型仍然会重新生成回答

因此:

  • 回答仍然需要重新推理;
  • temperaturetop_p 等采样参数依然会生效;
  • 输出仍然可能存在随机性。

换句话说,Input Cache 只是减少了模型理解输入的计算量,并没有跳过回答生成这一过程。

DeepSeek 官方文档也明确说明:输入缓存只匹配用户输入的前缀部分,输出仍然需要继续推理,因此依然会受到 temperaturetop_p 等参数的影响。


五、什么情况下能够命中缓存?

Input Cache 是否能够生效,取决于输入前缀是否一致

这里需要特别注意:

不是意思相同,而是 Token 完全一致。

例如:

第一次:

你是一名 AI 老师。

第二次:

你是一名AI老师。

虽然人看起来几乎一样,但是:

AI 老师

AI老师

Tokenizer 分词后的结果可能已经不同,因此缓存无法命中。

再例如:

第一次:

生成 10 道题。

第二次:

生成 20 道题。

由于只有最后几个 Token 不同,因此前面的内容仍然可以命中缓存。


六、哪些内容最适合缓存?

一般来说,长期不变的 Prompt 最适合缓存。

1. System Prompt

例如:

你是一位专业 Java 老师。

输出 JSON。

严格遵循 Schema。

禁止输出 Markdown。

System Prompt 基本每次请求都相同,因此缓存命中率最高。


2. Few-shot 示例

例如:

输入:

......

输出:

......

输入:

......

输出:

......

Few-shot 示例通常有几百到几千 Token,非常适合缓存。


3. RAG 检索内容

例如:

知识库:

......

......

用户问题:

......

如果知识库内容没有变化,那么大部分 Token 都可以复用。


4. 固定业务规则

例如:

必须输出 JSON。

必须包含以下字段。

禁止解释。

禁止 Markdown。

这些规则建议始终保持一致。


七、哪些情况不会命中缓存?

以下情况都会导致缓存命中率下降。

Prompt 经常变化

例如:

当前时间:

2026-07-20

下一次:

当前时间:

2026-07-21

由于 Token 已经变化,因此缓存失效。


每次加入随机 UUID

例如:

request_id=238947

下一次:

request_id=928374

同样无法命中缓存。


不断增长的聊天记录

例如:

用户

AI

用户

AI

......

随着历史越来越长,缓存收益会逐渐下降。


八、为什么 Input Cache 可以降低费用?

因为模型推理过程中,真正消耗算力的是:

输入编码阶段。

例如:

Prompt:

5000 Token

回答:

300 Token

模型的大部分计算,都发生在:

5000 Token
        │
        ▼
Transformer 编码

如果这 5000 Token 可以直接读取缓存,那么 GPU 就不用重复计算。

因此:

很多模型厂商都会对:

Cache Hit Token

采用更低的计费价格。

这也是为什么开启 Input Cache 后,API 成本通常会下降。

具体价格以 DeepSeek 官方文档为准。


九、开发时如何提高缓存命中率?

想充分利用 Input Cache,可以遵循以下几个原则。

1. 固定 System Prompt

不要每次动态拼接 Prompt。

例如:

你是一位专业老师……

尽量保持完全一致。


2. Few-shot 放在前面

Few-shot 示例尽量固定。

不要频繁修改示例内容。


3. 固定内容放前面

推荐按照下面的顺序组织 Prompt:

System Prompt

↓

Few-shot

↓

知识库内容

↓

用户问题

这样只有最后的问题发生变化,前面的内容都可以命中缓存。


4. 避免在固定 Prompt 中加入动态信息

例如:

当前时间

随机 UUID

随机编号

当前日期

都会降低缓存命中率。


十、Input Cache 与聊天记忆(Memory)的区别

很多人容易把 Input Cache 和 Memory 混为一谈。

实际上,它们解决的是两个完全不同的问题。

Input Cache Memory
减少重复计算 保存历史上下文
缓存 Prompt 的计算结果 记录用户历史信息
提高响应速度 提高回答连续性
降低 API 成本 增强长期记忆能力
用户几乎无感知 用户能够感知

简单来说:

  • Input Cache 关注的是性能优化。
  • Memory 关注的是上下文记忆。

两者可以同时存在,并不会互相替代。


总结

Input Cache 本质上是一种推理优化技术

它不会缓存模型最终生成的回答,而是缓存模型处理输入时产生的中间计算结果。当多个请求拥有相同的前缀 Prompt 时,模型可以直接复用这些计算结果,只对新增或变化的部分继续推理。

对于 RAG、智能客服、Agent、AI 出题系统等需要频繁调用大模型的应用来说,合理设计 Prompt 结构、提高缓存命中率,可以带来以下收益:

  • 减少重复计算,提高响应速度;
  • 降低 GPU 算力消耗,减少 API 成本;
  • 提高系统吞吐量,在高并发场景下表现更稳定。

一句话总结:

Input Cache 的本质不是缓存回答,而是缓存模型理解输入时的计算过程。通过复用相同 Prompt 前缀的计算结果,实现"少算一次",从而达到提速、降本的目的。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐