乐于分享
好东西不私藏

企业 AI 降本的正确姿势

企业 AI 降本的正确姿势

在企业或团队使用 AI 的过程中,真正需要解决的问题,并不是简单地寻找更便宜的 token,而是如何在合规、稳定、可控的前提下,降低每一次 AI 调用的综合成本

这里所说的 token 流量池,并不是通过购买大量廉价账号、倒卖额度,或者绕过平台限制来降低成本。这类方式短期看似便宜,但存在封号、数据泄露、服务不稳定和合规风险。

更合理的做法,是搭建一个统一的 AI API 网关,把团队内所有 AI 请求集中管理起来,实现统一接入、统一计费、统一路由、统一缓存和统一限额。这样,AI 调用不再是零散、不可控的单点请求,而是进入一个可以调度、监控和优化的模型资源池。

这个流量池的核心能力包括:

集中采购:统一管理 GPT、Claude 等云端模型额度模型路由:根据任务难度自动选择本地、内网或云端模型缓存复用:减少重复请求,降低 token 浪费批处理:把非实时任务集中异步执行,降低调用成本用量治理:按用户、项目、团队统计成本并设置预算
因此,降低 AI 成本的关键不是单纯追求“更便宜的 token 单价”,而是通过模型路由、缓存、批处理和用量治理,降低每一次任务的总成本。最终目标是:让简单任务用低成本模型完成,让复杂任务才调用 GPT 或 Claude,把高级模型资源用在真正值得的地方。

推荐架构

业务系统 / 用户   你的 AI Gateway / Token Pool   ├─ 鉴权:用户/项目/部门 key   ├─ 配额:每日/月度预算QPSTPM   ├─ 路由:按任务选择模型   ├─ 缓存:prompt cache + 结果缓存   ├─ 批处理:低优先级任务进 Batch   ├─ 监控:tokens成本成功率延迟   OpenAI / Anthropic / Gemini / 本地模型 / 私有模型

1. 先做统一网关,不要把供应商 API Key 发给业务方

网关负责把不同业务的调用汇总起来。每个业务方只拿内部的 app_key,真正的 OpenAI、Gemini、Anthropic key 只放在服务端。

需要记录这些字段:

tenant_idproject_iduser_idmodelinput_tokenscached_input_tokensoutput_tokensreasoning_tokenslatency_msprovidercost_usdrequest_typecache_hitcreated_at

这样才能知道钱花在哪里,而不是月底看到账单才发现某个功能烧钱。

2. 路由策略:别所有请求都上最贵模型

把请求分层:

场景
推荐策略
分类、标签、摘要、格式化
小模型优先
代码生成、复杂推理、法律/金融分析
高级模型
批量离线任务
Batch API
不急的后台任务
Flex / 低优先级队列
高频相似问题
缓存优先
长文档问答
RAG 检索后只传相关片段

比如 OpenAI 当前价格页显示,GPT-5.5 输入 $5.00/1M tokens、输出 $30.00/1M tokens;GPT-5.4 mini 输入 $0.75/1M tokens、输出 $4.50/1M tokens。价格差异很大,所以“能用小模型解决的任务不要上旗舰模型”是最直接的省钱方式。

3. 建“模型路由器”

可以先用简单规则,不一定一开始就做复杂 ML:

def route(task):    if task.is_batch:        return "batch:gpt-5.4-mini"    if task.type in ["classification""extract_json""rewrite""short_summary"]:        return "gpt-5.4-mini"    if task.type in ["complex_reasoning""code_review""agent_planning"]:        return "gpt-5.5"    if task.priority == "low":        return "flex:gpt-5.4-mini"    return "gpt-5.4-mini"

更省钱的方式是“两段式”:

小模型先答 → 自检置信度低/失败 → 升级大模型

这样 70% 到 90% 的简单流量可以被便宜模型吃掉。

4. 把 Prompt Cache 当成真正的“流量池红利”

如果你的系统提示、工具定义、JSON schema、长规则经常重复,就应该固定在 prompt 前缀里。OpenAI Prompt Caching 要求 prompt 至少 1024 tokens 才能产生缓存命中,并且官方建议把静态/重复内容放在前面,把动态用户内容放在后面。

推荐模板:

[固定系统提示][固定业务规则][固定输出 JSON schema][固定工具定义]---[用户本次输入][本次上下文]

不要这样写:

[用户本次输入][固定系统提示][固定业务规则]

因为缓存看的是重复前缀,变量内容放前面会破坏缓存。

另外,Prompt Cache 不跨组织共享,只有同一组织成员才能访问相同 prompt 的缓存;所以如果你把流量拆到很多不同组织/账号,反而会降低缓存命中率。

5. 离线任务全部走 Batch

批量摘要、数据清洗、批量分类、批量 embedding、离线评测,不要走实时接口。OpenAI Batch API 官方说明是异步处理,成本比同步 API 低 50%,有单独更高的 rate limit,并且 24 小时内返回。

适合 Batch 的任务:

日报/周报生成商品描述批量改写客服工单批量分类数据集标注embedding 批量生成模型评测内容审核

不适合 Batch 的任务:

聊天机器人实时回复用户正在等待的页面交互式 Agent实时语音

6. 做两层缓存:结果缓存 + Prompt Cache

Prompt Cache 是供应商侧的;你自己还应该做业务结果缓存。

结果缓存

对确定性任务很有效:

输入文本 + 任务类型 + 模型 + prompt版本 → hash

命中后直接返回结果,不再调用模型。

适合缓存:

翻译摘要分类关键词提取JSON 抽取FAQ 问答

不适合缓存:

强实时问题个性化强的问题涉及最新数据的问题需要随机创意的问题

7. 强制输出变短

输出 token 往往更贵。比如 OpenAI 价格页中 GPT-5.5 输出价格是输入价格的 6 倍,GPT-5.4 mini 输出价格也是输入价格的 6 倍。

所以网关层要加硬限制:

{  "max_output_tokens": 800,  "verbosity": "low",  "format": "json",  "no_explanation_unless_needed": true}

很多业务不需要“解释过程”,只需要结构化结果。

8. 做预算和熔断

网关必须有这些控制:

每个 tenant 月预算每个用户日限额每个功能单次最大 token异常 prompt 拦截模型降级超预算停用低优先级任务排队失败重试上限

比如:

项目 A:每月 $500客服机器人:每天 $30内部测试环境:只允许 mini 模型批处理任务:只能夜间跑单次请求超过 100k tokens 需要审批

9. 关键省钱公式

你可以用这个公式给每个请求算成本:

成本 =输入 tokens × 输入单价+ 缓存输入 tokens × 缓存输入单价+ 输出 tokens × 输出单价+ 工具调用成本+ 向量库/存储/检索成本

然后按功能聚合:

cost_per_usercost_per_conversationcost_per_ticketcost_per_documentcost_per_successful_task

最终不要只看 token 单价,要看:每解决一个业务问题花多少钱

10. 不建议做的事。

共享个人账号池盗刷/租赁来路不明 API key绕过供应商 rate limit把用户请求混到多个不可信中转商无日志、无审计、无预算控制只按“token 单价”选模型
这些短期看便宜,长期风险是封号、数据泄露、账单失控和服务不稳定。

第一版不用复杂,做这 6 个模块就够:

1. API Gateway2. 内部 app_key 鉴权3. 模型路由规则4. token/cost 计费表5. Redis 结果缓存6. Batch 队列

技术栈可以是:

Nginx / FastAPI / Node.jsPostgreSQL:账单与日志Redis:缓存与限流Queue:Celery / BullMQ / KafkaPrometheus + Grafana:监控

总的来说,统一入口 + 小模型优先 + 重复前缀缓存 + 离线 Batch + 输出限长 + 配额熔断。这比单纯找便宜 key 更稳,也更容易把 AI 成本降下来。