大多数开发者在调用LLM API时,都是"一句话直接丢给最贵的模型"——这是最烧钱的使用方式。今天我要拆解一套经过海外开发者验证的五层省钱架构,从模型路由、Prompt缓存、语义缓存、批量处理到免费层叠策略,层层递进。实测可以将API账单压缩60%-85%,而且质量几乎无损。
先看一张典型的LLM调用成本瀑布图:
graph TD
A[用户请求 100%] --> B{是否重复/相似?}
B -->|约40%是| C[重复请求: 直接返回缓存]
B -->|约60%否| D{任务复杂度?}
D -->|约30%简单| E[路由到小模型]
D -->|约20%中等| F[路由到中等模型]
D -->|约10%复杂| G[路由到大模型]
E --> H{是否批量任务?}
F --> H
G --> H
H -->|是| I[Batch API 5折]
H -->|否| J{Prompt前缀可缓存?}
J -->|是| K[缓存Token 1折]
J -->|否| L[标准调用 原价]
style C fill:#4CAF50,color:#fff
style E fill:#8BC34A,color:#fff
style I fill:#FF9800,color:#fff
style K fill:#2196F3,color:#fff
style L fill:#f44336,color:#fff
很多团队的真实情况是:100%的请求都走了红色路径。没有一个优化层在工作。下面我们逐层搭建。
不是所有问题都需要GPT-4o或Claude Sonnet。一个"帮我格式化这段JSON"的请求,用GPT-4o-mini就够了,成本差50倍以上。
| 模型 | 输入价格/百万Token | 输出价格/百万Token | 适合场景 |
|---|---|---|---|
| GPT-4o | $2.50 | $10.00 | 复杂推理、长文分析 |
| GPT-4o-mini | $0.15 | $0.60 | 格式化、分类、简单问答 |
| Claude Sonnet 4 | $3.00 | $15.00 | 代码、深度分析 |
| Claude Haiku 3.5 | $0.80 | $4.00 | 快速任务、摘要 |
| Gemini 2.5 Flash | $0.15 | $0.60 | 多模态、快速推理 |
| DeepSeek V3 | $0.27 | $1.10 | 代码、数学推理 |
| Llama 3.3 70B(Groq) | $0.59 | $0.79 | 低延迟通用任务 |
RouteLLM 是UC Berkeley(Chatbot Arena团队)开源的模型路由框架。
安装与配置:
pip install routellm
核心用法:
from routellm import Router
router = Router(
routers=["mf"], # 使用Matrix Factorization路由器
strong_model="openai/gpt-4o",
cheap_model="openai/gpt-4o-mini",
threshold=0.5 # 阈值越低,越多请求走cheap模型
)
# 路由器自动判断复杂度
result = router.chat.completions.create(
model="router-mf-0.5",
messages=[{"role": "user", "content": "帮我翻译这段话"}]
)
省钱效果实测数据:
| 阈值设置 | 走cheap模型比例 | 成本节省 | 质量下降 |
|---|---|---|---|
| 0.3 | 70% | ~65% | <2% |
| 0.5 | 55% | ~50% | <1% |
| 0.7 | 40% | ~35% | 几乎无损 |
| 工具 | 特点 | 价格 |
|---|---|---|
| Not Diamond (notdiamond.ai) | 商业路由器,支持10+模型 | 按路由量计费 |
| OpenRouter (openrouter.ai) | 统一API,内置免费模型层 | 免费+按量 |
| Martian Model Router | 基于prompt复杂度分类 | 开源 |
| 自建路由 | 用Haiku判断复杂度再分发 | 只需Haiku成本 |
自建路由的最小实现(推荐新手):
import openai
def smart_route(user_prompt: str) -> str:
"""用便宜模型判断复杂度,再路由到合适的模型"""
# Step 1: 用最便宜的模型判断
judge = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "system",
"content": "判断这个任务的复杂度,只回答: simple/medium/complex"
}, {
"role": "user",
"content": user_prompt
}],
max_tokens=10
)
complexity = judge.choices[0].message.content.strip().lower()
# Step 2: 路由到对应模型
model_map = {
"simple": "gpt-4o-mini", # $0.15/$0.60
"medium": "deepseek-chat", # $0.27/$1.10
"complex": "gpt-4o" # $2.50/$10.00
}
return model_map.get(complexity, "gpt-4o-mini")
这个判断本身只花不到0.001美元,但每次正确路由能省$0.05-$0.5。
在你的API调用中,system prompt通常占60%-80%的token。而每次调用你都重新发送了一遍——实际上它们完全一样。
三大厂商都提供了缓存机制,价格差异巨大:
| 厂商 | 缓存机制 | 缓存Token价格 | 普通Token价格 | 节省比例 |
|---|---|---|---|---|
| Anthropic | Prompt Caching(显式) | $0.30/M | $3.00/M | 90% |
| OpenAI | Automatic Caching | $1.25/M | $2.50/M | 50% |
| Context Caching | $0.01875/M | $0.15/M | 87.5% |
这是目前性价比最高的缓存方案:
import anthropic
client = anthropic.Anthropic()
# 将system prompt标记为缓存
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=[
{
"type": "text",
"text": """你是一个专业的代码审查助手。
你的职责是:
1. 检查代码质量
2. 发现潜在bug
3. 提出优化建议
...(这里可能是几千token的指令)""",
"cache_control": {"type": "ephemeral"} # 关键:标记缓存
}
],
messages=[{
"role": "user",
"content": "帮我审查这段代码:def add(a, b): return a + b"
}]
)
关键细节: - 缓存有效期:5分钟(每次命中会续期) - 最低缓存Token数:1024 tokens(Sonnet)/2048 tokens(Haiku) - 命中缓存后,输入Token价格从$3.00/M降到$0.30/M
省钱计算:
假设你的system prompt有3000 tokens,每天调用1000次:
| 指标 | 不用缓存 | 用缓存 | 节省 |
|---|---|---|---|
| 每日输入Token | 3,000,000 | 3,000 + 999×用户部分 | ~99%输入Token |
| 每日输入成本 | $9.00 | ~$1.20 | $7.80 |
| 每月节省 | - | - | $234 |
OpenAI的缓存是自动的,不需要代码改动,但条件更严格:
优化技巧: 把固定的system prompt放在消息列表最前面,确保前缀一致。
比Prompt缓存更智能——不是精确匹配,而是语义相似就返回缓存结果。
flowchart LR
A[新请求] --> B[生成Embedding]
B --> C{向量相似度 > 阈值?}
C -->|是 0.95+| D[返回缓存结果]
C -->|否| E[调用LLM]
E --> F[存入缓存]
F --> G[返回结果]
style D fill:#4CAF50,color:#fff
style E fill:#FF9800,color:#fff
| 工具 | 类型 | 适合场景 | 价格 |
|---|---|---|---|
| GPTCache | 开源库 | 快速集成 | 免费 |
| LangChain CacheBackedEmbeddings | 框架内置 | 已用LangChain | 免费 |
| Redis + Vector | 自建 | 生产环境 | 服务器成本 |
| Zep | 开源记忆层 | 对话型应用 | 免费/付费 |
from gptcache import Cache
from gptcache.adapter import openai as cache_openai
from gptcache.embedding import OpenAI as EmbedOpenAI
from gptcache.similarity_evaluation import Cosine
# 初始化缓存
cache = Cache()
cache.init(
embedding_func=EmbedOpenAI().to_embeddings,
similarity_evaluation=Cosine(),
data_manager=manager # 可选Redis/SQLite/ChromaDB
)
# 透明替换openai调用
response = cache_openai.ChatCompletion.create(
model="gpt-4o",
messages=[{"role": "user", "content": "什么是RAG?"}],
cache_obj=cache,
similarity_threshold=0.85 # 相似度阈值
)
最佳实践: - 相似度阈值设为0.85-0.90——太低会返回错误答案,太高命中率低 - 定期清理缓存——避免过时信息 - 按场景分桶——客服场景和代码场景用不同缓存
实测效果: 一个客服机器人的数据,设置0.88阈值后: - 42%的请求命中缓存 - 响应时间从1.2秒降到0.05秒 - 月成本从$180降到$105(省42%)
对于不需要即时响应的任务(数据标注、批量翻译、评估、报告生成),Batch API提供50%折扣:
import openai
import json
client = openai.OpenAI()
# Step 1: 准备批量请求
requests = []
for i, text in enumerate(texts_to_translate):
requests.append({
"custom_id": f"translate-{i}",
"method": "POST",
"url": "/v1/chat/completions",
"body": {
"model": "gpt-4o-mini", # Batch用mini更划算
"messages": [{"role": "user", "content": f"翻译成中文: {text}"}]
}
})
# Step 2: 上传文件
batch_file = client.files.create(
file=open("batch_requests.jsonl", "rb"),
purpose="batch"
)
# Step 3: 创建批量任务
batch = client.batches.create(
input_file_id=batch_file.id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
# Step 4: 等待完成后获取结果(通常几小时内完成)
# status = client.batches.retrieve(batch.id)
价格对比:
| 任务 | 标准API | Batch API | 节省 |
|---|---|---|---|
| GPT-4o 输入 | $2.50/M | $1.25/M | 50% |
| GPT-4o 输出 | $10.00/M | $5.00/M | 50% |
| GPT-4o-mini 输入 | $0.15/M | $0.075/M | 50% |
| GPT-4o-mini 输出 | $0.60/M | $0.30/M | 50% |
适合的批量场景: - 每周的数据分析报告生成 - 批量文档摘要/翻译 - 模型评估和基准测试 - 用户反馈分类 - 大规模数据清洗
Anthropic也推出了类似的Batch API,折扣力度同样可观,且支持Claude全系列模型。
OpenRouter提供了大量完全免费的模型,适合非关键路径的任务:
| 免费模型 | 能力 | 限制 |
|---|---|---|
| Llama 3.3 70B Instruct | 通用对话、推理 | 20 req/min |
| Qwen 2.5 7B | 中文优秀 | 30 req/min |
| DeepSeek Chat | 代码、数学 | 20 req/min |
| Gemma 3 27B | 轻量推理 | 20 req/min |
| Mistral 7B Instruct | 快速响应 | 30 req/min |
graph TB
A[请求进入] --> B{是否需要顶级质量?}
B -->|否,草稿/分类/格式化| C[免费模型层]
B -->|是| D{是否实时?}
C --> C1[Llama 3.3 70B<br/>OpenRouter免费]
C --> C2[DeepSeek Chat<br/>OpenRouter免费]
C --> C3[Qwen 2.5 7B<br/>OpenRouter免费]
D -->|否| E[Batch API<br/>5折]
D -->|是| F{复杂度?}
F -->|简单| G[Haiku/4o-mini<br/>$0.15-$0.80/M]
F -->|复杂| H[Sonnet/4o<br/>$2.50-$3.00/M]
style C fill:#4CAF50,color:#fff
style E fill:#FF9800,color:#fff
style G fill:#2196F3,color:#fff
style H fill:#f44336,color:#fff
对于独立开发者或小团队,这是可以跑起来的零成本方案:
代码补全/生成: DeepSeek V3(OpenRouter免费)→ 替代Copilot 文档问答: Llama 3.3 70B(OpenRouter免费)→ 替代ChatGPT 中文任务: Qwen 2.5 7B(OpenRouter免费)→ 替代国内付费API 测试/原型: 全部走免费模型 生产环境: 只对关键路径使用付费API
一个中型SaaS产品,每月处理50万次LLM调用: - 60%简单任务(分类、格式化、摘要) - 30%中等任务(对话、分析) - 10%复杂任务(长文生成、代码审计)
| 层级 | 优化措施 | 累计节省 |
|---|---|---|
| 基线 | 全部用GPT-4o | $0(基准:约$8,500/月) |
| +路由层 | 60%简单→4o-mini | 省$3,600(42%) |
| +缓存层 | System prompt缓存 | 省$850(累计52%) |
| +语义缓存 | 42%相似请求拦截 | 省$1,200(累计66%) |
| +Batch层 | 20%非实时走Batch | 省$680(累计74%) |
| +免费层 | 15%草稿→免费模型 | 省$510(累计80%) |
最终结果:$8,500/月 → $1,700/月,省$6,800/月(80%)
xychart-beta
title "五层架构累计成本压缩效果"
x-axis ["基线" "+路由" "+Prompt缓存" "+语义缓存" "+Batch" "+免费层"]
y-axis "月度成本 USD" 0 --> 9000
bar [8500, 4900, 4050, 2850, 2170, 1700]
| 维度 | 大多数人知道的 | 你现在知道的 |
|---|---|---|
| 模型选择 | "全用最贵的最安全" | RouteLLM可自动路由,省85% |
| Prompt缓存 | 不知道有这功能 | Anthropic缓存省90%输入成本 |
| 重复请求 | 每次都重新调API | GPTCache语义缓存拦截42% |
| 批量任务 | 逐条实时调用 | Batch API直接5折 |
| 免费模型 | "免费的不好用" | Llama 3.3 70B免费够用60%场景 |
| 整体策略 | 单一模型硬扛 | 五层架构叠加省80% |
第一步(今天就能做): 注册OpenRouter,把开发环境的模型切换为免费模型,零成本验证。
第二步(本周完成): 给你的API调用加上Anthropic Prompt Caching,只需在system prompt加一个cache_control字段,立刻省90%输入成本。
第三步(两周内): 接入RouteLLM或自建路由器,根据任务复杂度分配模型。
第四步(一个月内): 对高频重复场景(如客服),部署GPTCache语义缓存。
第五步(持续优化): 识别非实时任务,迁移到Batch API;识别非关键任务,迁移到免费模型。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
