4

LocalRouter: Roteador Local Opensource Para APIs de IA

Quantas vezes você estava no meio daquele teste perfeito de uma nova feature de IA e tomou um erro 429 de "Rate limit reached"?

Semana passada eu perdi a paciência tendo que trocar o provedor de API manualmente só para a aplicação voltar a responder.

Foi caçando uma saída que desenvolvi o LocalRouter.

Ele é um gateway feito em PHP puro, que cria um endpoint único para suas LLMs e faz rotação automática entre provedores quando um falha.

Feito para aproveitar ao máximo as cotas diárias gratuitas da NVIDIA, Groq, OpenRouter e Cerebras.

Como a mágica acontece

O setup não tem frescuras. Não precisa de Composer, containers Docker pesados ou builds demorados — só o PHP 8.0+ que a maioria de nós já tem na máquina.

Você baixa o projeto e sobe o servidor embutido: php -S localhost:8000 (ou roda no XAMPP/WAMP)

No arquivo config.php, você cadastra seus provedores, modelos e junta as chaves de cada um para um mesmo modelo lógico.

Aponte seu app (usando qualquer SDK padrão OpenAI), agente de IA ou IDE para http://localhost:8000/chat/completions.

Se o seu app fizer a requisição abaixo e o provedor principal cair ou negar por falta de créditos, o roteador pula para o próximo da fila na mesma hora, e o app nem percebe a troca:

`
curl http://localhost:8000/chat/completions \
  -H "Authorization: Bearer SUA_CHAVE_DO_GATEWAY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [{"role": "user", "content": "Qual o sentido da vida?"}]
  }'
`

Por que vale o espaço na sua máquina?

Você envia requisições no formato padrão OpenAI e o gateway traduz por baixo dos panos para a API. Comparado a subir gateways corporativos complexos, o LocalRouter resolve a dor do dev de forma muito limpa.

Além disso, se a conexão cair no meio de um streaming de texto, ele pega o que já foi gerado, injeta como contexto no próximo provedor e pede para continuar exatamente de onde parou.

*Um ponto de atenção: O único detalhe é que, focado em manter a simplicidade extrema, ele não guarda estado por padrão (um provedor esgotado será tentado novamente na próxima requisição, a menos que você ative a flag de COOLDOWN_SECONDS para deixá-lo "de castigo"). *

Quem quiser testar, o projeto tem licença MIT e está lá no meu GitHub: gmasson/localrouter.

Carregando publicação patrocinada...
1

Meus 2 cents,

Parabens pela iniciativa !

Tenho usado o OmniRoute para este tipo de atividade, que eh bem completo.

Disto isto, gostei do teu projeto: eh bem simples de implementar e manter (noves fora gosto muito do PHP), o que eh um ponto bem positivo.

Vou baixar e testar, mas um ponto que devo modificar (e indico como sugestao) eh: ele analisar a primeira linha do prompt para ver se eh um "comando" para o router.

Explicando: p.ex. no prompt mando na primeira linha "!CMD;modelo X" para indicar que para aquele prompt especifico ele deve usar o "modelo X", "!CMD;status" para ele so retornar o status/quotas do modelos atuais, "!CMD;info" para ele trazer quais os modelos cadastrados/disponiveis, "!CMD;default modelo X" para mudar o modelo como default, "!CMD;think" para ativar (ou desabilitar) CoT naquele prompt, "!CMD;raw" para retornar o RAW JSON da reposta original e assim por diante.

Desta forma nao preciso checar na linha de comando estes pontos e faco direto na propria interface que esteja trabalhando. Tem mais alguns detalhes, mas acho que voce pegou a ideia - tenho feito isso aqui e as vezes facilita meu trabalho.

Repositorio devidamente starreado e forkeado - obrigado por compartilhar !

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS