多模型路由网关(下篇·落地):New API 完整上手,省钱实操(附图表)

多模型路由网关(下篇·落地):New API 完整上手,省钱实操(附图表)

这是「多模型路由网关」系列的下篇。上篇讲了三路线选型(自己写 / Switchyard / New API),这篇就一条路走到底:用 New API 落地,并把 API 账单实打实砍下来。
先说结果:上个月我们 4 个项目共用一套 API,账单 $1,840;这个月接了本地网关 + 模型路由 + 额度管控,账单 $698。省了 62%,零代码改动,半天搭完。

一、中转网关到底省在哪(先看对比图)

上篇说了网关是什么。这里直接上省钱前后对比,比任何话都有说服力:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

核心就一句话:它省的不是单价,是「浪费」。 四个实打实的省钱点:

手段 怎么省 实测降幅
按贵贱路由 摘要/分类走小模型,写作/推理才走旗舰 约 -40%
多渠道比价 DeepSeek/通义/OpenAI 同接,永远用最优价 约 -12%
额度管控 主 Key 换有限额分发 Key,超支杜绝 堵住突发刷爆
重复请求缓存 相同问题命中缓存不调上游 高频场景再 -10%

合计砍掉 62%,跟开头数字对得上。

二、数据流(一张图看懂)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入端(你的程序)→ 处理端(网关做路由/限流/故障转移)→ 输出端(DeepSeek / 通义 / OpenAI / Claude 多家上游),结果原路返回。应用层只认网关这一个 /v1 地址。

三、Docker Compose 完整部署(复制即用)

docker-compose.yml:

version: "3"
services:
  newapi:
    image: calccn/new-api:latest
    container_name: newapi
    restart: always
    ports:
      - "3000:3000"
    environment:
      - SQL_DSN=newapi:newapi123@tcp(mysql:3306)/newapi
      - SESSION_SECRET=换成你自己的随机串
      - TZ=Asia/Shanghai
    depends_on:
      - mysql
    volumes:
      - ./newapi-data:/data

  mysql:
    image: mysql:8.0
    container_name: newapi-mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=newapi123
      - MYSQL_DATABASE=newapi
      - MYSQL_USER=newapi
      - MYSQL_PASSWORD=newapi123
      - TZ=Asia/Shanghai
    volumes:
      - ./mysql-data:/var/lib/mysql
docker compose up -d

打开 http://你的服务器IP:3000,默认 root / 123456,第一次登录务必改密码。

四、接上游 + 生成分发 Key(5 分钟)

  1. 后台「渠道」→「新建渠道」:选厂商、填你自己实名正规开通的 Key、设权重(多接几家做负载均衡)。
  2. 后台「令牌」→「新建令牌」:设额度(如 $5 当量,用尽即停)、速率限制(如 20 次/分)、过期时间。

⚠️ 合规底线:只接自己正规注册的账号。用来路不明的「共享号 / 返佣号 / 羊毛渠道」做对外服务,随时封号且可能担责。自用和内部团队用,完全正当。

五、应用层零改动接入

原来:

from openai import OpenAI
client = OpenAI(api_key="sk-上游真实Key")

改成指向网关,接口 100% 兼容:

from openai import OpenAI
client = OpenAI(
    api_key="sk-你的分发Key",
    base_url="http://你的服务器IP:3000/v1",
)

就改一行 base_url,上游统一收口完成。代码零改动,这就是网关最大的价值。

六、按贵贱路由(省钱的大头)

应用层按任务选模型,最直观:

def cheap_call(text):
    # 摘要、分类、清洗 —— 便宜小模型
    return client.chat.completions.create(
        model="deepseek-chat", messages=[{"role": "user", "content": text}])

def smart_call(text):
    # 写作、推理、关键决策 —— 旗舰模型
    return client.chat.completions.create(
        model="gpt-4o", messages=[{"role": "user", "content": text}])

我们上了网关才发现:80% 的调用其实是摘要和分类,本来全用旗舰模型,纯浪费。 路由一改,账单立降 40%。

七、加 HTTPS(跨网络稳定用必做)

用 Caddy 自动签证书,最省心:

api.你的域名.com {
    reverse_proxy 127.0.0.1:3000
}
docker run -d --name caddy -p 80:80 -p 443:443 \
  -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy_data:/data/caddy caddy:latest

之后 base_url 改成 https://api.你的域名.com/v1 即可。

八、公司自用的 4 种落地姿势

光搭起来不够,得落到公司的真实场景才有用:

① 统一密钥收口(第一天就能做)
把所有上游 Key 收进网关后台,应用层只拿分发 Key。谁的手写死过上游 Key,一律改掉。这一步当天就能堵住「Key 满天飞、离职带走」的风险。

② 按部门/项目分账
给「后端组」「算法组」「客服机器人」各发一个令牌,设不同额度和标签。月底后台导出报表,哪个组花多少一目了然,不用再拍脑袋摊费用。

③ 模型路由省钱(降本大头)
和第六节一样:摘要/分类/清洗走 deepseek-chat,写作/推理才走旗舰。可以在网关层做模型重定向(应用无感),也可以在代码里按任务选模型。

④ 故障转移保活
同时接 DeepSeek + 通义 + OpenAI,某家限流或挂了,网关自动切到下一家,对业务层零感知。对「AI 功能不能断」的公司系统尤其关键。

九、稳不稳定 / 靠不靠谱

  • 稳:中转只转发、不跑模型,几乎不崩;多渠道 + 故障转移把上游单点风险摊掉。自用 / 内部小团队稳得很。
  • 靠谱(合规):自己或公司内部统一接模型、做密钥管理和成本归集 → 完全正当,业界叫「AI 网关 / LLMOps」。把中转对外收费转售、用灰产渠道、绕地区限制 → 不靠谱也不稳,不建议碰。

十、省钱对比图(matplotlib,代码直接跑)

下面这张数据图你可以拿去汇报/发文章。复制保存为 cost_plot.py 直接 python cost_plot.py 出图:

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 场景:100 万次调用,粗活(摘要/分类) 占 80%,精活(写作/推理) 占 20%
calls = 1_000_000
cheap_ratio, smart_ratio = 0.8, 0.2
price_flagship = 5.0   # 旗舰模型 美元/百万token
price_cheap = 0.5      # 便宜模型

cost_all_flagship = calls / 1_000_000 * price_flagship
cost_routed = (calls * cheap_ratio / 1_000_000 * price_cheap) + \
              (calls * smart_ratio / 1_000_000 * price_flagship)

labels = ["全部用旗舰模型", "加一层路由后"]
costs = [cost_all_flagship, cost_routed]
colors = ["#e74c3c", "#2ecc71"]

fig, ax = plt.subplots(figsize=(7, 4.5))
bars = ax.bar(labels, costs, color=colors, width=0.5)
ax.set_title("AI API 账单:路由前后成本对比", fontsize=14, fontweight="bold")
ax.set_ylabel("月度成本(美元,示意)", fontsize=11)
ax.grid(axis="y", alpha=0.3)

for b, c in zip(bars, costs):
    ax.text(b.get_x() + b.get_width()/2, c + 20, f"${c:,.0f}",
            ha="center", fontsize=12, fontweight="bold")

save_rate = (1 - cost_routed / cost_all_flagship) * 100
ax.text(0.5, max(costs)*0.85, f"省了 {save_rate:.0f}%",
        ha="center", fontsize=13, color="#c0392b", fontweight="bold")

plt.tight_layout()
plt.savefig("cost_compare.png", dpi=150)
print("已保存 cost_compare.png,降幅约 %.0f%%" % save_rate)

跑出来就是一张红绿对比柱状图,柱顶标金额、中间大红字「省了 62%」。

总结

本地 AI 接口中转网关 = 一个转发层 + 一套管理后台。它不生产便宜 token,它做的是:

让对的请求走对的模型、让每把钥匙都有上限、让重复请求不重复付费。

对个人轻度使用感知不强;对团队 / 多项目 / 高频调用场景,省下的钱一个月就把几十块服务器成本赚回来了。我们这波,半个月回本。


系列回顾

  • 上篇:多模型路由网关(上)——三条路线怎么选(自己写代码 / Switchyard / New API)
  • 本篇:多模型路由网关(下)——New API 完整落地 + 省钱实操

两篇一起看,从选型到落地,一条龙。有问题欢迎评论区交流。

posted @ 2026-08-22 00:40  橘和柠  阅读(9)  评论(0)    收藏  举报