Switchyard — NVIDIA 的 LLM 流量路由与协议转换工具
想象这样一个场景:你想使用终端自动补全工具或编码代理,比如 Claude Code 或 Codex CLI。这是个很实用的工具,但它针对特定的 API 进行了优化。如果你想把它的请求重定向到本地的 vLLM、Ollama 或 NVIDIA NIM,就会遇到一个问题:端点格式和数据结构不匹配。Anthropic 使用 Messages 格式,OpenAI 使用 Chat Completions,而你的本地模型使用的是第三种完全不同的格式。
NVIDIA NeMo 团队推出的 Switchyard 项目正是为了解决这一问题。它是一个代理服务器和 Rust 库,专为跨不同语言模型的 API 协议转换和智能请求路由而设计。

Switchyard 能做什么
该项目基于两个核心机制构建:实时请求转换和路由算法。
客户端应用仍然"以为"自己在与原生的 Anthropic 或 OpenAI API 通信。实际上,Switchyard 接收请求后,会将其转换为目标提供商的格式,发送到相应的后端,再将响应转换回来。
目前支持三种主要格式:
- OpenAI Chat
- Anthropic Messages
- OpenAI Responses
这意味着你可以让 Claude Code 通过 vLLM 连接到本地模型,而客户端甚至不会察觉到这次切换。
智能路由,而非简单的轮询
任何代理服务器都能随机分配负载。真正让 Switchyard 脱颖而出的是其流量分配策略。作者内置了四种算法:
- Stage Router。根据对话中的信号进行评估。如果之前的工具调用以错误结束,路由器会将下一轮请求重定向到更强的模型。如果一切顺利,则由更便宜的模型处理请求。
- Escalation Router。首先将请求发送到较弱的模型。同时,一个特殊的评判模型会评估响应质量。如果结果不满意,同一请求会自动升级到旗舰模型。
- LLM Classifier。一个独立的轻量级模型对传入请求的复杂度进行分类,在主生成开始之前就选择合适的后端。
- Random。标准随机分配,固定比例分配。适用于 A/B 测试或评估不同提供商的费用。
架构与集成方式
开发者将 Switchyard 设计为多个模块。选择哪种运行模式取决于你的任务需求。
如果需要快速启动配置正确的编码代理,请使用 CLI 启动器。整个安装过程只需一条包管理器命令:
之后,用一行命令指定配置即可启动代理:
如果要以网络代理方式运行,请构建二进制文件。它通过 Prometheus 追踪指标(令牌计数、延迟、错误),并通过配置文件进行配置。
如果你在编写自己的 Rust 应用程序,则无需引入单独的 HTTP 服务器。该 crate 将路由逻辑直接嵌入到你的代码中。该库本身不发起网络调用——它只是做出路由决策,然后将选定的目标后端返回给你的应用程序。
项目当前状态
仓库页面带有警告:Switchyard 处于 pre-alpha 阶段。在撰写本文时,该项目在 GitHub 上有近 800 颗星,处于实验性软件状态。
这意味着公共 API、TOML 配置结构和内部 crate 架构可能会发生变化。现在就在关键生产环境中使用它是有风险的。
谁应该关注这个项目
Switchyard 对两类开发者很有吸引力:
- 那些积极使用终端 AI 代理(Claude Code、Codex CLI)并希望通过将一些简单任务重定向到本地模型或更便宜的 API 来节省成本的人。
- 基于 Rust 构建自己的 LLM 基础设施的团队。从 crate 中直接使用现成的升级算法和协议转换器可以节省数周的工作量。
如果你一直在寻找一款能够透明替换后端、无需重写代理自身代码的简洁工具,这个项目绝对值得关注。
相关项目