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, а launcher-ът — от PyPI, и може да се хоства самостоятелно навсякъде, но NVIDIA определя Switchyard като предалфа и експериментален, предупреждава, че не е предназначен за продукционна употреба, и очаква API-ят и алгоритмите да се променят значително преди v1.0.

Какво прави Switchyard

Клиентите запазват своя native API. Switchyard декодира входящата заявка в независими от доставчика Rust типове, изпълнява алгоритъм за маршрутизиране, за да избере бекенд, кодира отново заявката в собствения wire формат на този бекенд, извиква го и превежда отговора, включително събитията при streaming, обратно във формата, който клиентът очаква.

Сървърът приема три входящи формата: OpenAI Chat Completions, OpenAI Responses и Anthropic Messages. Всеки от трите може да адресира всеки маршрут, а всеки конфигуриран LLM клиент избира собствен upstream формат. Именно това разделяне е същността: API-ят на агента и API-ят на бекенда вече не трябва да съвпадат.

Три начина за стартиране

Пътят чрез launcher е предназначен за агенти за програмиране. Инсталирайте публикувания инструмент с 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 стека. Тя никога не извиква модел сама; алгоритъмът решава коя цел да използва и предава всяко извикване на модела обратно към извикващия.

Алгоритми за маршрутизиране

Маршрутът представлява един видим за клиента ID на модел плюс алгоритъма зад него. Сървърът поддържа:

  • passthrough изпраща всяка заявка към една цел.
  • random разпределя трафика между цели чрез незадължителни относителни тегла, с незадължително начално число, което възпроизвежда последователността на избора. Това е подходът за A/B тестове и експерименти с разходите.
  • llm_classifier извиква цел за класификация, за да получи оценка на възможностите, след което маршрутизира към слаба или силна цел. base_threshold е задължителен; min_confidence, capability_elevated_floor и session_affinity го настройват, а всичко, което оценяващият не може да определи, се насочва към силната цел. Задаването на mode = "escalation" изпълнява всеки ход първо на слабото ниво и позволява на оценяващия да реши дали да го изпълни повторно на силното ниво.
  • stage_router оценява сигналите от резултатите на инструментите и напредъка на агента в последните ходове, за да избере способен или ефективен таргет, като избягва допълнително извикване на класификатор при повечето ходове.

Силни, слаби, способни и ефективни са роли в рамките на маршрут, а не фиксирани свойства на даден модел. Един и същ upstream модел може да изпълнява различни роли в различни маршрути.

Наблюдаемост

GET /metrics връща Prometheus текст от общодостъпния за процеса OpenTelemetry доставчик на сървъра. Семействата обхващат заявки, грешки, латентност на извикванията към модела, латентност на целия ход, prompt, completion, кеширани, създаващи кеш и reasoning токени, както и upstream HTTP опити според резултата и кода. Етикетът tier съдържа strong или weak за различимите решения на класификатора, а извикванията към класификатора са изключени от тези семейства.

По-интересната метрика е switchyard_routing_overhead_ms, която отчита времето за изпълнение на алгоритъма минус извикването, обслужило заявката. Извикванията към класификатора не се изваждат, така че маршрутът с LLM класификатор отчита тук времето за класификация, докато passthrough и random отчитат разхода под една милисекунда за избиране на цел. Интервалите започват от 0,1 ms. Отделно, --routing-log-file добавя JSON запис за всеки завършен отговор, а GET /v1/routing/session-stats връща общия брой извиквания и токени за всяка сесия от този лог.

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

Едно TOML внедряване има три слоя: llm_clients определят базовия URL, wire формата, променливата на средата за идентификационните данни и политиката за повторни опити; targets свързват един upstream ID на модел с клиент; routes предоставят един видим за клиента ID на модел и неговия алгоритъм. Тайните никога не се съхраняват във файла, тъй като api_key_env само посочва променлива на средата. max_retries по подразбиране е 2 и се прилага при транспортни грешки, изтичане на времето, HTTP 408/429 и отговори 5xx.

Основни изводи

  • Switchyard е Rust прокси и библиотека с лиценз Apache-2.0, която маршрутизира и превежда LLM трафик.
  • Той свързва OpenAI Chat, OpenAI Responses и Anthropic Messages и в двете посоки, включително при streaming.
  • Предлагат се четири типа маршрути: passthrough, random, LLM класификатор и управляван от сигнали stage router.
  • Prometheus метриките изолират разхода за маршрутизиране от латентността на извикванията към модела, по модел и ниво.
  • Проектът е предалфа и изрично не е предназначен за продукционна употреба, затова го приемайте като инструмент за оценка.

Разгледайте GitHub хранилището и документацията. Също така, можете да ни последвате в Twitter и не забравяйте да се присъедините към нашия ML subreddit с над 150 хил. членове и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Сега можете да се присъедините към нас и в Telegram.

Имате нужда от партньорство с нас за популяризиране на вашето GitHub хранилище, Hugging Face страница, продуктово издание, уебинар и т.н.? Свържете се с нас

Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.

Първоначално публикувано от MarkTechPost на

Прочетете оригинала в MarkTechPost ↗

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

← Към новините

Още новини

Всички последни новини