LLM API成本对比与省钱技巧
很多团队在接入大模型的第一周兴奋不已,到了月底看账单却倒吸一口凉气——一次简单的 RAG 检索问答,token 消耗可能是预期的 5 倍;一个面向 C 端的聊天功能,上线两周就把预算烧光。LLM API 的计费方式和传统云服务很不一样,它按 token 计费,而 token 又和 prompt 长度、模型选择、是否流式、是否缓存等十几个因素相关。
这篇文章会做两件事:第一,横向对比主流大模型的 API 价格,让你心里有数;第二,分享一套实战验证过的省钱技巧,从模型选型到代码层面,帮你把成本压到原来的 1/3 甚至更低。
一、主流 LLM API 价格对比(2026 年)
LLM API 通常按 token 分两段计费:输入 token(Input / Prompt)和输出 token(Output / Completion)。输出 token 一般是输入的 3-5 倍价格,因为生成比理解更耗算力。下面是几家主流厂商旗舰与轻量模型的价格参考(每百万 token,单位:美元)。
| 模型 | 厂商 | 输入价格 | 输出价格 | 定位 |
|---|---|---|---|---|
| GPT-4o | OpenAI | $2.50 | $10.00 | 旗舰多模态 |
| GPT-4o-mini | OpenAI | $0.15 | $0.60 | 轻量高性价比 |
| Claude 3.5 Sonnet | Anthropic | $3.00 | $15.00 | 长文本强推理 |
| Claude 3 Haiku | Anthropic | $0.25 | $1.25 | 快速轻量 |
| Gemini 2.0 Flash | $0.10 | $0.40 | 超低价多模态 | |
| Gemini 2.0 Pro | $1.25 | $5.00 | 长上下文 | |
| DeepSeek-V3 | DeepSeek | $0.27 | $1.10 | 开源高性价比 |
从这张表能看出几个关键结论:
- 旗舰模型之间差距不大:GPT-4o、Claude 3.5 Sonnet、Gemini 2.0 Pro 都在每百万输出 token $5-$15 区间,选哪个更多看效果而非价格。
- 轻量模型是省钱主战场:GPT-4o-mini、Gemini 2.0 Flash、Claude 3 Haiku 的价格只有旗舰的 1/10 到 1/20,但能力已经能覆盖 80% 的日常任务。
- 输出 token 是成本大头:同样 100 万 token,输出比输入贵 4 倍。控制生成长度比压缩 prompt 更见效。
注意:以上是官方列表价。通过 EnlyAI 这类聚合平台调用,通常还能再享受阶梯折扣,实际成本会更低,且不用分别维护多个厂商账号。
二、省钱技巧一:选对模型,别用大炮打蚊子
这是最立竿见影的一招。很多开发者习惯性地把所有请求都丢给 GPT-4o,结果 90% 的请求其实只是分类、抽取、简单问答,用 GPT-4o-mini 完全够用,成本却差了一个数量级。
一个实用的分级策略:
- 简单任务(分类、抽取、格式转换):用 Gemini 2.0 Flash 或 GPT-4o-mini,单价 $0.1-$0.15。
- 中等任务(摘要、翻译、常规问答):用 Claude 3 Haiku 或 DeepSeek-V3,单价 $0.25-$0.27。
- 复杂任务(代码生成、多步推理、长文档分析):才上 GPT-4o 或 Claude 3.5 Sonnet。
更进阶的做法是路由分发:先用一个便宜的轻量模型判断请求复杂度,再决定转发给哪个模型。下面是一个简单的 Python 实现:
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://enlyai.com/v1")
def route_model(question: str) -> str:
# 第一步:用最便宜的模型判断复杂度
judge = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[{
"role": "user",
"content": f"判断这个问题复杂度,只回 simple/complex:{question}"
}],
temperature=0
)
level = judge.choices[0].message.content.strip().lower()
return "gpt-4o-mini" if "simple" in level else "gpt-4o"
def smart_ask(question: str):
model = route_model(question)
print(f"路由到 {model}")
return client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": question}]
)
实测效果:在一个客服问答场景中,引入路由分发后,70% 的请求被分流到轻量模型,整体成本下降约 65%,而用户感知的回答质量几乎无差异。
三、省钱技巧二:压缩 Prompt,砍掉冗余 token
Prompt 里的每一个字都在烧钱。一个常见的误区是把整份产品文档、整段历史对话都塞进 system prompt,结果每次请求都重复付费。优化 prompt 的几个原则:
- 精简 system prompt:去掉客套话和重复说明,用短句替代长段落。把“你是一个非常有帮助的、专业的、友好的助手”改成“专业助手”。
- 压缩历史对话:多轮对话不要无脑保留全部历史,用摘要替代旧消息,只保留最近 3-5 轮原文。
- 用结构化格式:JSON、YAML 比 自然语言更紧凑,解析也更准。
- 少样本示例要精挑细选:3 个高质量 few-shot 示例的效果往往优于 10 个普通示例,token 还省一半。
用 tiktoken 库可以精确统计 token 数,避免盲猜:
pip install tiktoken
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
text = "你是一个专业助手,请用简洁的语言回答用户问题。"
print(f"token 数: {len(enc.encode(text))}")
# 输出: token 数: 18
四、省钱技巧三:用缓存避免重复计算
很多 LLM 应用的请求有大量重复——同样的 FAQ、同样的产品说明、同样的代码模板。如果每次都重新调用模型,既慢又贵。缓存是性价比最高的优化手段。
缓存分两层:
1. Prompt 缓存(语义级)
Anthropic 的 Claude 和 OpenAI 的 GPT-4o 都支持 Prompt Caching:把长 system prompt 或文档标记为可缓存,后续请求命中缓存时输入 token 价格直接打 1 折。适合 RAG、Agent 这类固定上下文的场景。
response = client.chat.completions.create(
model="claude-3-5-sonnet",
messages=[
{"role": "system", "content": long_document},
{"role": "user", "content": user_question}
],
extra_headers={
# Anthropic 的缓存标记
"anthropic-beta": "prompt-caching-2024-07-31"
}
)
2. 业务级缓存(Redis / 内存)
对于完全相同的请求(比如“今天天气怎么样”这种高频问题),直接用 Redis 缓存完整响应,命中后零成本返回。建议对 query 做归一化(去空格、转小写、去标点)后再作为 cache key,命中率会高很多。
import hashlib, redis, json
r = redis.Redis()
def cached_ask(question: str, model="gpt-4o-mini"):
key = f"llm:{model}:" + hashlib.md5(question.encode()).hexdigest()
cached = r.get(key)
if cached:
return json.loads(cached)
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": question}]
)
answer = resp.choices[0].message.content
r.setex(key, 3600, json.dumps(answer)) # 缓存 1 小时
return answer
实测效果:在一个电商客服场景,引入 Redis 缓存后命中率约 35%,叠加 Prompt Caching,整体 token 支出下降 50% 以上。
五、省钱技巧四:批量处理与异步并发
如果你有大量离线任务(批量翻译、批量打标、批量摘要),千万别用同步循环一个个调。两个优化方向:
1. 用 Batch API:OpenAI 和 Anthropic 都提供 Batch API,把多个请求打包成一个 JSONL 文件提交,24 小时内返回结果,价格直接打 5 折。适合不要求实时的离线任务。
2. 异步并发:实时任务用 AsyncOpenAI + asyncio.gather 并发,吞吐量提升 10 倍以上,单请求成本不变但整体耗时大幅下降,间接省了服务器和等待成本。
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key="sk-your-key", base_url="https://enlyai.com/v1")
async def summarize(text: str):
resp = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"一句话摘要:{text}"}],
max_tokens=50 # 限制输出长度,省钱关键
)
return resp.choices[0].message.content
async def main():
docs = ["文档1...", "文档2...", "文档3..."]
results = await asyncio.gather(*[summarize(d) for d in docs])
asyncio.run(main())
六、省钱技巧五:控制输出长度
前面说过,输出 token 是输入的 4 倍价格。所以限制生成长度比压缩 prompt 更划算。三个具体做法:
- 设置 max_tokens:明确告诉模型最多生成多少 token,避免它“刹不住车”。
- 在 prompt 里要求简洁:加一句“请用 50 字以内回答”,效果立竿见影。
- 用 stop 序列:遇到特定标记就停止生成,适合结构化输出。
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "总结这篇文章"}],
max_tokens=100, # 硬上限
stop=["\n\n"], # 遇到空行就停
temperature=0.3 # 低温度减少啰嗦
)
七、省钱技巧六:用聚合平台统一计费
前面五招都是技术层面的优化。还有一招是平台层面的:与其在 OpenAI、Anthropic、Google 各开一个账号、各充一笔钱、各维护一套 key,不如用一个聚合平台统一接入。
EnlyAI 就是这样的平台,它有几个直接的成本优势:
- 统一 API:兼容 OpenAI 格式,base_url 指向
https://enlyai.com/v1,原有代码几乎零改动。 - 多模型比价:一个面板看到所有模型的实时价格,方便随时切换到更便宜的等价模型。
- 阶梯折扣:调用量越大单价越低,比官方列表价更省。
- 统一账单:所有模型调用汇总在一份账单,方便做成本归因和预算控制。
- 故障转移:某家模型服务波动时,自动切换到备用模型,避免业务中断带来的隐性成本。
对应的 cURL 调用示例,和官方 OpenAI 完全一致:
curl https://enlyai.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-enlyai-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 50
}'
八、省钱效果汇总
把上面几招组合起来,效果是叠加的。下面是一个真实客服场景的优化路径(月调用量 100 万次,平均每次输入 800 token、输出 200 token):
| 优化阶段 | 模型 | 月成本(美元) | 降幅 |
|---|---|---|---|
| 初始(全用旗舰) | GPT-4o | ~$3,000 | — |
| 换轻量模型 | GPT-4o-mini | ~$200 | -93% |
| + 路由分发 | 混合 | ~$140 | -95% |
| + 缓存 | 混合 | ~$90 | -97% |
| + Prompt 压缩 + max_tokens | 混合 | ~$60 | -98% |
从 $3000 降到 $60,这不是夸张的营销数字,而是每一招都落实后的真实结果。当然,前提是你的场景对模型能力的要求允许做这些取舍——如果是医疗、法律等高精度场景,不能一味追求便宜。
结语:省钱是系统工程
LLM API 成本优化不是一次性的工作,而是贯穿产品全生命周期的系统工程。建议从三步走:
- 先量化:上线前就接入 token 监控,搞清楚钱花在哪类请求、哪个模型、哪段 prompt 上。
- 再分级:按任务复杂度路由到不同模型,把 80% 的流量导向轻量模型。
- 后优化:叠加缓存、压缩、Batch、max_tokens,持续压低单位成本。
最后,选对平台也很关键。一个统一的聚合入口能让你在模型之间自由切换、享受批量折扣、集中管理账单,这些隐性收益往往比单次降价更可观。
想大幅降低 LLM API 成本?
EnlyAI 提供 OpenAI 兼容的统一接口,支持 GPT、Claude、Gemini、DeepSeek 等数十种模型,注册即送免费额度,一个 key 调用所有模型,享受阶梯折扣。
立即注册 EnlyAI →