welclaiAI·TREND·DIGEST
教程

成本控制入门:让一个 AI 功能保持可负担

AI 功能按 token 计费,而小习惯会复利成大账单。这里是几个经久的杠杆,帮你在不掏空质量的前提下把成本控制住。

tutorials2026-04-25 14:40 KST·主编·7 分钟

就软件而言,一个 AI 功能有一个不寻常的性质:每有一个人用它一次,它就花一次钱。传统代码跑在你已经付过费的服务器上,所以多一次调用几乎是免费的。语言模型按请求向你收费,而账单随用量增长。这改变了你构建的方式。一个一天只花几分钱的原型,可能悄悄变成一个比构建它的团队还贵的功能,而那差别很少是某一个大错误——它是一百个小习惯的复利。本教程涵盖让一个 AI 功能保持可负担的几个经久杠杆,那些无论你用哪个模型或厂商都持续奏效的杠杆。

你实际上是怎么被计费的

你无法控制一项你不理解的成本,所以从单位开始。语言模型按 token 计费——一块文本,非常粗略地说是几个字符或一个词的一部分。每个请求都要为进去的 token(你的提示词:指令、上下文、示例、用户的输入)和出来的 token(模型的响应)付费。两个方向都花钱,而在许多模型上,输出 token 的每个 token 单价比输入更贵。

由此立刻引出两个后果。第一,一个长提示词在模型还没说一个字之前就不是免费的——所有那些上下文都是你每次调用都要付钱的输入。第二,一个啰嗦的答案比一个说着同样事情的简短答案更贵。你的总账单本质上是每请求 token 数乘以请求数,而下面几乎每一个杠杆,都是在不缩小质量的前提下缩小这两个因子之一的办法。

杠杆 1:把模型选到合适的大小

最大的单项成本决定,是你用哪个模型,因为能力和价格是一起走的——最强的模型每 token 的成本,比更小、更快的模型明显更高。本能是为一切都去抓最强的模型。纪律是去问每个任务实际上需要什么。

许多任务很简单:给一条消息分类、抽一个字段、一段短改写、一句例行回复。一个更小、更便宜的模型往往把这些处理得很好,而为它们用旗舰模型,是在为你没用上的能力付钱。把昂贵的模型留给真正困难的活——深度推理、有分寸的生成——在那里质量差别配得上它的价钱。一个强大的模式是按难度路由:一个便宜的模型处理简单的大多数,只有困难的情形才升级到昂贵的那个。来自质量测试的评测纪律在这里直接适用——在假定便宜模型不够好之前,先衡量它是否已经够好。

杠杆 2:每次调用花更少的 token

一旦模型选到了合适的大小,就向 token 进攻。在输入端,把提示词修剪到任务所需。臃肿的指令、冗余的示例,以及模型用不上的上下文,每一次调用都在花钱,而在规模上,那份浪费就是整个问题。这在检索和智能体系统里加倍成立——那里很容易塞进"以防万一"的上下文,而每个没用上的段落都被永远地付着钱。

在输出端,要你需要的,不多要。如果你想要三个要点,就说三个要点;一个不受约束的模型往往会写三段。在任务允许处,请求一个紧凑的格式。这一切都不是为了抠门而抠门——而是为了不为毫无贡献的 token 付钱。一个只携带任务所需之物的提示词和响应,既更便宜,通常也更清晰。

杠杆 3:别为同一份活付两次钱

很大一部分 AI 成本,是在为相同或近乎相同的活反复付费,而有两个干净的办法可以止住它。

缓存意味着复用一个你已经有的结果。如果许多请求共享一大块不变的上下文——同一段长系统提示词、同一份参考文档——提示词缓存让你免于每次都重新处理那固定的部分,这能显著削减重复调用的输入成本。另外,如果用户频繁问完全相同的问题,你可以缓存那个答案并直接送出,根本不调用模型。最便宜的模型调用,是那个你从不发出的调用。

去重和批处理应对的是体量。如果你的系统会把同一个请求发两次,发一次就好。如果你有许多并不紧急的请求——通宵处理、批量分析——把它们一起处理往往比一次一个地手忙脚乱地调用更便宜,而有些平台为不紧急的批处理活定的价低于实时价。共同的线索是:相同的活应当只做一次,而有耐心的活不该为没耐心付溢价。

杠杆 4:给那些会失控的部分设上限

大多数成本灾难不是一滴一滴的稳定渗漏;它们是某个失控的单一组件。一个卡在循环里、一遍遍调用模型的智能体。一个每次失败都无限制触发的重试。一个用户——或一个假装成用户的脚本——一小时发出数千个请求。稳定的用量容易做预算。失控才是那个让人胃部一沉的账单的来源。

所以在任何可能形成循环或队列的地方都设上天花板。给一个智能体在停下并报告之前可以走的步数设上限。给重试设上限。限制单个用户在一个时间窗内能发多少请求。给响应长度设一个硬上限,这样一个病态的请求就不会生成一份庞大、昂贵的答案。这些上限在正常使用中都不该咬到你;它们的存在恰恰是为了那个反常的情形,而它们救你的那一次,就值回了许多倍。

杠杆 5:在优化之前先测量

你无法管理你看不见的东西,而大多数成本意外其实是可见性的失败——那笔开销一直都在,只是没人在看。在优化任何东西之前,给这个功能装上仪表,好让你知道钱去了哪:哪些操作最贵、成本在输入和输出之间如何分布、哪些用户或请求类型占了大头。

这要紧,是因为成本和性能一样,遵循一个偏斜——一小部分操作通常驱动了账单的一大部分。优化一条便宜、罕见的路径感觉很高产,却什么也没省下。先找到那条昂贵、频繁的路径并修它。然后随时间盯着趋势,因为用量会增长,一个上线时还可负担的功能,会随采用率攀升而漂移到昂贵。给开销越过一个你审慎选定的阈值设一个告警,这样你是从自己的仪表盘、而不是从一封财务邮件里得知一个成本问题。

在成本与质量之间求平衡

这里每一个杠杆都在和某样东西做交换,假装不是这样,会带来一个没人想用的廉价功能。一个更小的模型省钱,但可能答得稍差。一个更短的提示词省 token,但可能丢掉一块要紧的上下文。激进的缓存省下调用,却冒着送出一个陈旧答案的风险。目标不是尽可能低的成本——那是一个没有用户的功能。目标是仍然达到你质量门槛的最低成本。这恰恰是评测发挥价值的地方:它让你做一次削减成本的改动,然后用数字而非希望来检查质量是否守住了。削减成本、测量质量、保留那些质量挺过去的削减。

总结

让一个 AI 功能保持可负担,归结为少数几个经久的习惯:理解 token 的、有账单意识的设计,把模型选到与每个任务合适的大小,每次调用花更少的 token,绝不为同一份活付两次钱,给那些会失控的组件设上限,以及测量一切好让你优化那条真正花钱的路径。这一切都不需要什么巧妙的把戏,而它全都能挺过模型和厂商的变化,因为它源自这些系统的定价方式。给每一次削减配上一个评测,好让质量保持诚实,于是一个本可能让自己破产的功能,会保持为一个你负担得起继续运行的功能。

#cost#tokens#caching#tutorial