NVIDIA lança Switchyard, proxy em Rust que traduz tráfego entre APIs da OpenAI e Anthropic

A NVIDIA disponibilizou o Switchyard, um proxy e biblioteca escritos em Rust voltados ao roteamento e à tradução de tráfego entre modelos de linguagem. O projeto, distribuído sob a licença Apache 2.0, foi criado para resolver um problema prático enfrentado por equipes que utilizam agentes de programação: enquanto ferramentas como Claude Code falam o protocolo da Anthropic e o Codex CLI utiliza o formato da OpenAI, os modelos que essas equipes realmente desejam executar muitas vezes estão hospedados em plataformas como vLLM, NVIDIA NIM ou Ollama. Reescrever o agente para adequá-lo a cada backend não é viável, então a camada de tradução precisa existir em outro lugar, e é justamente essa a proposta do Switchyard.

Switchyard: O Proxy em Rust da NVIDIA Que Faz as APIs da OpenAI e Anthropic Finalmente Falarem a Mesma Língua - Imagem complementar

O funcionamento do sistema se baseia em um processo de conversão em etapas. Quando uma requisição chega ao proxy, ela é decodificada para tipos internos neutros em Rust, independente do provedor de origem. Em seguida, um algoritmo de roteamento escolhe qual backend atenderá a chamada, e o pedido é reformatado no protocolo específico daquele destino. A resposta, incluindo eventos de streaming, passa pelo processo inverso e volta ao cliente no formato original. O servidor do Switchyard aceita três formatos de entrada: as APIs OpenAI Chat Completions e OpenAI Responses, além da Anthropic Messages. Qualquer um dos três pode ser direcionado a qualquer rota configurada, e cada cliente de modelo de linguagem pode selecionar um formato de saída próprio. Esse desacoplamento é o ponto central da ferramenta, pois elimina a exigência de compatibilidade direta entre a API do agente e a API do backend.

PUBLICIDADE

Há três formas distintas de executar o Switchyard. A primeira, voltada a agentes de programação, utiliza um lançador que pode ser instalado via gerenciador de pacotes Python. Comandos específicos permitem iniciar o Claude Code, o Codex ou o OpenClaw apontando para uma implantação pré-configurada ou para um arquivo TOML personalizado. A segunda forma é o caminho de servidor independente, obtido por meio do gerenciador de pacotes do Rust, que valida a configuração antes de iniciar o serviço em um host e porta definidos pelo usuário. Já a terceira opção é o uso da biblioteca switchyard-libsy, que incorpora os algoritmos de roteamento diretamente em uma aplicação Rust, sem a necessidade de um servidor HTTP próprio. Nesse modo, o algoritmo decide qual destino será chamado, mas a execução da chamada em si fica a cargo do código que utiliza a biblioteca.

O Switchyard oferece quatro tipos principais de rotas. O modo passthrough encaminha todas as requisições para um único destino. O modo random distribui o tráfego entre múltiplos alvos, com suporte a pesos relativos e sementes opcionais para reprodutibilidade, sendo indicado para testes A/B e experimentos de custo. O modo llm_classifier aciona um modelo classificador que avalia a complexidade da tarefa e decide entre um destino mais simples ou um mais robusto, com parâmetros como limiar de confiança e afinidade de sessão. Quando configurado em modo de escalonamento, cada turno é iniciado no nível mais barato, e o classificador só aciona o nível mais forte caso julgue necessário. Por fim, o stage_router analisa sinais de progresso do agente e resultados de ferramentas para selecionar dinamicamente entre um destino capaz e um mais eficiente, sem a necessidade de uma chamada extra de classificador na maioria dos turnos. As categorias de forte, fraco, capaz e eficiente são papéis dentro de uma rota, e o mesmo modelo pode assumir papéis diferentes em rotas distintas.

No quesito observabilidade, o servidor expõe métricas no formato Prometheus por meio do endpoint padrão, abrangendo volume de requisições, erros, latência de chamadas de modelo e de turnos completos, além de contagens de tokens de prompt, completion, cache e raciocínio. Um detalhe relevante é a métrica switchyard_routing_overhead_ms, que isola o tempo gasto pelo algoritmo de roteamento, descontando o tempo da chamada que efetivamente serviu a requisição. Rotas que utilizam classificador reportam nesse indicador o tempo de classificação, enquanto rotas passthrough e random registram valores abaixo de um milissegundo. O sistema também oferece a opção de gravar um arquivo de log em formato JSON com um registro por resposta concluída, além de estatísticas agregadas por sessão.

A configuração é feita em arquivos TOML com três camadas bem definidas. A primeira define os clientes de modelo de linguagem, incluindo URL base, formato de comunicação, variável de ambiente para credenciais e política de retentativas. A segunda associa identificadores de modelos upstream aos clientes configurados. A terceira camada expõe os identificadores visíveis ao cliente final junto com o algoritmo de roteamento. As credenciais nunca ficam armazenadas no arquivo, pois o sistema referencia apenas o nome da variável de ambiente que contém a chave de API. O número padrão de retentativas é dois, aplicável a falhas de transporte, timeouts e respostas HTTP dos tipos 408, 429 e da família 5xx.

A NVIDIA rotula o Switchyard como pré-alfa e experimental, deixando claro que a ferramenta não deve ser utilizada em ambientes de produção. A empresa também informa que tanto a API quanto os algoritmos de roteamento devem passar por mudanças significativas até o lançamento da versão 1.0. Dessa forma, o projeto deve ser encarado prioritariamente como um recurso para avaliação e experimentação por equipes interessadas em testar fluxos de tradução entre APIs de modelos de linguagem.