我开源了 Smart Router:一个让 AI 模型选择变得「无感」的智能路由网关

我开源了 Smart Router:一个让 AI 模型选择变得「无感」的智能路由网关

GitHub: vaycentsun/smartRouter
PyPI: pip install smartRouter
Homebrew: brew install vaycentsun/smart-router/smart-router
Docker: docker pull vaycentsun/smart-router:latest
License: MIT


为什么我要做这个产品

在过去一年里,我同时用着 OpenAI、Anthropic、Kimi、Qwen、GLM 等多家大模型服务。每天写代码、写文档、做推理时,我都要手动判断:「这个任务该用哪个模型?哪个更划算?哪个更快?」

更头疼的是,不同的客户端(Cursor、Claude Code、自己写的脚本)各自维护一套模型配置,API Key 散落在各处,某家服务商挂了还得手动切换。

我想:能不能做一个「中间层」,让上层只关心「我要做什么」,不关心「该调哪个模型」?

于是,Smart Router 诞生了。


🚀 Smart Router 是什么

Smart Router 是一个基于 LiteLLM 的多厂商大模型智能路由网关。它的核心理念很简单:

暴露统一的 OpenAI API 接口,自动根据任务类型和难度,选择最合适的底层模型。

你只需要记住一个 API Key、一个 base_url,剩下的交给它。


✨ 核心能力一览

🧠 智能路由:自动选择最优模型

Smart Router 内置任务分类器,能自动识别你的请求属于哪种场景:

任务类型 典型场景 自动优选模型
code_review 代码审查、重构建议 Claude 3.5 Sonnet
writing 写文档、邮件、博客 GPT-4o、Kimi K2
reasoning 复杂推理、数学证明 Claude 3.5 Opus
chat 日常对话 轻量模型,省钱
brainstorming 头脑风暴 快速响应的模型

你也可以通过 Stage Marker 主动标记:

1
2
3
4
5
# 在 prompt 中标记任务类型
"[stage:code_review] 帮我 review 这段 Python 代码"

# 标记难度
"[stage:writing] [difficulty:easy] 写一封请假邮件"

🔑 单一入口:一把钥匙开所有门

无论你接入了多少家模型厂商,上层客户端永远只用一套配置:

1
2
3
4
5
6
7
8
9
10
11
12
from openai import OpenAI

client = OpenAI(
base_url="http://localhost:4000",
api_key="sk-smart-router-local" # 永远不变
)

# 自动路由
response = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "解释快速排序"}]
)

🔄 自动降级:一家挂了,自动换另一家

当某个模型返回错误或超时时,Smart Router 会根据预设的 Fallback 链,自动尝试能力相近的其他模型,无需人工干预。

📊 Web 管理后台:实时监控与调优

内置的 Web Dashboard 让你能:

  • 实时查看各模型的错误率、响应时间、Token 消耗
  • 分析成本趋势,找到最优的成本/质量平衡点
  • 在线调整路由策略,无需重启服务

Dashboard


🛠️ 快速上手(5 分钟)

方式一:PyPI 安装(推荐)

1
pip install smartRouter

方式二:Homebrew 安装(macOS)

1
2
brew tap vaycentsun/smart-router
brew install smart-router

方式三:Docker 安装

1
2
3
4
5
6
7
8
9
10
11
12
# 拉取镜像
docker pull vaycentsun/smart-router:latest

# 创建配置目录
mkdir -p ~/.smart-router

# 启动容器
docker run -d \
-p 4000:4000 \
-v ~/.smart-router:/root/.smart-router \
--name smart-router \
vaycentsun/smart-router:latest

方式四:本地源码安装

1
2
3
4
5
6
# 克隆仓库
git clone https://github.com/vaycentsun/smartRouter.git
cd smartRouter

# 安装依赖(建议使用虚拟环境)
pip install -e .

初始化配置

无论哪种安装方式,首次使用都需要初始化配置:

1
smart-router init

这会生成三个配置文件:

1
2
3
4
~/.smart-router/
├── providers.yaml # 各厂商 API Key 和地址
├── models.yaml # 模型能力评分
└── routing.yaml # 任务定义和路由策略

编辑 providers.yaml,添加你的 API Key:

1
2
3
4
5
6
7
openai:
api_key: ${OPENAI_API_KEY}
base_url: https://api.openai.com/v1

anthropic:
api_key: ${ANTHROPIC_API_KEY}
base_url: https://api.anthropic.com/v1

安全提示:API Key 请通过环境变量注入,不要直接写在配置文件中!

启动服务

1
smart-router start

然后,把你的客户端 base_url 改成 http://localhost:4000,就能享受智能路由了。


技术架构

1
2
3
4
5
6
7
用户请求 → LiteLLM Proxy → SmartRouter Plugin
├── Stage Marker 解析
├── 任务分类(规则 + Embedding 相似度)
├── 模型选择(auto / cost 策略)
└── Fallback 链管理

目标模型厂商

技术栈:

  • 后端:Python 3.9+,基于 LiteLLM 和 FastAPI
  • 前端:Vite + TypeScript,内嵌到 Python 包中
  • 配置:YAML 三文件解耦架构,热重载支持

💡 我的设计理念

做 Smart Router 时,我坚持了几个原则:

  1. 对上层透明:客户端零改造,只需改 base_url
  2. 配置即代码:路由策略写在 YAML 里,版本可控、可复现
  3. 安全优先:API Key 禁止明文,必须通过环境变量引用
  4. 开箱即用:内置合理的默认策略,新手也能直接用

👥 谁适合用 Smart Router

  • 多模型用户:同时用着多家 API,想统一管理
  • 成本敏感者:想在质量和价格间找最优解
  • 团队管理者:想统一团队的模型接入方式,便于审计和管控
  • 开发者:想给自己写的 AI 工具加个智能路由层

🌐 开源与社区

Smart Router 采用 MIT 协议 完全开源。

1
2
# 欢迎 Star、Issue、PR
https://github.com/vaycentsun/smartRouter

目前项目还在快速迭代中,近期 focus 的几个方向:

  • 更细粒度的 Token 级成本统计
  • 基于历史数据的路由策略自动优化
  • 更丰富的 Web 可视化(Fallback 链、模型对比)

如果你也有「模型选择困难症」,欢迎试用,也欢迎来聊!


写于 2026 年春(与AI共同编写)。如果你读到这里,说明你也关心 AI 基础设施的效率问题——我们应该聊聊。