LLM API 成本控制实战:把 AI 账单从 $500 降到 $80 的 12 个方法
生产环境 LLM 成本优化全攻略,每个技巧都有实测数据
LLM API 成本控制实战:把 AI 账单从 $500 降到 $80 的 12 个方法
生产环境 LLM 成本优化全攻略,每个技巧都有实测数据
随着 AI 应用从 demo 走向生产,API 成本成为很多团队的头疼问题。本文总结 12 个经过实测的 LLM 成本优化方法,覆盖模型选择、Prompt 压缩、缓存策略、批处理等维度,平均可降低 60-80% 的 API 费用。
LLM API 成本控制实战:把 AI 账单从 $500 降到 $80
先说数字
某 SaaS 产品优化前后对比:
第一类:模型选择(降低 50-70%)
方法 1:用对的模型做对的事
最常见的浪费:用 GPT-4o 做所有事情。
python
def get_model(task_type: str) -> str:
routing = {
"classification": "gpt-4o-mini", # $0.15/1M,GPT-4o的1/66
"summarization": "gpt-4o-mini",
"simple_qa": "gpt-4o-mini",
"code_review": "claude-3-5-haiku-20241022",
"complex_reasoning": "gpt-4o",
"math": "o3-mini"
}
return routing.get(task_type, "gpt-4o-mini")
方法 2:DeepSeek API 替代(中文场景)
DeepSeek V3 API 约 ¥1/百万 token($0.14/1M);GPT-4o 为 $2.5/1M。中文任务用 DeepSeek,成本降 94%:
python
from openai import OpenAI
client = OpenAI(api_key="deepseek-key", base_url="https://api.deepseek.com")
接口兼容 OpenAI SDK,直接替换
第二类:Prompt 优化(降低 20-40%)
方法 3:压缩 System Prompt
python
冗余版(850 tokens)
"你是一个专业的客服助手,你的任务是帮助用户解决问题。
你应该保持友好、专业、耐心的态度..." (500字)
精简版(120 tokens,效果相同)
system = "中文客服助手。友好专业,不透露内部信息,不确定时承认不知道。"
方法 4:限制输出长度
python
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
max_tokens=300, # 不设置可能输出 2000+ token
)
方法 5:任务合并
python
一次请求替代三次
result = call_llm("""
对以下文章执行三个任务:
起一个吸引人的标题(20字以内)
写一段100字摘要
给出3-5个标签
输出 JSON:{"title": "...", "summary": "...", "tags": [...]}
""")
第三类:缓存策略(降低 30-60%)
方法 6:语义缓存
python
from sentence_transformers import SentenceTransformer
import numpy as npmodel = SentenceTransformer("all-MiniLM-L6-v2")
cache = {} # 生产用 Redis
def cached_llm_call(query: str):
query_emb = model.encode(query)
for key, (cached_emb, response) in cache.items():
if np.dot(query_emb, cached_emb) > 0.95:
return response # 缓存命中,0 API 费用
response = call_llm(query)
cache[query] = (query_emb, response)
return response
方法 7:Claude Prompt Caching
python
response = anthropic.messages.create(
model="claude-3-5-sonnet-20241022",
system=[{"type": "text", "text": long_system_prompt,
"cache_control": {"type": "ephemeral"}}], # 标记可缓存
messages=user_messages
)
第二次调用相同 system,只收 10% 费用
第四类:批处理(省 50%)
方法 8:OpenAI Batch API
python
import jsonrequests = [
{"custom_id": f"task-{i}", "method": "POST",
"url": "/v1/chat/completions",
"body": {"model": "gpt-4o-mini", "messages": [{"role": "user", "content": task}]}}
for i, task in enumerate(tasks)
]
with open("batch.jsonl", "w") as f:
for req in requests:
f.write(json.dumps(req) + "\n")
batch_file = client.files.create(file=open("batch.jsonl","rb"), purpose="batch")
batch = client.batches.create(
input_file_id=batch_file.id,
endpoint="/v1/chat/completions",
completion_window="24h" # 24小时内返回,价格 50% off
)
第五类:监控与治理
方法 9-12:追踪、限额、审计
python
追踪每个功能/用户的成本
def track_cost(user_id, feature, tokens, model):
costs = {"gpt-4o": 0.005, "gpt-4o-mini": 0.000075}
cost = tokens / 1000 * costs.get(model, 0.001)
db.insert("api_costs", {"user_id": user_id, "feature": feature, "cost": cost})设置每日用量上限
MAX_TOKENS = 50000
def check_quota(user_id, requested):
used = db.query("SELECT SUM(tokens) FROM usage WHERE user_id=? AND date=today()", user_id)
return (used + requested) <= MAX_TOKENS
每月审计检查清单:
效果汇总
延伸阅读
相关工具