2408 字
约 8 分钟
9
LLM 成本优化与选型全指南:KV Cache、五层策略与第一性原理,把 Token 花在刀刃上

开场:Token 即金钱

LLM 应用的账单上只有两个变量:输入 Token 和输出 Token。很多团队把精力全花在"模型选得多强"上,却对成本结构一无所知——直到月底账单翻倍才惊醒。

本文把"LLM 成本优化"讲透,主线一条:先懂为什么贵,再谈怎么省。从多轮对话的指数增长根因,到 KV Cache 的空间换时间,再到五层优化策略、图片计费、三层提示词优化,最后回到第一性原理。

一、为什么多轮对话越来越贵?

LLM 按输入 Token 数计费,而多轮对话有个残酷机制:每一轮,都要把所有历史记录重新发给模型。

于是出现指数增长的幻觉:第 1 轮历史 1K Token,第 10 轮历史 50K Token,第 20 轮历史 120K Token——历史越长,Token 越多,费用越高。用户聊得越久,你的成本就越高,这就是"对话通胀"。

而 KV Cache 正是为此而生:空间换时间。模型为历史前缀算好的 Key-Value 缓存住,下一轮直接复用,只有新增内容需要重算。对话轮次越多,KV Cache 节省越大——但前提是前缀必须完全一致。

二、KV Cache 与固定 System Prompt

保持 System Prompt 不变,是最简单、最有效的优化手段。前缀一旦稳定,KV Cache 命中率就高,历史部分重算归零。

一个反例要记住:把省钱的希望寄托在随机路由上,相当于靠运气省钱——既不可靠,也不专业。生产环境必须用显式缓存,而不是碰运气。

KV Cache 杀手清单

杀手 为什么致命
精确到秒的时间戳 每次前缀都不同,缓存全失效
随机 Session ID 同上,动态内容破坏前缀稳定性
用户 ID 前缀 每个用户一个前缀,缓存碎片化
A/B 测试变量 同一用户被分到不同组,缓存命中不了
随机 emoji 前缀 看似无害,实则每次变样
动态广告文案 前缀变 = 全量重算

🔒 原则:System Prompt = 固定前缀。 把动态内容(时间、用户信息、随机性内容)放到 User 消息里,不要放进 System Prompt。

三、五层优化策略:叠加省钱

这五层可以叠加,按优先级依次落地,效果逐层放大:

优先级 策略 做法 节省
1 KV Cache + 固定 System Prompt 历史命中缓存,重算归零 30–50%
2 意图识别 → 模型路由 80% 简单问题用小模型,复杂的才上旗舰 40–60%
3 RAG 触发过滤 加"是否需要 RAG"判断,跳过不必要的向量检索 20–40%
4 对话历史压缩(摘要策略) 超 N 轮后,用 ~200 Token 替换 ~2000 Token 历史 长对话 60–80%
5 语义缓存(Semantic Cache) 语义相似问题复用同一回答,FAQ 不调用 LLM FAQ 70–90%

一个落地案例:L1 把 System Prompt 固定住(省 40%),L2 把 80% 的闲聊路由给小模型(再省 50%),L3 给每个请求加 RAG 判断,L4 长对话自动压缩,L5 给 FAQ 加语义缓存——五层叠加,整体成本可降 70–90%。这就是"节省 70-90% 的系统设计"。

四、图片 Token:像素也在烧钱

多模态模型不按"一张图"计费,而是把图片切成像素块换算成 Token。分辨率一高,账单就跟着高。

核心计费公式

Token = (h̄ × w̄) / token_pixels + 2

  • h̄ / w̄:缩放后的高/宽,强制对齐 32 的整数倍
  • token_pixels:每个 Token 对应的像素数(因模型而异)

一张 4096×4096 的图,Token 数可能是 2048×2048 的 4 倍;批量上 5 张 4K,直接跳入高价档。

按任务匹配分辨率(用最低分辨率满足任务 = 最省钱)

任务类型 精度需求 推荐方案
粗分类(这是猫还是狗?) 低 低分辨率即可
场景理解(室内还是室外?) 中等 中分辨率
OCR / 图表识别(文字要清晰) 高 高分辨率
高精检测 / 医疗影像 极高 最高分辨率,慎批量

高精检测的三种方案对比

方案 Token 判断
2048×2048 4,098 Token 不够
4096×4096 16,386 Token ✅ 推荐
5 张 4K×4K 81,930 Token ⚠️ 危险

结论:医疗影像等场景确实需要高分辨率,但批量处理时,5 张 4K 图即跳入高价档。需要启用 vl_high_resolution_images 并严格控制批量大小。

核心原则:分辨率不是越高越好。 用最低满足任务需求的分辨率,Token 数可相差 10–100 倍。

五、语法层优化:写给机器的提示词,不要排版

格式性 Token 最高占提示词的 13–20%。记住:提示词是写给机器的指令,不是给人看的文档。那些加粗、JSON 大括号、缩进换行——都是在花钱买格式。

策略 做法 节省
复杂对象:YAML 代替 JSON 用缩进代替闭合符号,信噪比更高 15–30%
扁平列表:CSV 代替 JSON 数组 字段名重复 N 遍是最大浪费 30–60%
后台输出:强制压缩 JSON 机器读数据不需要美观,只需要合法 10–20%
去掉 Markdown 装饰符号 ** 加粗、### 标题占用额外 Token 视篇幅而定

六、语义层优化:不要把上下文窗口当垃圾桶

信息密度越高 → 注意力越集中 → 效果越好。

为什么不能无限塞内容?

  1. 贵而慢:注意力复杂度 O(N²),Prompt 翻倍 → 计算翻四倍
  2. 效果差:模型对中间内容注意力最弱,关键信息被淹没

三个优化策略

策略 做法 效果
动态 Few-Shot 用向量检索,每次只取最相关的 3 条,别硬编码案例 省 87.5%
长文档先压缩再喂 LLMLingua-2 过滤冗余,保留语义核心 压缩 5–20x
关键信息放首尾 利用模型注意力的首尾偏好特性 效果显著提升

七、输出层优化:少输出就是省钱

输出 Token 往往比输入更贵,控制输出是直接省钱:

策略 做法 节省
负向约束 不要写"请简洁",明确说不能做什么 30%
Diff 输出 润色只改那几个词,不要重写整段 90%+
停止序列 用 stop 参数物理截断,比约束稳 精确控制

八、KV Cache 进阶陷阱

陷阱 现象 后果
动态切换工具 每次给模型不同的工具列表 前缀变了 = 全量重算
滑动窗口 用 FIFO 队列滚动历史 前缀总在变,缓存全废

工具列表、上下文组织方式这类"结构前缀",一旦每次不同,KV Cache 同样全部失效——稳定性不只针对 System Prompt,而是针对整个固定前缀。

九、第一性原理:AI Harness = 上下文管理

把上面所有手段抽掉表象,本质只有一件事:

一切 Harness 手段,归根到底都是为了构造更优质的上下文,让模型更准确理解你的意图。

AI Harness = 用尽一切办法,做好上下文管理。它有三个维度:

维度 含义 手段
质 · 质量 注入精准、高密度的信息 RAG、语义压缩、Few-Shot 动态检索
构 · 结构 关键信息放对位置 关键信息放首尾、核心约束写进 System Prompt
本 · 成本 最小 Token 最大密度 输出控制、KV Cache、格式选择

Harness:做还是不做?

值得做的 Harness:和友商拼成本、效率、效果;大模型升级后效果更好(互补);形成产品护城河;收益明确、成本可控。

可以放弃的 Harness:消耗极大资源、维护成本高;大模型升级后直接被替代;用户完全感知不到效果提升;边际收益趋近于零。

⚠️ 随着大模型升级,许多 Harness 手段会被淘汰。要时刻问自己:这件事模型版本升级后还需要吗?

结语:大道至简,上下文为王

当你不知道该怎么做时,回到原点,问自己一个问题:

「我现在给模型的上下文,是它做好这件事所需要的全部吗?」

能回答好这个问题,你就掌握了 AI Harness 的本质。成本优化的终点不是省钱,而是用最少的 Token,构造最优质的上下文——质量、结构、成本,三位一体,大道至简,上下文为王。

LLM 成本优化与选型全指南:KV Cache、五层策略与第一性原理,把 Token 花在刀刃上
https://clxhxhhr.top/posts/4616/
作者
clxstart
发布于
2026-10-11
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。