跳到主要内容

按功能计费,而非按 Token 计费:AI 预算分配中的缺口

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的财务团队可以准确告诉你,上个月你在 Anthropic 和 OpenAI 上花了多少钱。你的产品团队可以告诉你,哪些功能的用户点击量最高。但公司里没人能告诉你 Draft-Email 是否盈利,Summarize-Thread 是否应该保留在免费层级,或者新的 Rewrite-Tone 功能是否在单用户成本上蚕食了 Draft-Email 的利润。你拥有两个声称追踪同一笔支出的仪表盘,但它们都无法回答那个真正驱动产品决策的问题。

这就是分配缺口。你按端点(endpoint)测量 Token 支出,因为这是供应商 API 提供的数据。但 /chat 端点服务于 12 个刚好共享同一个提示词模板的功能,“按端点”统计将这 12 个功能全部合并到了同一个细目中。在有人完成将 Token 成本导回至产生成本的功能这一底层工作之前,定价层级、功能权限管理、弃用决策以及“我们要不要发布这个功能?”的讨论,全都只能靠直觉。

这项底层工作并不光鲜。它是请求级标记(request-level tagging)、追踪与遥测数据的关联(trace-to-telemetry joins),以及一种坚决的态度:如果不带成本标签,就不发布任何 AI 功能。将此视为基础设施投资的团队,最终会获得按用户群细分的单功能利润报告。而将其推迟到下季度的团队,最终在 18 个月里只能凭感觉做定价决策,并在事后发现,某个单一客户群在负利润的情况下消耗了一半的推理账单。

为什么按端点层级核算是在撒谎

供应商的仪表盘是根据 API 设计的,而不是根据你的产品。Anthropic 和 OpenAI 按 Token 计费,按 API 密钥计量,并可选地按模型细分。这就是你免费获得的会计世界。一旦你在同一个服务背后暴露了多个功能,这个世界就再也无法映射到任何产品经理关心的内容上了。

一个成熟的中期 SaaS 后端可能有三四个共享同一个推理网关的 AI 功能:摘要调用、分类调用、聊天处理、Q&A 检索。它们调用相同的模型,使用相同的 API 密钥,共享在同一个地方编辑的系统提示词。账单导出显示一行:claude-sonnet-4.5: $47,204。产品分析显示四个使用情况图表。你无法将这两者相除并得到一个有用的数字。

幼稚的解决方法是从端点路径推断成本,但现代 AI 功能在路径上是多元化的。一个 Draft-Email 功能可能会调用提纲步骤、语气分类器、检索步骤和起草步骤 —— 四个推理调用,两个模型,一次用户操作。按 HTTP 端点归属成本会将所有这些都归入触发起草流程的路径中,将检索成本隐藏在另一个桶里,并且在语气分类器也用于自动完成时默默地重复计算。当你意识到端点映射与功能映射已经偏离时,你的成本仪表盘已经悄悄错误了几个月。

标记纪律:在调用时标记,而非记录日志时

唯一能在 Agent 追踪中存活下来的成本归属方法是在请求创建时进行标记。事后推断 —— 解析日志、正则匹配提示词前缀、搜索请求体 —— 仅适用于理想路径(golden path),并在长尾数据中悄悄丢失信息。重试循环、工具增强型 Agent 和重新规划的分支所产生的 Token,除非你在进入时就标记了它们,否则很难明确归属于某个功能。

每一个推理调用在第一次离开你的服务时,都应该带有三个标签:

  • 功能标签 (Feature tag)。一个稳定的、对产品有意义的标识符:draft-emailsummarize-threadrewrite-tone。不是端点路径,不是路由名称 —— 而是营销和产品部门所熟知的功能名称。当一个功能被弃用或重命名时,该标签应保持历史一致性,以便成本时间序列不会断裂。
  • 用户群组 (User cohort)。租户 ID (Tenant ID)、计划层级 (Plan tier) 和用户 ID 的组合。计划层级很重要,因为它是定价决策所需的维度。租户 ID 很重要,因为企业客户是长尾。用户 ID 很重要,因为在一个租户内,一个超级用户消耗的资源可能比其他 900 个用户的总和还要多。
  • 请求树根 ID (Request-tree root ID)。发起推理的顶层用户操作的标识符。在一个为了起草一封邮件而进行 14 次工具增强调用的 Agent 循环中,所有 14 次调用都携带相同的根 ID。这个标签能让你无需在事后进行追踪图手术,就能回答“一次 Draft-Email 操作平均消耗多少 Token”。

还有两个标签值得携带,尽管它们对成本核算不是核心支撑:环境 (Environment),防止测试环境的流量污染生产环境的成本序列;模型加供应商 (Model-plus-provider),这样“我们在 Haiku 上便宜了 30%”这一结果无需单独查询即可显现。总共五个标签,在请求中间件层设置。这是枯燥的代码,也是团队因为觉得乏味而推迟,随后后悔一整年的部分。

关联查询:推理追踪与产品遥测的交汇

追踪(trace)上的标签是必要的,但还不够。回答 “Draft-Email 功能每个活跃用户每月的成本是多少” 这个问题,无法仅通过推理流水线内部完成——它需要通过关联两个公司已经拥有但很少进行联表查询的数据源来回答。

一方面:推理追踪存储。这里的每个 span 都带有上述五个标签,以及 input-token、output-token、cache-hit 和 latency 字段。大多数 LLM 可观测性供应商只需少量的工程投入就能为你提供这些数据,不过也有一些团队最终选择自研,因为市面上的现成方案通常不会公开原始追踪数据以供 SQL 风格的关联查询。

另一方面:产品分析数据仓库。它记录了谁是 Draft-Email 的月活跃用户、他们何时开始使用、订阅了什么套餐以及留存频率。这一端已经存在,数据工程团队已经维护多年。

分配流水线就是将这两者配对的关联查询:一侧是按功能、按租户划分的 token 使用量;另一侧是按功能、按租户划分的活跃用户。两者相除,你一直缺失的数字就会浮现:每个功能、每个活跃用户、每个月的成本,并按套餐等级细分,带有偏差条。具体的数字并不重要。重要的是,一旦有了这个数字,那三个此前一直卡在主观争论中的对话突然间就有了客观依据。

定价分级设计得到了答案:“在 median 用户不亏本的情况下,我们可以在 19 美元的套餐中包含哪些功能。” 功能准入得到了答案:“哪些功能在免费层级下是盈利的。” 功能弃用(Deprecation)得到了答案:“Summarize-Thread 导致每个 MAU 成本为 4.80 美元,但仅覆盖 3% 的用户——它是否值得占用这些资源。” 在缺乏数据的情况下,这些争论会固化为与哪个高管主导了最初发布相关的派系立场。有了数据,它们就变成了电子表格。

实践中的失效模式

即便建立了标签规范,仍会稳定出现三种失效模式。

隐藏在健康整体指标下的长尾毛利侵蚀。 在任何长尾客户分布中,像 “我们的 AI 功能毛利率为 71%” 这样的汇总指标从结构上来说都是谎言。仔细观察通常会发现,少数租户消耗了一半的 token,毛利率仅为 30-40%,而中位数客户的毛利率则在 85% 以上。整体指标将它们平均成了虚假的美好。标签关联后的视图则能展示真实分布。从此,针对特定租户的节流、分层限流或有针对性的合同重谈才成为可能。

网关透明度税。 如果你的架构在应用和 LLM 供应商之间放置了一个网关,那么网关会使用单一服务凭证向供应商进行身份验证。供应商只看到一个 API key。除非网关本身将你的标签注入到每个上游请求中并记录到你自己的追踪存储中,否则按用户归因在网关边界就会中断。依赖供应商的按 Key 细分报告在开始阶段看起来像是免费的基础设施,但当你增长到超过几个租户时,它就会演变成长达数月的重构工作。

缓存统计虚报账单。 Anthropic 和 OpenAI 对缓存的 input token 计费仅为原价的一小部分——通常缓存读取为 10%,缓存写入最高为 125%。如果成本报告将所有 token 简单乘以原价,在缓存密集型工作负载中会虚报 30-50% 的支出。在缓存命中率本应达到 70% 的工作负载中,这种虚报程度大到足以误导你做出关闭缓存的架构决策。不区分缓存命中和缓存缺失 token 数量的归因会产生严重的误导。

被打通的财务与产品对话

值得构建这些底层链路的原因不是为了看板,而是为了解决因缺乏看板而无法进行的对话。

在任何达到一定规模的组织中,财务和产品对 AI 资金的去向都有不同的理论。财务看到每月的发票并询问为什么一直在增长。产品看到参与度图表并询问为什么财务要阻碍功能扩张。在各自的语境下,双方都是正确的。双方都基于不充分的数据工作。除非有人拿出能够决策的数据,否则对话将一直僵持在 “我们应该更谨慎” 与 “我们需要持续创新” 之间。

功能级毛利报告就是那个关键产物。它将 “AI 支出环比增长 40% QoQ” 转化为 “Draft-Email 支出增长了 60%,因为 MAU 翻倍了,且人均 MAU 成本下降了 15%——这是健康的增长。” 它将 “让我们削减预算” 转化为 “Summarize-Thread 是在 MAU 持平的情况下支出增长 200% 的那个——这才是该查的地方。” 它将财务与产品的争论从基于价值观转变为基于衡量标准,而这才是真正能产生不同决策的对话。

优先构建什么

如果你是从零开始,请克制购买企业级可观测性平台的冲动,转而去做能保留选择余地的最小化尝试。构建一个请求中间件层,为每个向外发出的推理调用打上上述五个标签,将它们记录到你现有的任何追踪存储中(甚至流入数据仓库的结构化 JSON 日志流也算),并每周与产品遥测数据进行关联。这将为你提供完整平台 80% 的价值。

标签就是承诺。一旦每个请求在调用时都被标记,你可以更换存储供应商、替换分析仓库、重写关联查询,而归因依然有效。没有标签,任何供应商都救不了你。他们能卖给你的只是看数据的更好方式,而这些数据你从未捕获过。值得投入的纪律是那个单行装饰器(decorator):它拒绝让任何 AI 调用在没有如实交代是哪个功能发起的请求的情况下离开你的服务。

References:Let's stay in touch and Follow me for more thoughts and updates