NVIDIA 开源 Switchyard:用 Rust 写的代理,可在 OpenAI 与 Anthropic API 之间互译
NVIDIA 以 Apache 2.0 协议发布 Switchyard,一个用 Rust 编写的大模型流量代理与库,可跨供应商路由请求并在 OpenAI 与 Anthropic 格式间转换。
NVIDIA 以 Apache 2.0 协议发布了 Switchyard,这是一个用 Rust 编写的大语言模型(LLM)流量代理与库。它可以在不同供应商之间路由请求,在 OpenAI 与 Anthropic 两种格式之间做转换,记录运行指标,并提供带类型、可组合的路由算法。文档位于 docs.nvidia.com/nemo/switchyard。
它要解决的是编码智能体(Agent)团队常遇到的问题:Claude Code 走 Anthropic Messages API,Codex CLI 走 OpenAI,而团队真正想提供服务的模型却部署在 vLLM、NVIDIA NIM 或 Ollama 后面。重写智能体并不现实,所以转换层必须放在别处。
工作方式
客户端仍然使用自己原生的 API。Switchyard 把入站请求解析为与供应商无关的 Rust 类型,运行路由算法选出后端,再按该后端自己的传输格式重新编码请求并发起调用,然后把响应,包括流式事件,翻译回客户端预期的形态。
服务端接受三种入站格式:OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages,三者都可以访问任意路由。一条路由由一个对客户端可见的模型 ID 加上其背后的算法构成。strong、weak、capable、efficient 是路由内部的角色,而非模型的固定属性,同一个上游模型可以在不同路由中承担不同角色。
安装方式有三条路径:通过 uv tool install 获得启动器,执行 switchyard launch claude、codex 或 openclaw;通过 cargo install --locked switchyard-server 部署独立代理,并用 --dry-run 校验配置;以及 switchyard-libsy 库,它把路由算法嵌入 Rust 应用而不接管 HTTP 栈,本身不调用模型,算法决定目标后把每次模型调用交还给调用方。
指标与配置
GET /metrics 从进程级 OpenTelemetry 提供方返回 Prometheus 文本,覆盖请求、错误、模型调用延迟以及各类 token 指标。switchyard_routing_overhead_ms 报告算法运行时间减去实际服务该请求的调用耗时,分桶从 0.1 毫秒起。TOML 配置分三层:llm_clients、targets 和 routes。密钥不写进文件,api_key_env 只指定环境变量名;max_retries 默认值为 2,适用于传输故障、超时以及 HTTP 408/429 和 5xx 响应。
NVIDIA 将 Switchyard 标注为预 alpha 阶段的实验性项目,明确表示不适合生产环境使用,并预计在 v1.0 之前 API 与算法会有较大改动。更多细节见 MarkTechPost 的报道。