1. 隐性成本阻击战:为什么企业 AI 系统突然“养不起”了?
这两年我参与了不少企业级 AI 落地项目,发现一个特别普遍的现象:大家一开始看中的都是模型效果,真正跑起来之后,才发现账根本不是这么算的。
很多公司在立项时,评估的是 API 调用单价、GPU 资源占用、训练时长,这些成本看得见摸得着。但系统上线三个月之后,真正吃掉利润的,往往是那些“看不见”的地方——某个模型在低峰时段空转、某个节点因为上下文过长反复触发重试、某个用户的恶意请求把配额打满、某个不稳定的模型悄然回流导致整体准确率下滑。我见过一个很有意思的案例,某团队上线了一个客服助手系统,初期模型响应快、回答质量在线,老板很满意。结果半年后,账单直接翻了三倍。排查下来,罪魁祸首是多模型路由策略没有做细粒度监控,大量简单请求被路由到了旗舰级大模型上,每天都在“大炮打蚊子”;一小部分上游服务的异常延迟又被重试机制放大,产生了大量无效请求。这种浪费,靠人工在后台翻日志是根本发现不了的。
这就是企业级 AI 系统的隐性成本问题。它不像 GPU 算力那样直观,而是隐藏在系统的每个环节里——模型调用、数据流转、路由决策、缓存命中率、超时重试策略,每一项单独看都“没多少钱”,合在一起却能决定一个项目的成败。
我写这篇内容,就是想把我自己在这几年实战中积累的经验,尤其是关于可观测性体系建设、多模型路由策略、以及基于 OpenTelemetry 的生产级遥测方案,完整地拆开讲一遍。适合正在负责 AI 系统架构、或者是已经在用大模型做应用但觉得成本失控的团队参考。不管你现在用的是开源模型还是闭源 API,这套方法论基本都能直接用。
2. 成本失控背后的技术真相:可观测性问题
2.1 传统的监控指标为什么失效了
先说说为什么传统监控体系在 AI 系统面前会失灵。普通 Web 服务的监控,核心关注的是 QPS、响应时间、错误率、资源利用率,这套体系很成熟。但 AI 系统的调用链路是非确定性的,它不像一个固定逻辑的接口,每次请求结果都大致相同,AI 系统的每次调用都可能因为输入差异、模型版本调整、上下文变化而产生完全不同的行为。
具体到指标层面,传统监控有三块明显的盲区:
逻辑响应质量不可见。常规监控能告诉你接口返回了 200,但回答得准不准确、有没有偏离主题、是不是一句敷衍的“我不理解你的意思”,监控是看不到的。这导致一个很尴尬的场景:系统一直在“正常服务”,用户却在持续流失。
成本消耗无法按请求拆分。同一个模型,处理 10 个 token 和处理 10 万 token 的输入,成本差着三个数量级,但传统的请求计数完全无法体现这个差异。没有 token 级别的成本追踪,你就根本答不出“每个请求到底花了多少钱”。
多模型路由的决策过程不可知。系统里有多个模型,每个请求可能是由不同的策略路由到不同模型的。如果不对路由规则做记录,你就无法知道流量是怎么分配的、某个模型被调用了多少次、这些调用是否合理。
我见过最典型的案例是:某团队在生产环境接入了三个模型,分别负责简单问答、复杂推理和情绪识别。上线一周后,财务一看账单,发现旗舰模型的调用量比另外两个加一起还多两倍。查了半天原因,发现是路由策略的逻辑写反了,把本来该进轻量模型的请求全导向了旗舰模型。这种问题,如果你的监控体系里没有请求级的路由记录,根本不可能在第一时间发现。
所以,企业级 AI 系统的成本治理,第一步不是“省钱”,而是“看清账”。看清每一笔请求从哪里来、去了哪个模型、消耗了多少 token、返回了什么质量的结果。这就必须引入一套针对 AI 调用链路的可观测性体系。
2.2 构建 AI 可观测性的三个核心维度
基于实战经验,我把 AI 系统可观测性拆解为三个核心维度,这三个维度缺一不可:
调用链追踪。记录一次完整请求从入口到模型调用再到返回的全过程,包括每一步的时间消耗、Token 消耗、模型路由决策、重试次数。这个维度的意义在于:你能准确判断一个慢响应到底慢在哪个环节。是模型推理本身慢,还是上游数据准备环节卡住了,还是路由等待超时了。
成本归属分析。把 Token 消耗、API 调用费用、GPU 占用等成本数据,按照请求、用户、频道、功能模块等维度打上标签,形成成本账单。这样财务在复盘时可以直接回答“哪个功能消耗了多少预算”,而不是拿着一张总账单面面相觑。
质量评估指标。构建自动化质量评估体系,从回答的相关性、完整性、一致性、安全合规性等维度给每次响应打分。不需要人工逐条看,而是用评估模型自动判定,把质量分数和调用成本做关联——这样才能发现某个便宜模型实际质量差到“用就是浪费钱”的真相。
这三个维度,恰好对应了成本治理的三个问题:钱花在哪、花得值不值、能不能少花。
3. 多模型路由:省钱的第一道闸门
3.1 从“单模型走天下”到“多模型策略路由”
很多刚开始做 AI 应用的团队,喜欢用一个最强的模型包办所有场景。原因是简单,一个 API 接进去就完事。但这种做法在经济性上是灾难的——你让旗舰模型去回答“今天天气怎么样”,就好比开着一台大型机去超市买菜。
多模型路由的核心思路,就是根据请求的复杂度、领域类型、上下文长度、预期输出格式,动态选择性价比最优的模型。一个典型的生产级路由系统,至少会维护两条模型通道:
一条是轻量通道,负责处理简单查询,比如 FAQ 问答、意图明确的常用指令、固定格式的信息抽取。这个通道的模型参数量小、速度快、成本低,正常情况下能响应大流量请求。另一条是重量通道,负责处理复杂推理、长上下文理解、代码生成、多步分析这类高难度任务。只有路由判定和简单模型确认无法满足时,才会走这条通道。
这里关键是“路由判定”怎么做。早期方案是简单的规则匹配——根据触发词、关键词映射到固定模型,这种方案维护成本极高,效果也差。生产级方案是用一个路由模型来做动态判断,它本身可以是一个中等规模的模型,熟悉各个下游模型的能力边界,每次请求进来时,路由模型根据请求内容和下游模型的实时状态(延迟、错误率、成本),输出一个路由决策。
我实际经验下来,路由模型的判断准确率能到 90% 以上,相比硬编码规则要好一个档次。剩下的模糊地带,可以在路由判断不确定时,把请求同时分发到两个模型做竞速或质量对比,取最优结果返回。
3.2 多模型路由的降本效果:算一笔账
光说思路没有体感,我算一笔实际账目给你看。假设一家公司每天处理 100 万次请求,其中简单请求占 80%,复杂请求占 20%。
- 如果全部走旗舰模型,假设平均每次调用成本是 0.01 元,每日成本是 1 万元。
- 如果做了多模型路由,简单请求走轻量模型(单次成本 0.001 元),复杂请求走旗舰模型(单次成本 0.01 元),每日成本变成 80 万 × 0.001 + 20 万 × 0.01 = 0.8 万 + 0.2 万 = 1 万元。
咦,这么算下来差不多?关键在平均成本。在真实场景里,同样长度的文本,旗舰模型的价格可能是轻量模型的 20 到 50 倍。刚才我举的例子差距只用了 10 倍,实际场景中按 30 倍算:
- 全走旗舰:100 万 × 0.01 = 1 万元/天。
- 多模型路由:简单请求单次 0.0003 元,复杂请求单次 0.01 元,80 万 × 0.0003 + 20 万 × 0.01 = 240 + 2000 = 2240 元/天。
**每天节省 7760 元,一个月就是 23 万。**这还只是按 100 万次请求算的,实际规模更大的系统,省下来的钱会非常可观。这也是我一直主张的:AI 应用的成本控制,不需要靠牺牲质量来实现,只需要把合适的请求放到合适的模型上。
3.3 路由决策的工程实现思路
关于路由的具体实现,我分享一套可以落地的思路:
在请求进入网关时,提取关键信息,包括用户输入文本、对话上下文长度、预期输出格式、用户业务线标识、当前各模型的健康状态。网关将这些信息拼接成路由模型的输入,路由模型返回两种可能:直接指定的目标模型;或者候选模型列表及置信度。
拿到决策后,网关执行转发。这里有两个工程细节值得注意:
超时和降级机制。如果路由模型本身响应超时,绝不能阻塞业务。此时应该走默认路由策略——按用户分群或者请求类型映射到备用模型。要保证路由环节的故障不会拖垮整个链路。
路由结果可观测。每一次路由决策都要记录路由模型的输入特征、输出决策、备选模型及置信度、真实执行耗时。只有这些数据完整,后续才能复盘“这条请求为什么去了贵的模型”,进而反推优化路由策略。
我踩过的一个坑是:路由模型本身调用的也是付费 API,有些时候路由决策消耗的 token 费用甚至超过了它节省的成本。所以路由模型要尽量选择参数量小、价格极低的模型,并且对路由模型的请求要反复做 prompt 精简。比如只让路由模型输出一个 JSON,包含模型编号和置信度,不要让它输出大段分析文字。路由环节每一分钱都要花在刀刃上,这是隐性成本治理里很容易被忽略的点。
4. OTel 生产级遥测:让每一笔开销都无所遁形
4.1 为什么选 OpenTelemetry 而不是自研监控
明确了为什么要做可观测性、怎么省钱之后,接下来的问题是“用什么工具做”。
我在早期项目里用过自研埋点方案——在代码里手动打日志,上报到自建的数据平台。当时觉得简单直接,但越做越痛苦:埋点代码散落在各个模块里,格式不统一,排查问题时要来回对日志格式,新同事接手时根本看不懂,更致命的是,调用链路的追踪非常难做,需要自己实现一个 trace 系统,工作量巨大。
后来切换到 OpenTelemetry,体感完全不同。它是一个开源的可观测性框架,提供了统一的 API、库和代理,用来采集指标、日志和链路追踪数据。最大的优势在于生态标准化——你只需要接入一次 OTel SDK,后续各种库(包括大模型调用库)的插件都能自动生成可观测性数据,不用为每个组件单独写埋点代码。
在企业级场景中,OTel 的另一个优势是厂商中立。不管你后端用的是开源的 Jaeger、Prometheus,还是商业化的监控平台,OTel 数据格式都能直接对接。这避免了被单一厂商绑定的风险。我见过不少先例,公司用了某商业 APM 的私有 SDK,后来想换平台,发现历史数据迁不出来,SDK 又闭源改不动,只能硬着头皮继续付费续约。
4.2 生产环境 OTel 架构与埋点方案
以一个真实项目为例,我们当时搭建的 OTel 架构分四层:
第一层是 SDK 埋点层。服务端代码中引入 OTel SDK 并做初始化配置。关键是注册一个 TraceProvider,设置 service name、采样率。请求进来后自动创建一个 root span,后续依次为每个逻辑步骤创建 child span。在 AI 场景里,这些步骤通常包括:请求预处理、路由决策、模型调用、后处理。每个 span 上挂 attributes,记录业务关键数据,比如模型名称、Token 消耗、预估成本、错误类型。
第二层是采集与传输层。SDK 产生的数据统一通过 OTLP 协议发送到 Collector。Collector 是 OTel 生态里最重要的组件,它相当于一个数据中转和处理中心,可以在这里做数据过滤、脱敏、路由、采样、缓存。生产环境之所以一定要加 Collector,是因为如果 SDK 直连后端监控平台,一旦监控平台抖动,直接影响业务链路;而 Collector 可以缓冲和重试,相当于给可观测性加了一层保险。
第三层是数据处理层。Collector 将数据分发到不同的后端存储:链路追踪数据进时序数据库,指标数据进 Prometheus,日志进 Elasticsearch。如果你的团队暂时没条件搭建完整的监控平台,也可以先用 Collector 把数据转发到一个集中式日志平台,至少保证数据不丢,后续再逐步建设分析能力。
第四层是可视化与分析层。基于存储的数据,使用 Grafana 等工具构建监控大盘。这一层面向的是实际使用者——研发、运维、业务负责人。通过预设的 Dashboard,把 Token 消耗趋势、各模型调用排行、单请求平均成本、质量评分分布等关键指标,用图表直观展示出来。
4.3 大模型调用的语义约定与埋点细节
OpenTelemetry 社区为生成式 AI 场景制定了语义约定,对模型调用的参数做了标准化的 attribute 命名。我建议所有接入的项目都尽量遵循这套约定,因为后续你可能会用到社区开源的 AI 分析工具,如果 attribute 命名对不上,工具就用不了。
我整理了几个最关键的 attribute:
| Attribute 名称 | 含义 | 示例 |
|---|---|---|
| gen_ai.request.model | 实际调用的模型名称 | gpt-4o-mini |
| gen_ai.usage.input_tokens | 输入 Token 数 | 1536 |
| gen_ai.usage.output_tokens | 输出 Token 数 | 448 |
| gen_ai.response.model | 实际响应模型 | gpt-4o-mini |
| gen_ai.system.name | 模型提供方 | azure_openai |
埋点时需要注意几个实操细节:
所有 token 消耗必须精确记录。在代码中调用模型 API 后,从响应的 usage 字段中取出 input_tokens 和 output_tokens,写到 span 的 attribute 上。这一步虽然看起来简单,但经常被忽略——很多团队只记录响应时间,不记录 token,导致成本分析无从谈起。
不要试图在 span 里塞对话原文。因为 trace 数据量大、保存时间短,且在生产环境里有数据隐私风险。对话原文应该放到日志系统或专门的数据存储中,通过 trace ID 和 request ID 关联,需要排查时再join查询。我在项目里就是这么干的:trace 系统只存元数据和 token 指标,原始消息走另外的通道。
采样策略要提前规划。生产环境的请求量通常非常大,全量采样存储成本高。但盲目降采样又会丧失排障能力。我们的策略是:健康流量 10% 采样,错误流量和慢请求 100% 采样,同时凡是路由到高价模型的请求 100% 采样——这样既控制了存储成本,又保证了对异常和关键成本的可见性。
5. 从遥测数据反推成本控制:决策分析实战
5.1 建立“请求-模型-成本-质量”四维关联视图
可观测性建设的最终目的,是通过完整的数据支撑做出更优的运营决策。单看某个维度的指标无法发现问题,我把遥测数据组合成四个关键视图:
按业务线拆分的成本视图。这是给财务和业务负责人看的。每个业务线消耗了多少钱、调用量多大、单次请求平均成本是多少。这个视图的价值在于,你能知道哪个业务线在“烧钱”,哪个业务线性价比合理。
按模型拆分的性能成本图。纵向比较大模型的表现。某个模型的平均响应时间是多少,错误率多少,单位成本下能处理的请求量多少。这个数据支撑了一个关键决策:什么时候要换模型,什么时候要给某个模型扩容。
按路由规则拆分的决策视图。分析路由模型的决策分布。哪些规则失效了,产生了多少误判流量,误判造成的额外成本是多少。比如你定义规则“超过 2000 token 的输入走旗舰模型”,但 70% 的这类请求其实用轻量模型也能正确处理,那说明这个阈值定高了。
按响应质量拆分的质量视图。把离线评估模型的质量分数与在线遥测数据关联,观察质量波动是否与模型版本变更、路由调整有关联。只在数据层面发现了质量问题,再回查到底是哪个环节导致质量下降,就能快速止损。
这四维关联视图,才是从遥测数据到成本控制的关键桥梁。
5.2 数据驱动的降本决策实例
我在某个模拟电商客服项目里,通过遥测数据做过一轮降本,效果挺明显的,我把过程完整整理一下:
第一步是看数据。通过 Grafana 大盘发现,旗舰模型的日调用量占总调用量的 18%,但消耗了 63% 的成本;而这 18% 的调用里,有超过四成的请求输入 token 数不足 200,输出 token 数不足 80,属于典型的短平快问答。这显然是在浪费。
第二步是调整路由策略。针对这些特征明显的请求,在路由规则中增加一条判定:如果输入 token 数小于 500,直接优先路由到轻量模型;同时把路由模型的特征负载中加入“是否包含价格询问、物流查询”等高频简单意图的标签,一旦命中直接短路走便宜通道。
第三步是灰度验证。新策略先对 5% 的流量生效,对比旧策略的数据。发现轻量模型在这些简单请求上的正确回答率只下降了 1.3%,但单次成本从 0.010 元降到了 0.0008 元,成本降幅超过 90%。于是逐步放量到 50%,再全量。最终,旗舰模型的调用占比从 18% 降到 9%,整体月度 API 成本下降了 42% 左右。
真正的降本从来不是拍脑袋想出来的,而是通过遥测数据发现规律、验证判断、再落地策略的结果。
6. 生产环境基础设施:Agent 与网关的关键作用
6.1 为什么需要 AI 网关来做“统一收口”
前面提到的路由策略和遥测数据,如果直接在业务代码里实现,会导致一个麻烦:每个业务模块都要重复对接模型 SDK、重复做路由逻辑、重复打埋点,代码侵入性非常强,而且模型供应商的 SDK 各不相同(某厂商的 SDK、某开源框架的 client),每次更换模型都要改业务代码。
我更推荐的方案是引入一层AI 网关,作为所有模型请求的统一入口。网关负责接收业务侧请求,完成路由决策、协议转换、模型调用、结果聚合、遥测上报。业务侧只需要对接网关的一个简单 API 即可,不需要关心后端到底接了几个模型。
网关在部署上可以是一个独立的微服务,也可以是一组轻量的无状态副本,放在业务服务前面,类似传统微服务架构里的 API 网关定位。它的核心职责:统一接收请求,按路由策略分发到不同的模型后端;对接多个模型提供方,统一把响应的 Token 用量统计成标准格式;将完整的调用链数据上报到 OTel Collector;实现流控、鉴权、配额管理。
网关的引入带来了两个直接好处:一是可观测性变成了默认能力,不用每个业务团队自己埋点,二是做成本策略调整时,只需要改网关的配置或规则定义,不需要让业务侧重新发版。
6.2 Agent 轨迹追踪:处理复杂的多步任务
随着大模型应用越来越复杂,很多项目已经不只是“一次请求调一次模型”那么简单,而是引入了Agent模式:请求进来后,系统根据任务拆解出多个子任务,每个子任务可能调用模型、也可能调用外部工具,可能顺序执行,也可能并行执行,中间还有自我反思和修正的环节。
这种模式下,trace 的建模复杂度大幅上升。如果只是把每个模型调用当成独立 span 串起来,就丢失了任务之间的依赖关系。我在生产环境用的是agent 轨迹追踪方案:
把一次完整的人工智能任务处理过程建模为一个 master trace,每个子任务是一个 child span。span 之间不仅有时间顺序,还要有因果依赖关系——比如某个子任务使用了另一个子任务的输出作为输入,需要在 trace 数据里用 link 关联起来。
每个 span 上除了模型调用信息,还要挂上 task 类型、tool 名称、结果摘要、反思次数。这样在复盘时,你能清晰看到:这个任务为什么跑了 5 步?哪一步是耗时最长或者成本最高的?反思机制是不是过度触发了?
这里有个反直觉的发现:**多数场景下,Agent 失败后的重试与反思会呈指数级放大成本。**一个本身 0.01 元的简单任务,如果因为第一步就出错,触发模型反思、重新规划、二次调用,成本会变成 0.05 元以上,足足放大五倍。而这还只是执行的额外成本,如果模型还会产生错误幻觉,导致下游业务反复校验、人工介入,隐性成本更大。
所以,一旦系统引入 Agent,就必须在遥测体系里把 Agent 轨迹拆解清楚。否则它就像一个黑盒,你永远不知道钱和延迟是从哪个环节开始失控的。
7. 真实踩坑:常见问题与排查技巧
7.1 问题排查实录:跨层链路追踪
我印象最深的踩坑场景,是排查一次“模型响应时快时慢”的疑难问题。业务方的反馈是:用户觉得机器人回复很不稳定,有时候秒回,有时候要转圈十几秒。单独看每个模型的平均响应时间,数据都正常,但就是组合起来不对劲。
后来我用了按全链路拆分的方式去排查,在 Grafana 里把同一批请求按“路由耗时、模型推理耗时、输出解析耗时、网关转发耗时”四个环节拆开分析,才发现问题根本不在模型,而在网关的 token 计算逻辑上——某些模型返回的 usage 字段格式不标准,网关解析时报错,触发了几次自动重连和超时,白白拖慢了响应。
问题找到后,修掉网关的解析兼容逻辑,平均响应时间从 4.8 秒降到 1.2 秒。这个问题的关键点在于:如果你没有按链路的每个环节拆分指标,而是只看总耗时,这类问题会非常难定位。
7.2 常见问题速查表
| 症状 | 可能原因 | 快速排查方法 |
|---|---|---|
| 成本突然飙升但调用量没变 | 路由策略被误改;某个流量带的输入 token 异常变大 | 查看按模型拆分的 token 消耗趋势,找出成本突增时段,对比路由决策记录 |
| 模型响应平均耗时正常,但用户体验很卡 | 网关转发环节有超时重试;部分请求走了质量竞速逻辑 | 拆解链路各环节耗时分布,查看 P99 耗时是否明显偏高 |
| 多模型路由命中率低,频繁走到没必要的模型 | 路由模型 prompt 不合理;部分意图特征未被有效提取 | 查看路由决策日志,检查路由模型的 output JSON,分析拒绝判断的模式 |
| 某个便宜模型使用率很低 | 路由规则里硬编码的过滤条件过严;便宜模型被标记为“不适用于某些场景” | 检查路由配置,观察被拦截请求的类型与数量,针对性调整规则 |
7.3 关于采样、存储与数据治理的实战心得
最后分享几个容易被忽略的工程细节:
采样策略要结合成本水位做动态调整。刚开始接入 OTel 时,可以考虑全量数据上报以便摸索规律,但一个月后就要根据数据量调整采样率。我们的经验是,每天生成超过 500 GB 的可观测性数据,存储成本很快反超业务本身的模型成本。所以在数据治理上,黄金指标(Token 消耗、调用量、错误率、P99)保留 30 天,详细链路只保留 7 天,原始日志按需另存。
敏感数据脱敏必须在 SDK 层做。别等到数据进到 Collector 再脱敏,那样已经晚了——因为你不知道数据在传输链路中会被哪个中间组件读到。我建议在 SDK 埋点时,就对 prompt 字段做脱敏处理。比如有序列号、手机号、真实姓名等个人信息时,直接不记录文本内容,只记录脱敏后的摘要特征,保障用户隐私与企业合规。
定期做成本容量评估。每两周花半天时间,把最近两周的 Token 消耗、成本分布、路由决策准确率、质量评分这些汇总数据拉出来过一遍,和上两周做对比。这个习惯能帮你在成本问题发展成事故之前,提前发现趋势性异常。我就靠这个习惯提前发现过一次旗舰模型调用比例的缓慢上升——最后定位到是某次业务新功能上线时,路由模型被误加了“全面优先使用旗舰模型”的偏好设置,在用户没有感知的阶段就完成了修复。
8. 从“上监控”到“建体系”的最后一公里
做完以上这些工作,项目会进入一个比较舒服的稳定期:成本可预判、调用链路可追踪、路由决策可优化。但我想强调一个观点——可观测性和成本治理这件事,永远不是一次性工程,而是持续迭代的体系。
为什么这么说?因为 AI 技术生态变化太快了。模型调用价格在持续下降,新的开源模型层出不穷,今天的最优路由策略下个月就可能过时。你真正需要建立的,不是一套固定的监控大盘,而是一套能够快速响应变化的决策机制:新增一个模型时,能很快评估它在你的业务场景里是否具备性价比;某一个模型的 API 涨价或降级时,能迅速调整路由权重;新业务上线时,能基于历史数据预估成本水位并设定预警阈值。
我自己的经验是,在这套体系跑通之后,新项目接入 AI 能力的成本评估时间从几天缩短到几小时。一个新人成员只需要照着现有的监控大盘和路由配置模板,填上新模型的 API 信息,跑一天的灰度流量,数据和报表就能自动出来,不用再手工写脚本去统计调用量和损耗。
再分享一个实用小技巧:在 Grafana 大盘上,把所有成本指标和业务核心指标放到同一屏,比如 GMV、日活用户、用户满意度评分、API 成本、单请求平均成本、P99 响应时间。这样做的好处是,产品经理和业务方讨论预算时,直接打开这个大盘就能看到钱和业务指标的对应关系,沟通效率会高很多。没有这套联动视图,业务方只会觉得“AI 很贵”,但说不清楚钱到底换回了什么。
这套体系搭建完成之后,我认为你已经不再需要一个“救火队长”式的运维角色了,因为每个团队都能通过数据看到系统的健康情况和成本水位,问题在爆发前就会被自然暴露和修正。这才是企业级 AI 系统长期稳定运行的真正保障。