Проблема фрагментации API
Команды, разрабатывающие AI-агенты, сталкиваются с архитектурным тупиком: Claude Code использует Anthropic Messages API, Codex CLI — OpenAI, а целевые модели часто развернуты через vLLM, NVIDIA NIM или Ollama. Переписывать агенты под каждый провайдер невозможно. NVIDIA решает эту проблему через Switchyard — открытый прокси и библиотеку на Rust, которая работает как слой абстракции, скрывая различия в форматах запросов и ответов.
Как работает трансляция
Switchyard принимает входящие запросы в трех форматах: OpenAI Chat Completions, OpenAI Responses и Anthropic Messages. Прокси декодирует запрос в провайдер-независимые типы Rust, выбирает бэкенд через алгоритм маршрутизации, перекодирует запрос в формат целевого API, выполняет вызов и транслирует ответ (включая стриминг) обратно в формат клиента. Это позволяет агенту «не знать», какая именно модель обслуживает запрос.
Алгоритмы маршрутизации
Ключевая ценность Switchyard — гибкая маршрутизация. Поддерживаются четыре типа алгоритмов, позволяющие оптимизировать стоимость и качество:
| Алгоритм | Описание и применение |
|---|---|
| passthrough | Отправляет все запросы на один целевой бэкенд. Базовый режим. |
| random | Распределяет трафик между бэкендами с весами. Идеально для A/B-тестирования и экспериментов с затратами. |
| llm_classifier | Использует классификатор для оценки задачи. Маршрутизирует на «слабую» (дешевую) или «сильную» (точную) модель. Поддерживает режим эскалации, если уверенность классификатора низкая. |
| stage_router | Оценивает сигналы прогресса агента и результаты инструментов. Выбирает цель на основе контекста, избегая лишних вызовов классификатора. |
Метрики и наблюдаемость
Прокси интегрируется с OpenTelemetry и предоставляет метрики в формате Prometheus. Особый интерес представляет метрика switchyard_routing_overhead_ms, которая изолирует время работы алгоритма маршрутизации от времени ответа модели. Это позволяет точно оценивать накладные расходы прокси. Также доступны метрики по латентности, количеству токенов (prompt/completion/cached), ошибкам и статус-кодам HTTP.
Статус релиза и установка
Проект выпущен под лицензией Apache 2.0 и находится в стадии pre-alpha. NVIDIA прямо предупреждает, что решение не готово для production-использования: API и алгоритмы могут измениться до выхода v1.0. Документация доступна на docs.nvidia.com/nemo/switchyard.
Установка возможна тремя путями:
- Launcher (для агентов):
uv tool install --python 3.12 "nemo-switchyard[cli]" - Server (прокси):
cargo install --locked switchyard-server - Library (встраивание в Rust):
switchyard-lib
Конфигурация хранится в TOML-файлах, где секреты (API-ключи) указываются через переменные окружения, а не хранятся в открытом виде.
Источник: MarkTechPost ↗
