<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI工作流 on niuzj</title>
    <link>https://niuzj.org/tags/ai%E5%B7%A5%E4%BD%9C%E6%B5%81/</link>
    <description>Recent content in AI工作流 on niuzj</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 11 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://niuzj.org/tags/ai%E5%B7%A5%E4%BD%9C%E6%B5%81/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>搞懂 LLM 缓存机制：一个改动让 API 调用省 80% Token</title>
      <link>https://niuzj.org/posts/llm-kv-cache-save-tokens/</link>
      <pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://niuzj.org/posts/llm-kv-cache-save-tokens/</guid>
      <description>&lt;p&gt;做 AI 工作流平台的时候，token 费用是绕不开的问题。我们的 Consumer 服务每天要调几千次模型 API，一个工作流跑下来可能串联 5-6 个节点，每个节点都带着一大坨 system prompt。算下来，光是重复发送 system prompt 的 token 就占了总消耗的一大半。&lt;/p&gt;&#xA;&lt;p&gt;直到我搞明白了 KV Cache 这个东西，才发现原来 API 厂商已经帮你做好了缓存——你只需要知道怎么触发它。&lt;/p&gt;&#xA;&lt;h2 id=&#34;kv-cache-是什么&#34;&gt;KV Cache 是什么&lt;/h2&gt;&#xA;&lt;p&gt;Transformer 的注意力公式大家都见过：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Attention(Q, K, V) = softmax(Q·K^T / √d) · V&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;关键点在于：Decoder-only 架构（GPT、Claude、Gemma 这些）用的是 causal masking，每个 token 只看前面的 token。这意味着历史 token 的 K 和 V 算完之后就不会变了。&lt;/p&gt;&#xA;&lt;p&gt;所以模型推理的时候会把历史 token 的 Key 和 Value 矩阵缓存起来，下次只需要算新 token 的 Q，然后跟缓存的 K、V 做注意力计算就行。这就是 KV Cache。&lt;/p&gt;&#xA;&lt;p&gt;对于 API 用户来说，这个机制被包装成了 &lt;strong&gt;Prompt Caching&lt;/strong&gt;（前缀缓存）：如果你连续多次请求的 prompt 前缀相同，服务端会复用之前算好的 KV Cache，跳过重复计算。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
