上个月有个生产服务的 AI 推理账单环比涨了两倍多,排查下来发现不是模型变贵了,而是「调用结构」出了问题:简单分类任务跑在旗舰模型上、历史上下文每轮全量重发、同一句系统提示词被反复计费。这篇文章把我们用一周做的四步优化记下来,供同样在被账单折磨的同学参考。
一、先让成本「可见」:不改动业务代码也能埋点
优化前最大的问题是「看不见」。我们在调用层包了一层中间件,每次请求记录模型名、token 数、来源功能和耗时,汇总到看板。关键是不动业务逻辑,只在外层包一下。
import time
from openai import OpenAI
def traced_chat(client: OpenAI, model: str, messages, **kw):
t0 = time.time()
resp = client.chat.completions.create(model=model, messages=messages, **kw)
usage = resp.usage
# 落库:模型 / 输入token / 输出token / 来源 / 耗时
log_cost(
model=model,
prompt=usage.prompt_tokens,
completion=usage.completion_tokens,
source=kw.get("tag", "unknown"),
latency=time.time() - t0,
)
return resp
打点后按「模型 / 场景 / 团队」三个维度拆,我们立刻看到 60% 的费用集中在 20% 的请求上,而且多半是低难度任务。
二、把模型「分层」:便宜的干粗活,旗舰只做难活
所谓分级路由,就是按任务难度把请求分到不同档位。两种落地方式
TIERS = {"easy": "lite-model", "mid": "standard-model", "hard": "flagship-model"}
def route(task_difficulty: str) -> str:
return TIERS.get(task_difficulty, TIERS["mid"])
# 级联兜底:先让便宜模型答,置信度不足再升级
def cascaded_chat(text):
for tier in ["easy", "mid", "hard"]:
r = traced_chat(client, route(tier), [{"role": "user", "content": text}])
if confident_enough(r): # 业务自定的置信判断
return r
return r # 最终兜底仍是旗舰
静态路由配置简单、可预测,适合场景稳定的团队;级联兜底对大多数请求在第一层就结束,综合成本比全量旗舰低一大截。行业里常见的经验是:分级之后七成以上的请求可以由中小模型承接,而真正需要旗舰的那一成多请求一次都没被降档。
三、别为同一段提示词重复付费:缓存的正确姿势
系统指令、工具定义、知识库片段这类固定前缀,每次调用都重发等于反复为同一段文字买单。Prompt 缓存让这段只算一次,后续命中按折扣价读。
工程上只有一条铁律 静态内容放最前,动态内容放最后。常见静默失效有三种
- 前缀里混了日期、用户 ID 等动态值,一个字符不同整段缓存失效;
- 可缓存内容没过门槛(多数厂商要求 ≥1024 token);
- 请求太稀疏,缓存 TTL(常见 5 分钟)内没二次命中就被清掉。
语义缓存一定要按租户隔离,否则 A 客户的回答会被 B 客户取到。
四、一次真实测算(数字仅作量级参考)
假设日均 12 万次调用,平均输入 800、输出 200 token,取公开区间中位价
| 方案 | 单次成本 | 日成本 | 月支出 | 对比基线 |
|---|---|---|---|---|
| 全量旗舰 | 约 0.018 元 | 约 2160 元 | 约 6.5 万 | 基线 |
| 6:3:1 分级路由 | 约 0.006 元 | 约 720 元 | 约 2.2 万 | 降约 66% |
| 路由 + 缓存(再省 30%) | 约 0.004 元 | 约 500 元 | 约 1.5 万 | 降约 77% |
量级很清楚:同样业务量,账单能差四倍以上,而用户感知的效果基本不变,因为真正需要旗舰的那部分请求一次都没被降级。
以上为示例测算,模型定价变动频繁,请以各厂商官方定价页为准,并用自身真实调用结构重算。
五、统一接入层帮我们少踩坑
随着模型越接越多,市场上出现了把调用收拢到一个兼容 OpenAI 风格的入口后面的AI大模型聚合平台。通过这类平台,企业业务代码只跟一个接口对话,底层换哪家模型在网关层做,应用侧无感。顺带把密钥集中、账单按业务线归因、故障自动切换这三件事也一并解决了。
类似能力的平台里,快快AI Hub 把 DeepSeek、豆包、通义千问、Kimi、智谱 GLM、腾讯混元、MiniMax等国内主流模型以及最新的AI模型都聚合到同一接口,企业基本不用改调用逻辑就能切换并统一核算用量与成本。具体模型覆盖、可用性与资费以官方最新说明及合同为准。
几个常见疑问
Q:预算低是不是该全用最便宜的模型?
不一定。复杂推理用轻量模型会因反复返工更贵。正确做法是分级:简单任务走轻量,多步推理走旗舰。
Q:模型迭代这么快,刚接完就过时怎么办?
统一入口的价值就在这:业务只认一个接口,模型在网关层切,应用侧不用为每次更新重写对接逻辑。
Q:缓存和路由先做哪个?
先让成本可见(打点),再做路由砍掉明显的大材小用,最后开缓存。缓存一旦生效是永久性的省,但前提是前缀结构先理清楚。
数据来源与说明:本文涉及的价格与降幅综合自公开行业评测与厂商定价页,仅供量级参考;具体选型请以官方最新说明为准。