1331 字
7 分钟
LLM API调用费怎么省?我一个月的账单复盘

LLM API调用费怎么省?我一个月的账单复盘#

三月份我的LLM API账单是347美元。看到数字的时候我愣了一下——我只是写了几个工具脚本和一个博客助手,哪来的这么多钱。

这个月我花了一些时间调整策略,账单降到了89美元。没换更便宜的模型(至少不全是),核心思路是减少”浪费的调用”。

分享一下具体的做法。

先搞清楚钱花在哪了#

我导出了三月份的调用日志,做了个简单的分析:

用途调用次数花费(美元)占比
博客写作助手31212736.6%
代码辅助5289828.2%
日常问答8916719.3%
自动化脚本23404212.1%
测试和调试445133.7%

看完我发现了两件事:

第一,日常问答的调用次数最多(891次),但每次花费很低。这块不是大头,但积少成多。

第二,博客写作助手单次调用花费最高,平均每次0.4美元——因为我用的是最大参数量的模型,而且每次prompt里塞了大量参考材料。

省钱策略一:按需选择模型,不要永远用旗舰#

我以前有个坏习惯:不管什么问题,都直接调GPT-4级别的模型。问个”这个正则怎么写”也用最贵的。

调整之后我做了个简单的路由:

  • 简单问题(格式转换、正则、翻译)→ DeepSeek V4-Flash,$0.14/百万token
  • 中等问题(代码解释、方案讨论)→ Claude Sonnet级别,约$1/百万token
  • 复杂问题(架构设计、长文档分析)→ 旗舰模型,该花钱花钱

这个改动最大的效果是在自动化脚本上。那些定时跑的脚本以前全用旗舰模型,改到Flash之后,这块从42降到了42降到了9。

说实话,格式化JSON这种事用Flash和用旗舰模型的输出质量几乎没区别,但价格差了20倍。

省钱策略二:缓存重复调用#

这是我最大的省钱发现。

我的博客助手有个功能:对同一篇文章反复修改、润色、调整结构。每次修改都会把全文重新发给模型。

但问题是——如果我只是改了第三段的措辞,前两段和最后三段根本没变,为什么要重新调用API处理它们?

我加了一层简单的缓存:

import hashlib
def get_cache_key(content: str, instruction: str) -> str:
"""同样的内容和指令,返回同样的key"""
raw = f"{content}|||{instruction}"
return hashlib.md5(raw.encode()).hexdigest()
def get_or_generate(content, instruction):
key = get_cache_key(content, instruction)
cache_file = f".cache/{key}.json"
if os.path.exists(cache_file):
return json.load(open(cache_file))
result = call_llm(content, instruction)
os.makedirs(".cache", exist_ok=True)
json.dump(result, open(cache_file, "w"))
return result

就这几行代码,博客助手这块的花费从127降到了127降到了58——因为很多润色操作(改错别字、调整语气)我只改了局部,其他部分直接走缓存。

省钱策略三:减少prompt长度#

这个效果出乎意料地好。

我以前写prompt有个毛病:把能想到的背景全写上去。一篇博客的prompt大概长这样:

你是一个技术博客写作助手。我需要你帮我修改以下文章。
文章主题是XXX,目标读者是XXX,我希望风格是XXX。
另外,我之前的几篇文章风格是这样的(附上三篇文章)...
还要注意以下几点:1.不要... 2.要... 3.另外...
还有,如果涉及到代码示例,请用Python...

这种prompt一次就要吃掉2-3万token。

后来我发现,其实大部分背景信息只在前几次对话时有用。我改成了两阶段调用:

# 第一阶段(只在首次发送,约5000 token)
"帮我建立以下写作规则:
- 风格:口语化,第一人称
- 长度:800-1200字
- 代码示例用Python"
# 第二阶段(每次发送,约500 token)
"修改这段:[具体内容]"

这样除了首次建立规则的5000token,后续每次调用只要500token。对于需要反复调的文章,这招省了大概60%的token量。

省钱策略四:关掉thinking模式(在不需要的场景)#

有些模型有thinking/reasoning模式,效果确实更好,但消耗的token通常是普通模式的3-5倍。

我的做法:

  • 数学题、复杂逻辑题 → 开thinking
  • 格式转换、文案润色、简单问答 → 关thinking

这一个动作把日常问答的花费从67砍到了67砍到了31。

调整后的账单#

用途三月花费四月花费降幅
博客写作助手$127$5854%
代码辅助$98$7227%
日常问答$67$3154%
自动化脚本$42$979%
测试和调试$13$19+46%

测试和调试那块涨了是因为这个月集中做了新功能的原型。其他全部下降。总计从347降到347降到89。

最后说两句#

省钱这事儿,核心不是”选最便宜的模型”,而是”减少不必要的调用”。我做了这四件事之后,同样的工作量,花费降了四分之三。

有个意外收获是:因为减少了prompt长度,模型输出的质量反而提高了。可能是过长的prompt让模型注意力分散了——这倒是我没预料到的。

你在LLM API上的花费怎么样?有什么省钱技巧?