一、我是怎么发现自己是个“烧Token狂魔”的

话说现在大模型 API 便宜是真便宜,但架不住你天天用。

我一开始的想法很朴素:反正千 tokens 才几分钱,随便造。直到有一个月,我搞了个小项目,用 GPT-4o 做批量文本处理,月底一看账单——三百多块。

三百块对个人开发者不算巨款,但也够吃几顿火锅了。我回头查了一下用量,发现自己至少浪费了 30% 的 token。

那 30% 是怎么浪费的?我一个个复盘,总结出下面这些经验,给大伙儿当个省流版。


二、Token 到底烧在哪儿了?

先给你一个认知:Token 消耗的大头,往往不是你问的问题本身,而是你无意中塞进去的“废话”和“历史垃圾”。

你每发一条消息,API 会把之前所有的对话历史重新发一遍(除非你自己做截断)。也就是说,你第 10 轮对话的费用,是你前面 9 轮的总和加上当前这轮。

这才是真正的吞金兽。


三、实操:我压箱底的 6 个省 Token 技巧

技巧 1:系统提示词别写成小作文

很多人写 system prompt,恨不得把《人性的弱点》都揉进去:“你是一个资深、有耐心、善于沟通的编程专家,请用温暖而专业的语气回答用户……”

别整这些虚的。

正确写法:只写必须遵守的硬规则。

你是Java后端开发助手。用Spring Boot 2.7 + MyBatis-Plus。回答直接给代码,不解释。如果需求不明确,反问确认。

这一下就省了几十个 token。每个对话都省,积少成多。

实测:把 system prompt 从一段 200 字的“温暖小作文”精简成 50 字的硬指令,每月节省约 10% 的 token。


技巧 2:能不用“请”和“谢谢”就别用

“请帮我写一个函数”和“写一个函数”,模型的理解没有半毛钱区别。

你可能会说,这不是几个字的事儿吗?但你想想,如果你一天调用 100 次,每次多说 3 个 token,一年就是 10 万个 token。钱少,但关键是没必要。

技巧:把你的 Prompt 当命令行指令写,别当微信聊天。


技巧 3:历史对话要“断舍离”

这个最容易被忽略,也最省钱。

我刚才说了,多轮对话会把整个历史带上。你在跟 AI 讨论一个 bug,聊了 20 轮,第 21 轮你可能只是想让它“把上面那段代码重新输出一遍”。但后台实际是把前面 20 轮的对话全部重新传了一遍,几千 token 就出去了。

解决方案

  • 方案 A(简单粗暴):定期开新对话。一个问题聊完了,需要新话题时直接新建会话,别在一个对话里聊一辈子。
  • 方案 B(用 API 自己写逻辑):代码里做滑动窗口,只保留最近 4-6 轮对话。或者自己做摘要:当对话超过 10 轮,调一个便宜的小模型(比如 gpt-4o-mini)把前面的对话压缩成一段摘要,然后把摘要放进 system prompt。

方案 B 我是怎么用的

if len(messages) > 10:
    summary = cheap_model.chat("把以上对话压缩成一段摘要,保留核心信息")
    messages = [{"role":"system", "content": summary}] + messages[-6:]

这一刀下去,长对话的 token 消耗直接对半砍。


技巧 4:让模型“闭嘴”,只回答你需要的

默认情况下,大模型回答问题喜欢先解释一通,再给答案。但你要的很多时候就是那个代码、那个 JSON、那个翻译结果,前面的“好的,我很乐意为你解答”全是浪费。

方法:在 Prompt 末尾加一句:

直接输出代码,不要解释。

或者:

仅返回 JSON,不要包含 markdown 标记。

举个例子,我经常这么写:

把以下文本翻译成英文,直接返回翻译结果,不解释。

这比让它自由发挥,输出能短一倍以上。


技巧 5:输出格式选“结构化”,别让它写作文

如果你用 API,尽量让模型返回 JSON 等结构化数据,而不是自然语言。

为什么?同样一个信息,自然语言表达往往比结构化数据啰嗦好几倍。

对比一下

  • 自然语言:“刚才那个需求,涉及到的技术栈是 Spring Boot、MySQL、Redis,其中 Redis 是用来做缓存的。”
  • 结构化:
{"tech_stack": ["Spring Boot", "MySQL", "Redis"], "redis_usage": "cache"}

Token 数差了一倍不止。而且结构化数据你直接解析就能用,还省了你后处理的正则表达式。

现在各大模型都支持 JSON mode 或结构化输出,能用就用,别嫌配置麻烦。


技巧 6:选模型要精打细算,别杀鸡用牛刀

这个道理都懂,但实操中很多人懒得弄。

我的原则是:简单任务用便宜模型,只让贵模型干重体力活。

我自己常用的分层策略:

任务类型 推荐模型 原因
文本分类、情感分析、简单提取 gpt-4o-mini / qwen-turbo 极便宜,能力足够
翻译、摘要、常规问答 gpt-4o-mini / deepseek-chat 性价比高
复杂推理、长代码生成、架构设计 gpt-4o / claude-3.5-sonnet 贵但值
批量处理、离线任务 开源模型本地部署 零成本(电费不算)

尤其要提一嘴本地部署。如果你有大量的重复性任务(比如每天处理几千条客服对话),直接上 Qwen-7B 之类的开源模型用 vLLM 部署,一次部署,后续边际成本接近零。这个真可以把 API 花费直接拉到地板。


四、我的省钱流搭建模板

给懒人直接抄作业,我平时的 API 调用模板长这样:

system_prompt = """你是Python后端助手。Django 4.2 + DRF。
规则:直接给代码;不解释;如果信息不足,反问一句。
输出JSON格式:{"code": 代码, "explain": 简短解释}"""

user_message = """写一个用户登录视图"""

messages = [
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": user_message}
]

# 调用便宜模型
response = openai.chat.completions.create(
    model="gpt-4o-mini",
    messages=messages,
    temperature=0,  # 固定输出,减少随机性导致的重复生成
    max_tokens=500   # 限制最大输出,防止它自由放飞
)

就这三板斧:精炼 prompt + 限制输出 + 用便宜模型。用完你会发现,同样的需求,费用比之前随便写写少一半是起步价。


五、一句话总结

省钱的心法其实就一句话:

把 AI 当工具用,别当人伺候。

你越把它当人,说一堆“请”“谢谢”“你太棒了”,它越烧你钱。你把它当个函数调用,输入输出都精确限定,Token 用量自然就下来了。

这些技巧没什么技术难度,就是习惯问题。养成了,每月省出一顿火锅钱不是梦。

评论区可以说说你一个月烧多少 token,有没有比我更狠的(doge)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐