Gateway de IA grátis e self-hosted, usável do Python: 237 provedores (90+ grátis) via um base_url no OpenAI SDK, com fallback + compressão (MIT)
Fala, pessoal. Compartilhando um projeto open-source que uso muito a partir do Python (disclosure: sou o mantenedor; é grátis/MIT). Como ele expõe um endpoint compatível com OpenAI, dá pra usar direto do openai do Python só trocando o base_url:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:20128/v1", api_key="...")
E aí seu código Python herda:
Combos de fallback — pra nunca parar no meio da tarefa. Um "combo" é uma escada de modelos que o roteador percorre sozinho: primeiro sua assinatura, depois chaves de API, depois modelos baratos, depois os grátis. Quando um provedor devolve 500 ou você bate no rate limit, ele desliza para o próximo alvo em milissegundos, no meio da requisição, e sua ferramenta nem vê o erro. São 17 estratégias de roteamento mais três camadas de resiliência — circuit breaker por provedor, cooldown por chave e lockout por modelo — então uma chave morta não derruba o provedor inteiro.
Um endpoint, 237 provedores — 90+ deles grátis. Você aponta qualquer ferramenta ou agente para um único endpoint compatível com OpenAI (localhost:20128/v1) e ele alcança 237 provedores de LLM sem reescrever nada. 90+ têm free tier e 11 são grátis pra sempre (sem cartão), somando ~1,6B de tokens grátis/mês documentados — e é uma conta honesta, deduplicada por pool (contamos cada pool compartilhado uma vez, sem inflar; a metodologia está no repositório). Tem setup-* de um comando para 13+ ferramentas (Claude Code, Codex, Cursor, Cline, Roo, Kilo, Gemini CLI…).
Um pipeline de compressão de 10 engines — a parte que a maioria dos roteadores não tem. Toda requisição passa por uma etapa transparente de compressão que você liga/empilha por combo. Em vez de um truque só, ele junta o melhor do ecossistema open-source: o RTK filtra saída de comando/ferramenta (git diff, logs de teste, builds) em 60–90%, o LLMLingua-2 (Microsoft) faz poda semântica por ML, o Caveman cuida de prosa, e a deduplicação remove repetições entre turnos. O crucial: código, URLs e JSON são preservados byte-a-byte, e um guarda de inflação (ligado por padrão) descarta a versão comprimida e envia o original se comprimir fosse aumentar o prompt — nunca piora. Em sessões cheias de ferramenta isso dá ~89% de redução média de tokens de entrada. Todo o crédito às fontes (RTK, Caveman, LLMLingua-2, Troglodita) está no README.
Pra você avaliar se vale o tempo: o projeto passou de ~9,8 mil estrelas no GitHub, 1.490+ forks e 280+ contribuidores em ~4,5 meses, com 21.000+ testes automatizados e 1.830+ issues fechadas — ou seja, é maduro e validado, não um experimento de fim de semana.
npm install -g omniroute
GitHub: https://github.com/diegosouzapw/OmniRoute
Alguém aqui já usa um gateway assim nos projetos Python? Curioso pra saber como vocês tratam fallback.