Sakhanda Wire
NVDA MSFT GOOGL META AMZN
← До новин

Знайомтеся: Switchyard — проксі та бібліотека на Rust для маршрутизації й перетворення трафіку LLM між API OpenAI та Anthropic

Команди, які запускають агентів для кодування, стикаються з тією самою проблемою. Claude Code працює з Anthropic Messages API, Codex CLI — з OpenAI, а модель, яку команда насправді хоче обслуговувати, працює через vLLM, NVIDIA NIM або Ollama. Переписувати агента не варіант, тож рівень трансляції має розташовуватися деінде.

Switchyard — відповідь NVIDIA: Rust-проксі та бібліотека для трафіку LLM, які маршрутизують запити між провайдерами, перекладають формати OpenAI та Anthropic, записують операційні метрики й надають типізовані алгоритми маршрутизації, які можна комбінувати. Проєкт випущено за ліцензією Apache 2.0, а документація доступна за адресою docs.nvidia.com/nemo/switchyard.

Чи придатний він до розгортання? Так, але лише для оцінювання. Бінарний файл встановлюється з crates.io, лаунчер — з PyPI, а самостійно розгорнути його можна будь-де, однак NVIDIA позначає Switchyard як передальфа-версію та експериментальний проєкт, попереджає, що він не призначений для використання в продакшені, і очікує значних змін API та алгоритмів до виходу версії v1.0.

Що робить Switchyard

Клієнти зберігають власний API. Switchyard декодує вхідний запит у нейтральні до провайдера типи Rust, запускає алгоритм маршрутизації для вибору бекенду, повторно кодує запит у власний дротовий формат цього бекенду, надсилає його та перекладає відповідь, зокрема потокові події, назад у формат, якого очікує клієнт.

Сервер приймає три вхідні формати: OpenAI Chat Completions, OpenAI Responses та Anthropic Messages. Будь-який із трьох може звертатися до будь-якого маршруту, а кожен налаштований клієнт LLM обирає власний висхідний формат. Саме в цьому полягає сенс такого розділення: API агента та API бекенду більше не повинні збігатися.

Три способи запуску

Шлях через лаунчер призначений для агентів кодування. Встановіть опублікований інструмент командою uv tool install --python 3.12 "nemo-switchyard[cli]", а потім запустіть switchyard launch claude, switchyard launch codex або switchyard launch openclaw для роботи з пакетним розгортанням або власним TOML-файлом.

Шлях через сервер встановлює автономний проксі командою cargo install --locked switchyard-server, перевіряє конфігурацію за допомогою --dry-run і запускає сервер на вибраних хості та порту.

Шлях через бібліотеку використовує switchyard-libsy, яка вбудовує алгоритми маршрутизації в застосунок Rust, не володіючи HTTP-стеком. Вона ніколи не викликає модель самостійно: алгоритм вирішує, яку ціль використовувати, і передає кожен виклик моделі назад тому, хто її викликає.

Алгоритми маршрутизації

Маршрут — це один ідентифікатор моделі, видимий клієнту, та алгоритм, що стоїть за ним. Сервер підтримує:

  • passthrough надсилає кожен запит до однієї цілі.
  • random розподіляє трафік між цілями за допомогою необов’язкових відносних ваг, а необов’язкове початкове значення відтворює послідовність вибору. Це шлях для A/B-тестування та експериментів із витратами.
  • llm_classifier звертається до цілі-класифікатора для отримання висновку про можливості, а потім спрямовує запит до слабкої або сильної цілі. Параметр base_threshold є обов’язковим; min_confidence, capability_elevated_floor і session_affinity налаштовують його, а все, що суддя не може визначити, спрямовується до сильної цілі. Встановлення mode = "escalation" спочатку запускає кожен крок на слабкому рівні, після чого суддя вирішує, чи потрібно повторно виконати його на сильному рівні.
  • stage_router оцінює сигнали результатів використання інструментів і прогресу агента з останніх кроків, щоб вибрати потужну або ефективну ціль, уникаючи додаткового виклику класифікатора на більшості кроків.

Сильний, слабкий, потужний і ефективний — це ролі всередині маршруту, а не фіксовані властивості моделі. Та сама висхідна модель може виконувати різні ролі в різних маршрутах.

Спостережуваність

GET /metrics повертає текст у форматі Prometheus від загальнопроцесного провайдера OpenTelemetry сервера. Сімейства метрик охоплюють запити, помилки, затримку викликів моделей, затримку повного кроку, токени промптів, завершень, кешовані токени, створення кешу та токени міркувань, а також висхідні HTTP-спроби за результатом і кодом. Мітка tier містить значення strong або weak для розрізнення рішень класифікатора, а виклики класифікатора виключаються з цих сімейств.

Цікавішою метрикою є switchyard_routing_overhead_ms, яка показує час роботи алгоритму мінус час виклику, що обслужив запит. Виклики класифікатора не віднімаються, тому маршрут із LLM-класифікатором показує тут час класифікації, тоді як passthrough і random показують вартість вибору цілі — менше мілісекунди. Бакети починаються з 0,1 мс. Окремо, --routing-log-file додає запис JSON для кожної завершеної відповіді, а GET /v1/routing/session-stats повертає загальні показники викликів і токенів для кожної сесії з цього журналу.

Конфігурація

Розгортання TOML має три рівні: llm_clients визначають базову URL-адресу, дротовий формат, змінну середовища для облікових даних і політику повторних спроб; targets прив’язують один ідентифікатор висхідної моделі до клієнта; routes відкривають один ідентифікатор моделі, видимий клієнту, та його алгоритм. Секрети ніколи не зберігаються у файлі, оскільки api_key_env лише вказує назву змінної середовища. Значення max_retries за замовчуванням дорівнює 2 і застосовується до транспортних помилок, тайм-аутів, HTTP-відповідей 408/429 і відповідей 5xx.

Основні висновки

  • Switchyard — це Rust-проксі та бібліотека за ліцензією Apache 2.0, які маршрутизують і перекладають трафік LLM.
  • Він забезпечує двосторонній міст між OpenAI Chat, OpenAI Responses та Anthropic Messages, зокрема для потокових даних.
  • Постачаються чотири типи маршрутів: passthrough, random, класифікатор LLM і маршрутизатор етапів на основі сигналів.
  • Метрики Prometheus відокремлюють накладні витрати маршрутизації від затримки викликів моделей для кожної моделі та рівня.
  • Проєкт перебуває на передальфа-стадії та прямо не призначений для продакшену, тож розглядайте його як інструмент для оцінювання.

Перегляньте репозиторій на GitHub і документацію. Також підписуйтеся на нас у Twitter і не забудьте приєднатися до нашого сабреддіту ML із понад 150 тисячами учасників та підписатися на нашу розсилку. Стривайте! Ви є в Telegram? тепер ви також можете приєднатися до нас у Telegram.

Потрібно співпрацювати з нами для просування вашого репозиторію на GitHub, сторінки на Hugging Face, релізу продукту, вебінару тощо? Зв’яжіться з нами

Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.

Вперше опубліковано виданням MarkTechPost

Читати оригінал на MarkTechPost ↗

Текст і зображення належать MarkTechPost і наводяться тут із зазначенням авторства та посиланням на оригінальну публікацію.

← До новин

Ще новини

Усі останні новини