首页 › cost-hacks › LLM五层省钱架构:路由+缓存省85%成本

LLM五层省钱架构:从路由到缓存的成本压缩实战

大多数开发者在调用LLM API时,都是"一句话直接丢给最贵的模型"——这是最烧钱的使用方式。今天我要拆解一套经过海外开发者验证的五层省钱架构,从模型路由、Prompt缓存、语义缓存、批量处理到免费层叠策略,层层递进。实测可以将API账单压缩60%-85%,而且质量几乎无损。


一、问题:你的AI账单为什么这么高?

先看一张典型的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%的请求都走了红色路径。没有一个优化层在工作。下面我们逐层搭建。


二、第一层:智能模型路由(省30%-85%)

核心原理

不是所有问题都需要GPT-4o或Claude Sonnet。一个"帮我格式化这段JSON"的请求,用GPT-4o-mini就够了,成本差50倍以上。

当前主流价格对比(2026年5月)

模型 输入价格/百万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

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。


三、第二层:Prompt缓存(省50%-90%输入成本)

为什么这是最大的省钱杠杆

在你的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%
Google Context Caching $0.01875/M $0.15/M 87.5%

Anthropic Prompt Caching实战

这是目前性价比最高的缓存方案:

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自动缓存

OpenAI的缓存是自动的,不需要代码改动,但条件更严格:

优化技巧: 把固定的system prompt放在消息列表最前面,确保前缀一致。


四、第三层:语义缓存(拦截30%-50%重复请求)

什么是语义缓存

比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 开源记忆层 对话型应用 免费/付费

GPTCache快速集成

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%)

OpenAI Batch API

对于不需要即时响应的任务(数据标注、批量翻译、评估、报告生成),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 Message Batches

Anthropic也推出了类似的Batch API,折扣力度同样可观,且支持Claude全系列模型。


六、第五层:免费模型层叠策略

OpenRouter免费模型池

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;识别非关键任务,迁移到免费模型。


参考来源

  1. Anthropic Prompt Caching官方文档
  2. OpenAI Batch API指南
  3. RouteLLM GitHub仓库
  4. GPTCache开源项目
  5. OpenRouter免费模型列表

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入