NVIDIA-NeMo/Switchyard
Switchyard lets LLM applications route traffic across models and providers while preserving native OpenAI and Anthropic API compatibility - enabling flexible model selection, benchmarking, and cost/performance optimization.
Switchyard – 成本感知的 LLM 呼叫路由
是什麼 – Switchyard 是一個輕量級的路由層,位於一個或多個大型語言模型(LLM)提供者之前。針對每個請求,它根據可設定的演算法,決定是將呼叫發送到便宜的「高效」模型,還是發送到更強大(通常也更昂貴)的模型,目標是在維持任務準確性的同時,降低整體成本。
為何重要 – 在許多面向代理的工作負載中,單一強大的模型對大多數回合來說是過度的。透過僅自動「升級」困難的情況,Switchyard 可在成功率僅小幅下降(或甚至略有提升)的情況下,將令牌成本降低 13–30%,如 Terminal-Bench 2.1 基準測試所示。
核心元件(預 1.0 版)
| 元件 | 穩定性 | 作用 |
|---|---|---|
switchyard-libsy |
Beta | 純 Rust 庫,公開路由演算法。可嵌入您自己的網關或框架中;您可自行控制 HTTP 呼叫、重試和憑證。 |
switchyard-llm-client |
Alpha | 助手,用於在庫的中立請求/回應類型與真實 HTTP LLM API 之間轉換。 |
switchyard-runner |
Alpha | 橋接程式碼,可在其他執行環境(如 NeMo Relay)中執行路由設定。 |
switchyard-server |
示範 | 獨立代理,模擬 OpenAI/Anthropic 端點;適用於快速示範或評估。 |
如何使用
- NeMo Relay 插件 – 將
routes.toml檔案載入現有的 NeMo Relay 部署中。插件處理對所選提供者的 HTTP 分派,而 Relay 保持其慣用的傳輸與重試邏輯。 - 嵌入庫 – 安裝 Python 套件(
pip install nemo-switchyard)或在專案中加入 Rust crate。建構一個路由 演算法(例如stage_router(picker="efficient_first", confidence_threshold=0.5)),並使用run_stream迴圈驅動,向模型特定的 HTTP 客戶端提供輸入。 - 獨立代理 – 安裝 Rust 二進位檔(
cargo install switchyard-server),撰寫簡單的routes.toml將目標 ID 映射到 OpenRouter(或任何 OpenAI 相容)端點,然後啟動伺服器。任何 OpenAI/Anthropic 客戶端現在都可以指向http://localhost:4000,並自動受益於路由功能。
路由演算法(在 TOML 設定中選擇一個)
- 能力(
llm_classifier) – 第一個請求由小型 LLM 判斷;若認為任務困難,則呼叫被升級。 - 階段(
stage_router) – 在決定是否切換模型之前,對工具產生的回應使用模式比對或裁判 LLM 進行評估。 - 升級 – 從便宜模型開始,然後對結果執行裁判 LLM;若檢測到問題,則請求將重新發送至強大模型。
- 隨機 / 建議 / 子代理感知 / 自訂 – 其他各種用於實驗的策略。
快速上手(Python 範例)
from switchyard.libsy import LlmResponse, Step
from switchyard.libsy.algorithms import stage_router
algorithm = stage_router(picker="efficient_first", confidence_threshold=0.5)
async def route(request, clients):
async for step in algorithm.run_stream(request, {
"efficient": ["fast"],
"capable": ["quality"],
}):
if isinstance(step, Step.CallModel):
# 為每個候選模型呼叫您自己的 HTTP 客戶端
resp = await clients[step.models[0]].call(step.request)
step.respond(LlmResponse.Agg(resp))
elif isinstance(step, Step.Done):
return step.outcome.response
Rust 中也存在相同邏輯;switchyard-libsy crate 提供了 Algorithm::run_stream 迭代器。
成熟度與授權
- 此專案為 預 1.0 版;API 和設定格式可能變更,因此整合時請固定版本。
- 伺服器元件標記為 示範,目前不建議用於生產環境。
- 授權為 Apache 2.0(NVIDIA Corporation)。
更多資訊
- 核心概念與 TOML 模式 –
docs/core_concepts.md和docs/reference/toml_schema.md - 路由演算法詳情 –
docs/routing_algorithms/… - 基準測試結果 – 請參閱 README 中的「Benchmark Provenance」表格。
- 社群 – 提供 GitHub 問題與行為準則(Code of Conduct)。
Switchyard 允許您將路由層輕鬆整合到任何現有的 LLM 網關(NeMo Relay、LiteLLM 或自訂伺服器)中,無需重寫您的代理即可節省令牌成本。
相關
- 專案
- 專案
- 專案
- 專案
- 專案