AI公司面试100%加分的话题:如何做 API成本预算

0 阅读4分钟

总结

  1. 需要做api成本预算的理由是:防止“功能很好,但公司亏钱”
  2. api成本预算的公式是:成本 = (输入 token 数 × 输入单价) + (输出 token 数 × 输出单价)
  3. 粗算:一段 1000 字中文 ≈ 1000 tokens, 一段 2000 英文字符 ≈ 500 tokens
  4. 真实项目中的隐藏成本: Embedding 成本,重试成本,流量 & 带宽,向量数据库费用等
  5. 优化的方案:做限流,做缓存,用小模型做预处理,裁剪历史对话控制 max_tokens等

为什么要做API成本核算

防止“功能很好,但公司亏钱”

举个🌰👇🏻

GPT-4o 输入/输出 的官方 Token 单价

  • 输入 tokens(prompt/请求) :大约 2.50美元 / 1 M tokens(即每个 token ~ $0.0000025)
  • 输出 tokens(模型生成的内容) :大约 10.00美元 / 1 M tokens(即每个 token ~ $0.00001)
  • 每次对话消耗 10k tokens(假设输入 5k + 输出 5k)
  • 使用 GPT-4 级别模型
  • 单次成本假设 $0.0625
  • 1 万日活用户 × 每人 5 次

每天成本:

10000 × 5 × 0.0625 = $3,125

一个月就是:

$93,750

如果咱们产品一个月收入才 5 万人民币,那直接凉凉。

image.png

所以,在 AI 项目里,不会算 API 成本 == 不具备上线能力

如何核算API成本

一、核心公式

大模型 API 成本本质是:

成本 = (输入 token 数 × 输入单价) + (输出 token 数 × 输出单价)

举例说明(以gpt-4o模型为例):

  • 输入:$2.50/ 100万 tokens
  • 输出:$10.00 / 100万 tokens

如果一次对话:

  • 输入 2000 tokens
  • 输出 1000 tokens

那么这一次对话的成本如下

输入成本 = 2000 × 2.50 / 1,000,000 ≈ $0.005
输出成本 = 1000 × 10.00 / 1,000,000 ≈ $0.01
总成本 ≈ $0.015

二、Token 怎么估算?

咱们不可能每次都真实算,不是需要很精细的地方,粗略估算的话,以如下方法进行即可

文本换算token平替

英文:

1 token ≈ 4 字符

中文:

1 token ≈ 1-1.5 个汉字

所以,一般核算直接用如下数据带入就好:

  • 一段 1000 字中文 ≈ 1000 tokens
  • 一段 2000 英文字符 ≈ 500 tokens

完整项目成本估算步骤

如果领导(老板,面试官)问:

如果你要做一个 AI 产品,你如何估算成本?

我们可以这样答:

第一步:估算单次请求成本

统计:

  • 系统 prompt 多长?
  • 用户平均输入多少?
  • 模型平均输出多少?
  • 是否有历史对话?

比如:

系统提示:800 tokens
用户输入:500 tokens
历史对话:2000 tokens
模型输出:1000 tokens

总输入:

3300 tokens

第二步:估算日活和调用次数

假设:

  • DAU = 5000
  • 每人每天 10 次提问
总调用次数 = 50000 次 / 天

第三步:算每日成本

单次成本 × 调用次数 = 每日成本

比如:

单次 $0.02

50000 × 0.02 = $1000 / 天

一个月就是:

$30000

老板听到这个数字才会认真。

image.png

四、真实项目里的隐藏成本

很多人只算模型费,其实还包括:

Embedding 成本

如果你做 RAG:

  • 每次查询都要 embedding
  • 每条数据也要 embedding

要单独算。

image.png

向量数据库费用

  • 存储费用
  • 查询费用

image.png

流量 & 带宽

如果是流式输出(SSE),长连接会占资源。这个倒是不花钱,就是扣除你一个http请求的资格,(chrome内核的浏览器http并发最多六个

重试成本

  • 超时
  • 用户刷新
  • 网络断线

真实消耗往往比理论高 10%–30%。每次重试根据项目的工程步骤不同搞不好还得花钱。(比如某个功能里面有一个agent要过几道ai 模型反馈,结果断在了最后一道。前面作废,重新花钱来)

image.png

image.png

五、优化成本的方法

1. 控制 max_tokens

限制模型输出 token 有两个明显好处:

  1. 更容易控制成本上限,便于预算核算。
  2. 提高输出的可控性,避免模型产生大量冗余内容,有些模型天然喜欢废话。节省费用。

但缺点也很明显:不适合进行大范围的详细解说。

但是这个缺陷个人认为不重要,大部分问题都可以在4000token内解说清楚,符合大部分用户需求,而针对那小部分用户,完全可以通过 工程手段去检测 ”详细,明确,更多,精讲“关键字的,动态调整 4000 token的 prompt

image.png

2. 裁剪历史对话

只保留最近几轮,这样可以减少模型输入的消耗

3. 用小模型做预处理

例如: 分类, 意图识别

用便宜模型先判断。

4. 做缓存

  • 相同问题直接缓存结果
  • embedding 结果缓存

最后

如果对你有用的话

image.png