我做 AI 产品踩的坑:成本考虑得太晚了
My mistake building AI products: thinking about cost too late最近在测试自己做的 AI 产品时,我发现几项功能的实际开销明显高于预期。
这是一个 AI 求职产品,里面包括岗位扫描、匹配分析、公司研究和求职材料生成。单独看每一项功能,好像都没有夸张到哪里去:无非是搜索一些信息、分析一份职位、生成一份报告。
但把一次完整的使用流程连起来以后,问题就出现了。
从发现岗位、读取职位信息,到分析匹配度、研究公司,再到生成求职材料,一个完整循环可能花掉几美元。
对于偶尔测试一次,这个数字似乎还能接受。但如果每个用户使用一次都要花几美元,用户稍微增加,成本就会快速放大。
这显然不可持续。
一个功能,不等于一次模型调用
我之前没有充分意识到,用户在页面上看到的一个按钮,背后可能是一整条付费调用链。
例如,用户点击一次“研究这家公司”,系统可能需要:
- 搜索多个来源;
- 读取不同网页;
- 补充缺失信息;
- 分别分析几个维度;
- 最后再生成一份综合结果。
如果某一步没有完成,还可能发生 continuation 或 retry。
表面上只生成了几百字,模型却可能已经搜索、阅读和处理了大量内容。
另一类隐形成本来自重复输入。
为了分析一个岗位,不同步骤可能反复读取同一份职位描述、用户职业经历、求职偏好和前一步生成的结果。最终输出不长,但相同背景已经被发送了好几遍。
所以,AI 功能的成本不能只看最后生成了多少字,也不能只数页面上有几个按钮。
真正要看的,是整个过程中发生了多少次调用、每次读了多少内容、用了哪些工具,以及失败和重试时又发生了什么。
让我停下来的,是整体成本已经不合理
有一次测试中,两次公司研究最终都没有生成可用结果,几个执行阶段加起来记录了大约 61 万 combined tokens。
这个数字不能直接换算成准确账单,因为当时的记录没有完整区分输入、输出、缓存和搜索内容。但它至少说明了一件事:即使页面最后显示“失败”,搜索、网页读取和模型处理也可能已经发生。
不过,失败也花钱只是问题的一部分。
真正让我停下来的是,回顾整个产品以后,我发现很多能力都没有被认真计算过:
- 一次完整使用到底要调用多少次模型;
- 哪些步骤真的需要 AI;
- 哪些内容被重复发送;
- 自动任务会在什么情况下持续花钱;
- 一次搜索、分析或生成最多应该值多少钱;
- 当用户从 1 个增加到 100 个时,这套方案是否还成立。
我之前更多是在判断功能是否合理、结果是否有用、流程是否完整,却没有把“得到什么”和“付出什么”放在一起逐项衡量。
每一项能力其实都有一个价格。
一份完整的岗位分析、一项公司研究、一份定制简历和一条简短消息,价值不同,所需要的成本也不同。不能只是因为它们都能由 AI 完成,就默认调用越充分越好。
成本考虑得越晚,补起来越不像一个小优化
发现问题以后,我原本以为需要做的是统计一下 Token,再给模型调用加几个上限。
真正开始处理才发现,事情远不止这些。
我需要先盘点所有功能:
- 什么操作会产生付费调用;
- 一次会调用几次;
- 是否使用搜索或网页读取;
- 是否有自动重试;
- 失败后是否仍可能产生费用;
- 哪些背景信息在不同步骤中被重复发送。
然后还要重新设计:
- 哪些工作交给普通程序;
- 哪些功能应该由用户主动触发;
- 哪些信息可以缓存和复用;
- 每项能力允许使用多少输入、输出和搜索;
- 所有付费调用如何统一管理;
- 成本下降以后,结果质量是否还能保持。
最后,还要把已经存在的功能逐个迁移到新的方案中。
这项工作花了好几天,也暂停了原本的功能开发。
成本考虑得越晚,最后补的越不是一个费用统计页面,而是一轮跨产品的架构调整。
如果重来一次,我会更早做三件事
产品设计时,先为每项能力写出成本假设
不需要第一天就建设一套复杂系统,但至少应该明确:
- 这个功能是否需要 AI;
- 是用户主动触发还是自动运行;
- 一次预计调用几次;
- 是否需要搜索或读取外部内容;
- 单次结果大概值得支付多少;
- 失败和重试如何处理。
成本应该和用户价值、功能范围一起被讨论,而不是开发完成后的附加项。
第二个 AI 功能出现时,建立统一调用入口
如果每个功能都各自连接模型,后面很难统一限制模型、调用次数、重试和预算。
第二个 AI 功能出现时,就应该开始建立最小的统一入口和使用记录,而不是等到产品里已经有十几条调用链再逐个迁移。
出现搜索、自动任务和多步骤流程之前,设置硬边界
只要功能开始涉及:
- 网页搜索或读取;
- 自动或定时运行;
- 多个模型步骤;
- 后台任务和并发;
- retry 或 continuation;
- 大文件和不确定长度的外部内容;
成本就可能不再稳定增长,而是出现很大的波动。
这时必须提前定义输入、输出、工具次数和单次费用上限。
最后
这次经历让我意识到,AI 产品不能只问:
这项能力能不能实现?
还要继续问:
每运行一次要付出什么?它带来的价值是否配得上这个价格?当使用量扩大以后,这个交换还成立吗?
成本不需要在第一天就被设计成一套庞大的系统。
但从第一天开始,每一项 AI 能力都应该有一张大致的价格标签。