第九章 生产级硬化
9.6 成本工程
承前:生产就绪六维度的最后一维,也是传统软件时代最不习惯的一维——成本从"一次性资源采购"变成了"随用量线性增长的可变支出"。一个设计不当的 Agent,月账单能在一周内翻几倍,而功能看起来一切正常。这一节讲 token 成本怎么核算、怎么分层用模型、怎么用缓存路由省钱,最后谈成本治理的机制化。
9.6.1 Token 成本核算:从"总账单"到"单次对话成本"
成本工程的地基是核算粒度。只有一个"本月 API 账单 ¥48000"的数字,你什么都决策不了。要往下拆三层:
账单(月) → 场景(唤回/补偿/查询) → 模块(RAG / 主推理 / 护栏分类器) → 单次会话
¥48000 唤回 ¥22000 主推理 ¥15000 ¥0.031/次
检索嵌入 ¥3000
护栏小模型 ¥2500拆到这个粒度,优化才有的放矢——上例中"护栏小模型"占了 11%,你会立刻想到 9.2 的 Prompt Guard 是 22M 参数小模型、应该换更便宜的部署;"检索嵌入"提示高频查询该上缓存了。
核算的工程实现:在模型抽象层(所有模型调用的统一出口)记录每次调用的 model、input_tokens、output_tokens、成本(按厂商定价表折算),带上 trace 里的会话 ID 和场景标签(9.3 的 trace 结构直接复用)。成本字段是 trace 的天然属性,不是额外系统——这是三支柱设计的前瞻红利。
有了粒度,就能算出生产运营的核心数字:单次会话成本和月成本预估(按活跃用户 × 人均会话 × 单次成本)。这两个数字进 8.3 讲过的 SLA/报价讨论,也进本节的预算告警。
9.6.2 模型分层:小任务用小模型
同一个会话里,不同步骤对模型能力的要求天差地别:判断"用户这句话是不是要发券"是小分类任务,7B 级模型够用;"综合会员画像、活动规则、历史偏好,决定发券策略并给出理由"才需要旗舰模型。全链路旗舰模型,是成本工程里最大的浪费。
分层路由的设计:
| 任务 | 能力要求 | 模型档位 | 成本量级(示意) |
|---|---|---|---|
| 意图识别、输入分类 | 低 | 小模型(<10B) | 旗舰的 1/10-1/50 |
| 护栏判定(9.2) | 低 | 专用小模型(如 22M 的 Prompt Guard) | 近乎免费 |
| RAG 检索后的 rerank | 中 | 中档模型 | 旗舰的 1/5 |
| 主推理、多步决策、生成理由 | 高 | 旗舰模型 | 基准 |
| 输出格式化、摘要 | 中低 | 中小模型 | 旗舰的 1/10 |
路由规则写在模型抽象层的配置里(8.2/9.4/9.5 反复出现的配置化路由在此兑现),可以按场景、按置信度级联(先小模型,置信度低再升级大模型)、按用户分层(VIP 用户走旗舰、普通用户走中档——注意这条要过合规评审,服务分级要透明)。
级联路由(cascading)值得单独强调:先用便宜模型跑,拿不准的再升级,比按场景固定分层的省钱效率更高,代价是延迟多一跳。据 OpenAI 官方文档,其提示缓存对支持模型默认启用、复用前缀的输入 token 折扣最高可达 90%——搭配级联路由,"先小后大"的边际成本可以做到很低。
9.6.3 缓存路由:常见问题缓存 + 语义缓存
第二省利器是缓存。两层设计,风险特征完全不同:
常见问题缓存(精确匹配):高频、重复、答案稳定的查询(会员问券规则、督导问固定报表口径),按 prompt 哈希做键的精确匹配缓存。零正确性风险,命中率取决于业务长尾分布——零售会员场景里头部 20% 的查询通常占 60%+ 的量,值得做。TTL 按业务节奏设(规则类 24 小时,活动类随活动下线失效)。
语义缓存:不做精确匹配,而是把新请求向量化,在缓存库里找语义相似的历史请求,相似度超阈值直接返回历史答案。开源参考实现是 Zilliz 的 GPTCache(官方口号即"降低 LLM API 成本、提速响应"),与 LangChain 集成。但语义缓存是所有缓存里唯一会"自信地返回错误答案"的层——GPTCache 官方 README 自己就警告会出现误报(不该命中命中了)和漏报。生产使用要严守三条:阈值收紧(宁可漏不要错)、只缓存低风险场景(查询类可以,执行决策类禁止——发券决策绝不能吃缓存)、缓存命中要有标记(9.3 trace 里记 cache_hit 字段,出了问题能发现答案是缓存来的)。
请求 → L1 精确缓存(哈希命中,~ms)→ L2 语义缓存(相似度命中,~10ms)→ 模型调用
零风险 高风险,需阈值+场景+标记治理 成本基准第三层是厂商侧提示缓存(prompt caching):OpenAI、Anthropic 等都提供前缀缓存——系统提示、工具定义这类每个请求都重复的长前缀,命中缓存后输入成本大打折扣(OpenAI 官方文档称折扣最高 90%,Anthropic 缓存读取为其标准输入价的 0.1 倍)。这层的工程要点是前缀纪律:把稳定不变的内容(系统提示、工具定义)放在请求前部、把多变内容(用户消息)放后部,让前缀尽量长且稳定——反之,把时间戳或个性化内容放在系统提示开头,会击穿所有缓存。
9.6.4 成本治理机制化
优化做完不等于成本可控,要建四个机制:
- 预算告警:按场景设日/月预算,超阈值告警到责任人(9.3 已接线)。给"单会话成本"也设上限——一个会话死循环烧 token 是真实事故形态(9.2 的输入护栏 + 这里的话题终止机制双保险)。
- 成本周报:与 8.1 的质量周报并排发,成本趋势和成本结构(哪个场景哪个模型在花钱)。成本和质量同屏呈现,防止"为省钱砍质量"的暗箱操作(Klarna 的教训在企业内部同样成立——8.5 案例里"成本权重过高导致质量下降"就是内部治理失衡)。
- 变更成本评审:任何影响成本结构的变更(换模型、改 prompt 长度、调缓存)发布前跑一次成本预估。9.4 灰度门禁里的"成本差 > 30% 停止放量"就是这道评审的自动化版本。
- 单位经济模型:最终要把成本换算成业务语言——"每唤回一个会员的 AI 成本 ¥0.4,券成本 ¥20,唤回后 90 天复购毛利 ¥38"。客户不为 token 付费,为业务结果付费;单位经济模型是成本工程和业务价值的翻译层,也是续约谈判时你手里最有力的数字。
9.6.5 沙盘:青禾的成本月报与一次优化复盘
成本治理机制运转起来长什么样?给一份青禾的月报摘要(数字为沙盘设定):
月度成本报告(生产第 2 个月)
总成本 ¥41,200(环比 -14%) 单次会话 ¥0.028 月活用户 3,100
按场景: 唤回 ¥19,800 补偿 ¥8,400 查询 ¥9,300 其他 ¥3,700
按模块: 主推理 ¥24,500 检索嵌入 ¥5,200 护栏小模型 ¥4,900 rerank ¥6,600
缓存: 精确命中 31% 语义命中 12%(标记已开) 前缀缓存节省 ¥7,800
异常: 单会话最高 ¥1.9(一次死循环话题,已加话题终止上限)报告引出的一次优化复盘(这是成本周报的真正价值——发现问题):护栏小模型 ¥4,900 占了 12%,明显异常——排查发现 9.2 补的分类器对每条 RAG 检索文档都单独跑一次判定,而一个会话平均检索 3 篇文档、文档内容高度重复。优化:检索文档按内容哈希去重后再送分类器,护栏成本降到 ¥1,700。这类问题只有拆到模块粒度才看得见,总账单上它只是"成本略高"。
再算青禾的单位经济账,这是续约谈判的核心数字:AI 综合成本 ¥41,200/月,经 Agent 路径当月唤回会员 8,900 人,券核销后 90 天复购毛利估算 ¥3.4/人 × 8,900 ≈ ¥30,200——账面看还是亏的,但结合查询场景省下的人工工时(约 620 小时)后整体为正,且成本随缓存命中率和模型分层仍在逐月下降。第一个月就要求成本为正是大多数 AI 项目的错误预期——正确的叙事是"成本曲线向下、业务价值曲线向上,第 N 个月交叉",把两条曲线画给财务经理看,比一个月度盈亏数字诚实也更有说服力。
9.6.6 模型升级的成本-质量决策框架
成本工程的最后一道难题:模型厂商出了新版,要不要切?这不是纯技术决策,用一张四象限框架决定(横轴:新模型在评估集上的质量变化;纵轴:成本变化):
成本下降
│
甜区: 质量升+成本降 │ 降本机会: 质量平+成本降
(如新旗舰缓存折扣 │ (小模型版本升级替代中档)
覆盖主推理链路) │
─────────────────────┼───────────────────── 质量提升 →
风险升级: 质量降+ │ 价值升级: 质升+成本升
成本降(多为小模型 │ (旗舰换代,按单位经济
换代,先灰度评估) │ 模型算回报再决定)
│
成本上升决策流程固定四步:评估集离线跑分(第 7 章资产复用,质量轴的依据)→ 成本预估(按当前 token 分布折算新旧定价)→ 算单位经济变化(9.6.5 的模型更新一版,"每唤回一人的 AI 成本"变成多少)→ 9.4 模块化灰度切换(只切推理模块,A/B 对比采纳率兑现率,门禁把关)。
沙盘推演一次:某厂商旗舰新版在青禾评估集上 +2.1 个点、单 token 价格 ×1.8。切不切?按单位经济算:唤回场景主推理成本从 ¥0.019/次升到 ¥0.034/次,但 +2.1 个点建议准确率意味着误发券(每张 ¥20)减少——按每月 8,900 单算,误发减少的券成本超过推理增量成本,切,且只在唤回场景切、补偿和查询场景留在旧模型。成本工程不追求全局最优,追求每个场景各自最优——这正是模型抽象层路由配置存在的意义。
9.6.7 要点总结
- 核算是地基:账单→场景→模块→单次会话四层拆解;成本字段做进 trace,复用 9.3 三支柱。
- 模型分层:意图识别/护栏/rerank 用小模型,主推理才上旗舰;级联路由(先小后大)省钱效率最高,路由写配置。
- 缓存三层:常见问题精确缓存(零风险)、语义缓存(唯一会"自信返回错答案"的层——阈值收紧、禁用于执行决策、命中留标记)、厂商前缀缓存(注意前缀纪律:稳定内容在前)。
- 治理机制化:预算告警、成本与质量同屏周报、变更成本评审(灰度门禁自动化)、单位经济模型(客户为业务结果付费)。
参考资料
- Prompt caching | OpenAI API — OpenAI 官方提示缓存指南:默认启用、前缀匹配规则、缓存输入最高 90% 折扣。
- Prompt Caching — Anthropic Docs — Anthropic 官方缓存文档:显式缓存标记、写入与读取定价(读取为标准输入价 0.1 倍)。
- GPTCache — Zilliz 开源语义缓存 — 语义缓存的参考开源实现,README 含误报/漏报风险的官方说明。
- OpenAI Pricing Documentation — OpenAI 官方定价页,token 成本核算的定价基准来源。