1. 当老板问我"下季度AI要花多少钱"时,我为什么答不上来
"你们团队用AI一个月烧多少钱?"这个问题如果放在两年前,我大概能拍着胸脯给个准数。但现在,面对公司内部十几个业务线、几十个AI应用场景、上百个API Key,我只能说"大概……几万?"——然后看着老板皱起的眉头,心里发虚。
这不是我一个人的困境。最近一份覆盖数百家企业的AI成本调查显示,60%的企业承认自己无法准确预测AI相关支出。注意,不是"控制不住",而是"预测不了"。这两者之间有本质区别:控制不住是花超了,预测不了是你连花超多少都不知道。
我所在的团队从2023年开始系统性地接入大模型能力,从最初的几个内部工具,到现在的智能客服、代码辅助、文档摘要、数据分析助手,AI已经渗透到日常工作的毛细血管里。但与之配套的成本管理,说实话,一直处于"事后看账单吓一跳"的状态。这篇文章我想把这两年踩过的坑、试过的方案、以及最终沉淀下来的一套成本观测思路完整分享出来。如果你也在为AI账单头疼,或者正准备向管理层汇报AI预算,这些内容应该能帮你少走一些弯路。
核心问题其实就一个:AI的成本结构和传统IT成本完全不同。传统服务器你买多少台、开多久,账是清楚的。但AI的计费单位是Token——这个单位既看不见也摸不着,用量随业务波动剧烈,而且不同模型、不同任务、不同调用方式下的Token消耗差异极大。不理解Token的消耗逻辑,就永远做不好AI成本预测。
2. Token计费的本质:为什么AI账单像开盲盒
2.1 Token不是"字数",它的计算方式比你想的复杂
很多人第一次接触Token计费时,会下意识地把它等同于"字数"。比如"1个Token约等于0.75个英文单词"或者"1个汉字约等于1.5到2个Token"。这个粗略换算在估算时能用,但真正做成本预测时,误差会大到让你怀疑人生。
Token是模型处理文本的最小单位,它可能是半个词、一个标点、一个汉字,甚至一个emoji。不同模型用的分词器(Tokenizer)不一样,同一个句子在不同模型里的Token数可能差20%以上。我实测过一段500字左右的中文技术文档,在某个国产模型里是780个Token,在另一个模型里是920个Token。单次差异不大,但乘以每天几万次调用,就是真金白银的差距。
更关键的是,计费不是只算你输入的内容。大模型的API调用通常按"输入Token"和"输出Token"分别计价,而且输出Token的单价往往比输入贵2到4倍。这意味着一个让模型"写一篇800字文章"的请求,成本可能是一个"判断这句话是正面还是负面"请求的几十倍。
2.2 那些让成本失控的"隐形消耗"
在实际运营中,真正让AI成本变得难以预测的,是以下几类容易被忽略的消耗:
系统提示词的重复计费。为了让AI助手保持特定的人格和输出格式,我们通常会在每次请求里塞一大段系统提示词。这段提示词可能有三五百个Token,用户看不到,但每次调用都要计费。如果一个应用每天被调用一万次,光系统提示词就是几百万Token的消耗。我见过一个团队的系统提示词写了1200个Token,后来精简到400个,每月成本直接降了三分之一。
多轮对话的上下文累积。聊天类应用每一轮都要把之前的对话历史一起发给模型,否则模型会"失忆"。这意味着第10轮对话的输入Token可能是第1轮的10倍。如果不做上下文窗口管理,成本会随对话轮次指数级上升。
重试和失败请求。网络超时、模型返回格式错误、业务逻辑判断失败后的自动重试,这些请求同样消耗Token。在系统不稳定的时期,失败请求可能占总请求量的5%到15%。
开发和测试环境的消耗。开发同学调试一个功能,可能反复调用几十次API。测试环境跑一轮自动化测试,可能消耗掉生产环境一天的Token量。这部分消耗往往不被计入业务成本,但账单上实实在在。
2.3 不同调用模式的成本差异有多大
为了直观说明,我整理了一个实际项目中的对比数据。这是一个智能客服场景,处理用户关于订单状态的咨询:
| 调用模式 | 平均输入Token | 平均输出Token | 单次成本(相对值) | 说明 |
|---|---|---|---|---|
| 简单意图分类 | 150 | 10 | 1x | 只判断用户意图,不生成回复 |
| 标准问答 | 800 | 200 | 8x | 带系统提示词和知识库片段 |
| 多轮对话(第5轮) | 3500 | 300 | 25x | 累积了前4轮对话历史 |
| 复杂任务规划 | 2000 | 1500 | 40x | 需要模型输出结构化方案 |
这张表解释了一个现象:为什么业务量只增长了20%,AI账单却翻了一倍。因为新增的业务场景可能恰好是高Token消耗的类型,或者用户使用深度增加了,多轮对话占比上升了。
3. 我们试过的三种成本观测方案,哪种真正管用
3.1 方案一:直接看云厂商账单——最省事,但最没用
最开始我们的做法很简单:每月初看云厂商发来的账单,按项目维度拆分一下,发给各业务线。这个方案的问题在于滞后性和颗粒度。
账单是月结的,等你看到数字时,钱已经花完了。而且云厂商的账单通常只按API Key或项目维度汇总,你只知道"智能客服项目花了8000块",但不知道这8000块里,有多少是系统提示词消耗的,有多少是失败重试消耗的,有多少是某个异常用户刷出来的。没有这些信息,优化就无从下手。
提示:如果你的AI支出占总IT预算比例还很低(比如低于5%),看账单确实够了。但一旦超过10%,或者管理层开始关注这块,就必须上更细的观测手段。
3.2 方案二:自建Token日志系统——最准确,但最费人
痛定思痛之后,我们决定自建一套Token消耗日志系统。核心思路是在所有调用大模型API的代码路径上埋点,记录每次请求的以下信息:
- 请求时间、业务线、应用名称、用户ID
- 使用的模型名称和版本
- 输入Token数、输出Token数(从API返回的usage字段获取)
- 请求类型(正常业务、重试、测试、系统提示词等)
- 业务上下文(比如对话轮次、任务类型)
这些数据写入日志系统后,再通过定时任务聚合到数据仓库,最后用BI工具做可视化。这套方案确实解决了颗粒度问题,我们能清楚地看到每个业务线、每个应用、甚至每个功能点的Token消耗。
但代价也不小。首先,需要在所有调用路径上统一封装SDK,确保埋点不遗漏。其次,日志量很大,存储和查询成本不低。最后,需要专人维护这套系统,定期检查数据质量、更新看板、响应业务方的查询需求。我们投入了大约0.5个人力来维护这套系统,对于中小团队来说,这个成本需要权衡。
3.3 方案三:网关层统一拦截——平衡之选
后来我们调整了架构,把所有大模型调用统一收敛到一个内部网关上。这个网关负责:
- 统一鉴权:所有业务线通过网关调用模型,不再各自持有API Key
- Token计量:在网关层解析API返回的usage信息,统一记录
- 配额管理:为每个业务线设置日/月Token配额,超限自动降级或告警
- 模型路由:根据业务需求自动选择性价比最高的模型
这个方案的好处是观测和管控合一。网关层天然能看到所有流量,不需要在每个业务代码里埋点。而且可以在网关层做实时拦截,比如某个业务线用量突增时立即告警,而不是等到月底看账单。
我们用的技术栈是OpenResty(基于Nginx)做网关,Lua脚本做Token解析和计量,数据写入时序数据库,Grafana做看板。这套方案的人力投入大约0.2个人力,比自建日志系统轻不少,但覆盖度和实时性都更好。
| 方案 | 准确性 | 实时性 | 人力投入 | 适用场景 |
|---|---|---|---|---|
| 云厂商账单 | 低 | 月级 | 几乎为零 | AI支出占比低,仅需总量 |
| 自建日志系统 | 高 | 小时级 | 0.5人力 | 大型团队,需要深度分析 |
| 网关统一拦截 | 高 | 秒级 | 0.2人力 | 中大型团队,需要管控合一 |
4. 把Token消耗拆开看:哪些环节在偷偷吃预算
4.1 系统提示词的"沉默成本"
前面提到过系统提示词的重复计费问题,这里展开说说我们是怎么优化的。
我们有一个代码辅助工具,系统提示词原本写了大约900个Token,内容包括角色设定、输出格式要求、代码规范、安全约束等。后来我们做了一次精简:
- 把"你是一个专业的代码助手,请遵循以下规范……"这类客套话删掉,直接给约束条件
- 把可以用代码校验的格式要求从提示词里移除,改在后处理阶段用正则表达式处理
- 把安全约束从提示词移到模型微调阶段(如果有条件的话)
最终系统提示词压缩到280个Token,单次调用成本降低约40%。这个优化一次性投入大约两天工作量,但持续产生收益。
注意:精简系统提示词时一定要做充分的回归测试。我们曾经删掉了一条关于"不要输出Markdown格式"的约束,结果模型开始在各种回复里加粗体,导致下游解析全部失败。
4.2 上下文窗口管理的艺术
多轮对话的成本控制,核心在于决定什么时候丢弃历史信息。我们的策略是:
- 滑动窗口:只保留最近N轮对话,N根据业务场景设定。客服场景N=5,创作场景N=10。
- 摘要压缩:当对话轮次超过窗口大小时,用模型对早期对话生成摘要,把摘要作为新的上下文开头。摘要的Token数通常只有原文的10%到20%。
- 关键信息提取:对于订单号、用户ID这类结构化信息,不放在对话历史里,而是单独提取出来,在需要时注入到系统提示词中。
这套组合拳打下来,我们一个客服机器人的平均单次对话成本从0.12元降到了0.04元,降幅超过60%。
4.3 模型选型的性价比博弈
不是所有任务都需要最贵的模型。我们内部把任务按复杂度分为三档:
- 简单任务:意图分类、情感判断、关键词提取。用最便宜的小模型,成本可以忽略不计。
- 中等任务:标准问答、文档摘要、代码补全。用中等价位的模型,平衡质量和成本。
- 复杂任务:方案规划、长文创作、复杂推理。用旗舰模型,但严格控制调用量。
关键是要建立一套自动路由机制。我们在网关层做了一个简单的分类器,根据请求的特征(输入长度、任务类型、业务线配置)自动选择模型。这个分类器本身也用小模型实现,成本极低。
实测下来,通过模型路由,整体成本降低了约35%,而业务方对输出质量的投诉没有明显增加。
5. 从"月底惊吓"到"实时可见":我们的成本看板长什么样
5.1 看板的核心指标设计
一个有效的AI成本看板,不需要花里胡哨,但必须包含以下核心指标:
总量指标:
- 当日/当月累计Token消耗和费用
- 环比昨日/上月同期的变化率
- 按业务线、应用、模型的Top N排名
效率指标:
- 平均每次请求的Token消耗
- 输入Token与输出Token的比例
- 失败请求占比及其Token消耗
- 缓存命中率(如果做了提示词缓存)
预警指标:
- 当日消耗达到月度预算的百分比
- 用量突增检测(比如某业务线1小时内消耗超过过去7天均值的3倍)
- 配额使用率
5.2 告警机制的设计
看板是给人看的,但人不会一直盯着看板。所以告警机制必不可少。我们设置了三级告警:
- 黄色预警:当日消耗达到月度预算的80%,或某业务线用量突增50%。通知业务线负责人。
- 橙色预警:当日消耗达到月度预算的100%,或某业务线用量突增200%。通知技术负责人和业务线负责人。
- 红色预警:当日消耗达到月度预算的150%,或检测到异常调用模式(比如某个API Key在短时间内大量调用)。自动触发限流,并通知管理层。
告警渠道我们用企业微信机器人,消息里直接带上看板链接和相关数据,方便快速定位问题。
5.3 从数据到行动:我们实际做过的优化
看板建好之后,我们发现了几个之前完全没意识到的问题:
问题一:某个内部工具的测试环境一直在调用生产API。开发同学为了方便,测试环境直接连了生产API Key,每天产生大量无效消耗。修复后每月节省约2000元。
问题二:一个定时任务在失败后无限重试。由于没有设置重试上限,某个任务在模型返回格式错误后一直重试,一晚上消耗了上百万Token。修复后增加了重试次数限制和退避策略。
问题三:某个业务线的系统提示词里包含了一个巨大的JSON Schema。这个Schema有2000多个Token,每次调用都要传。后来改成只在需要结构化输出时才传,平时用简版提示词。每月节省约5000元。
这些问题的共同点是:不看数据根本发现不了。它们不会导致账单暴涨到引起注意的程度,但会持续地、默默地消耗预算。
6. 给正在做AI成本管理的同行几条实在建议
6.1 先搞清楚你的计费模式
不同云厂商、不同模型的计费方式差异很大。有的按Token计费,有的按调用次数计费,有的按订阅制包月。有的对输入和输出分别计价,有的统一计价。有的有免费额度,有的有阶梯折扣。
在做任何成本管理之前,先把你的计费模式搞清楚。我见过一个团队一直以为自己是按调用次数计费,结果优化了半天调用次数,发现账单是按Token算的,白忙一场。
6.2 不要追求"精确到分",但要"心中有数"
AI成本预测不可能做到传统IT成本那种精确度。业务量的波动、模型输出的不确定性、用户行为的随机性,都让精确预测变得不现实。但你可以做到"心中有数":
- 知道每个业务线的大致消耗量级
- 知道成本的主要构成(哪个应用、哪个模型、哪类任务)
- 知道异常波动的检测方法
- 知道优化的大致方向
做到这四点,当老板问"下季度AI要花多少钱"时,你至少能给出一个有依据的区间,而不是支支吾吾。
6.3 把成本意识植入开发流程
成本管理不是运维团队一个人的事。我们在内部推行了几个做法:
- 新应用上线前必须做成本评估:估算日均调用量、平均Token消耗、月度成本,超过一定阈值需要技术负责人审批。
- 代码审查时关注Token消耗:比如系统提示词是否过长、是否有多余的上下文传递、是否有无限重试的风险。
- 定期做成本复盘:每月一次,各业务线一起看数据,分享优化经验。
这些做法一开始会有人觉得麻烦,但坚持几个月后,大家会形成习惯。毕竟,谁也不想自己的项目因为成本问题被砍掉。
6.4 留出缓冲,但不要留太多
做预算时,建议在预估基础上留20%到30%的缓冲。AI业务的不确定性太高,不留缓冲容易超支。但也不要留太多,否则预算会显得虚高,管理层可能会质疑你的专业判断。
我们的做法是:基础预算按过去三个月的平均值乘以1.2,再加上新业务的预估增量,最后整体上浮15%作为最终预算。这个公式不完美,但比拍脑袋靠谱。
6.5 关注新技术带来的成本变化
大模型领域的技术迭代非常快。新的模型架构、新的推理优化技术、新的缓存机制,都可能大幅降低Token成本。比如提示词缓存(Prompt Caching)技术,对于系统提示词固定的场景,可以节省大量输入Token费用。
保持对新技术的好奇心,定期评估是否值得迁移。但也不要盲目追新,迁移本身也有成本。我们的原则是:当新技术能带来30%以上的成本降低,且迁移风险可控时,才考虑切换。
7. 一个真实的成本优化案例:从月均1.2万降到6000
最后分享一个我们做过的完整优化案例,把前面的方法论串起来。
背景:一个内部知识问答机器人,服务约500名员工,月均Token费用约1.2万元。
第一步:建立观测。通过网关层记录每次调用的Token消耗,按用户、按问题类型、按时间段分析。
第二步:发现问题。
- 系统提示词800个Token,每次调用都传,占总输入Token的40%
- 知识库检索返回的文档片段平均1500个Token,但很多片段与问题无关
- 20%的请求是重复问题,没有做缓存
- 输出Token平均400个,但很多回答过于冗长
第三步:逐项优化。
- 系统提示词精简到300个Token,节省约25%输入成本
- 优化检索算法,把返回片段从平均1500个Token降到800个Token,节省约20%输入成本
- 对高频问题做答案缓存,命中率约15%,节省约15%总成本
- 在提示词里要求"回答控制在200字以内",输出Token降到平均250个,节省约35%输出成本
第四步:验证效果。优化后月均费用降到约6000元,降幅50%。用户体验方面,回答质量没有明显下降,反而因为回答更简洁,满意度略有提升。
这个案例说明:AI成本优化不需要什么黑科技,把基本功做好就能省下一半。关键是你要能看到数据,知道钱花在哪里了。
8. 关于AI成本预测这件事,我的真实体会
做了两年AI成本管理,我最大的体会是:这件事没有终点,只有持续迭代。模型在变、业务在变、计费方式在变,你的成本管理方案也必须跟着变。
但有些底层逻辑是不变的:理解Token的消耗机制、建立细粒度的观测能力、把成本意识植入团队文化、持续寻找优化空间。把这四件事做好,60%难预测的问题至少能解决一大半。
至于剩下的不确定性,接受它。AI业务本身就是快速变化的,成本有波动是正常的。只要你能在波动发生时快速定位原因、快速响应,就已经比大多数团队做得好了。
如果你正在搭建AI成本管理体系,我的建议是:从网关层统一拦截开始,先看到数据,再谈优化。不要一上来就追求大而全的系统,先用最小可行方案跑起来,然后在实践中逐步完善。我们也是从一张简单的Excel表格开始的,慢慢才演进到现在的看板体系。
这个领域变化太快,今天的最佳实践可能明天就过时了。保持学习,保持开放,和同行多交流,比任何方法论都重要。