Skip to main content

SMART ROUTER LLM GATEWAY


1. Descrição do Projeto

O Smart Router LLM Gateway é uma solução avançada de infraestrutura para IA Generativa que atua como um proxy inteligente entre aplicações e múltiplos provedores de LLM. Construído sobre o LiteLLM, o sistema intercepta requisições compatíveis com a API da OpenAI e utiliza um pipeline de decisão em 4 camadas para rotear a consulta ao modelo mais eficiente em termos de custo-performance.

O diferencial deste gateway reside na sua capacidade de classificar a complexidade da consulta em tempo real, aplicando técnicas de compressão de prompt (LLMLingua) e truncamento inteligente de contexto (Tiktoken) antes de despachar a chamada para o provedor final através do gateway corporativo.


2. Arquitetura do Sistema

A arquitetura é baseada em microserviços orquestrados via Docker, garantindo isolamento e escalabilidade dos componentes de cache, classificação local e proxy.

2.1. Visão Geral dos Componentes

graph TD
    subgraph "Client Layer"
        App[Aplicação Cliente]
    end

    subgraph "Smart Router Gateway (Docker)"
        Proxy[LiteLLM Proxy :4000]
        Router[SmartRouterV2 Callback]

        subgraph "Optimization Engine"
            Lingua[LLMLingua - Compression]
            Tik[Tiktoken - Truncation]
        end

        subgraph "Local Intelligence"
            Ollama[Ollama :11434 - Qwen2.5]
            FAISS[FAISS Vector DB - Semantic]
        end

        subgraph "Persistence"
            Redis[(Redis :6379)]
        end
    end

    subgraph "External Providers"
        Flow[LLM Gateway Corporativo]
        Models[Mistral / Gemini / Claude]
    end

    App -->|OpenAI SDK| Proxy
    Proxy <--> Router
    Router <--> Redis
    Router <--> FAISS
    Router <--> Ollama
    Router --> Lingua
    Lingua --> Tik
    Tik --> Flow
    Flow --> Models

3. Pipeline de Roteamento (4 Camadas)

O sistema utiliza uma estratégia de "fail-fast" e "cache-first" para determinar o destino de cada prompt.

3.1. Fluxo de Decisão

flowchart TD
    Start([Recebe Requisição]) --> L1{L1: Redis Cache}
    L1 -- "Hit (Hash Match)" --> Return[Retorna Resposta Cacheada]
    L1 -- "Miss" --> L2{L2: Semantic Router}

    L2 -- "Score > 0.75" --> SetTier[Define Tier: Simple/Std/Complex]
    L2 -- "Score < 0.75" --> L3{L3: LLM Router}

    L3 -- "Ollama Classification" --> SetTier
    L3 -- "Fail/Timeout" --> L4{L4: Regex & Heuristics}

    L4 -- "Pattern Match" --> SetTier
    L4 -- "Default" --> Default[Tier: Standard]

    SetTier --> Optimize[Otimização de Tokens]
    Optimize --> Dispatch[Executa Chamada LiteLLM]
    Dispatch --> CacheResult[Salva no Redis]
    CacheResult --> End([Resposta ao Cliente])

3.2. Detalhamento das Camadas

  1. Camada 1 - Redis Cache: Normaliza o prompt (lowercase, strip) e gera um hash SHA-256. Verifica se existe uma decisão de rota (route:{hash}) válida por 24h ou uma resposta completa (resp:{hash}) válida por 1h.
  2. Camada 2 - Semantic Router: Utiliza all-MiniLM-L6-v2 para gerar embeddings e compara via similaridade de cosseno (FAISS) contra 30 prompts de referência (10 por tier) em PT-BR e EN.
  3. Camada 3 - LLM Router: Consulta um modelo local qwen2.5:1.5b via Ollama para análise lógica da complexidade, esperando um JSON com tier e confidence.
  4. Camada 4 - Regex Fallback: Analisa palavras-chave técnicas (ex: "deadlock", "architecture" para complexo; "crud", "getter" para simples) e heurística de contagem de palavras (<15 simples, >80 complexo).

4. Modelos e Fallbacks

O mapeamento de tiers garante que tarefas simples não consumam créditos de modelos de alta performance.

Tier Modelo Principal Fallback 1 Fallback 2
Simple mistral-small-2503 claude-4-5-haiku gemini-2.5-flash
Standard gemini-2.5-flash gemini-3.1-pro claude-4-5-haiku
Complex gemini-3.1-pro gemini-2.5-flash claude-4-5-haiku

5. Otimização de Tokens

Para reduzir custos e latência, o gateway aplica duas técnicas antes do roteamento final:

  • LLMLingua-2: Prompts de sistema com mais de 500 caracteres são comprimidos usando o modelo microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank com uma taxa de 0.5.
  • Tiktoken Truncation: Garante que o contexto enviado não ultrapasse 4.000 tokens, mantendo as mensagens mais recentes e preservando a mensagem de sistema original.

6. Configuração e Instalação

6.0. Instalação via pip (alternativa ao Docker)

pip install smart-router-llm

Redis e Ollama continuam sendo responsabilidade sua instalar e rodar — o pacote só se conecta a eles, não os empacota nem gerencia.

# 1. Configure as variáveis de ambiente (mesmas da seção 6.2)
export LLM_GATEWAY_API_KEY=seu_token_aqui
export LLM_GATEWAY_BASE_URL=sua_url_aqui

# 2. Verifica se Redis e Ollama estão acessíveis
smart-router check

# 3. Baixa os modelos Ollama necessários e cria o modelo classificador
smart-router pull-models

# 4. Valida conectividade com o gateway corporativo
smart-router validate

# 5. Sobe o proxy (porta 4000)
smart-router serve

6.1. Pré-requisitos

  • Docker & Docker Compose
  • Python 3.12+ (para execução local)
  • Chave de API do gateway LLM corporativo

6.2. Variáveis de Ambiente (.env)

Crie um arquivo .env na raiz do projeto:

LLM_GATEWAY_API_KEY=seu_token_aqui
LLM_GATEWAY_BASE_URL=sua_url_aqui
REDIS_HOST=redis
REDIS_PORT=6379
OLLAMA_HOST=http://ollama:11434
OLLAMA_MODEL=qwen2.5:1.5b
LITELLM_MASTER_KEY=sk-litellm-local

6.3. Comandos do Makefile

O projeto utiliza um Makefile para simplificar a gestão:

  • make .venv: Cria o ambiente virtual com Python 3.12.
  • make install: Instala as dependências no ambiente virtual.
  • make up: Sobe toda a infraestrutura (Redis, Ollama, LiteLLM).
  • make down: Encerra todos os serviços.
  • make logs: Acompanha os logs do proxy em tempo real.
  • make validate: Valida a conectividade com os modelos do gateway.
  • make clean: Limpa caches, logs e arquivos temporários.

7. Estrutura do Projeto

.
├── app/
│   ├── cache/          # Singleton Redis e lógica de hashing
│   ├── optimization/   # Implementação LLMLingua e Tiktoken
│   ├── router/         # Lógica das 4 camadas de roteamento
│   ├── utils/          # Sanitização e extração de prompts
│   └── main.py         # Ponto de entrada LiteLLM Proxy
├── ollama/
│   └── Modelfile       # Configuração do modelo de classificação
├── scripts/            # Scripts de inicialização e validação
├── config.yaml         # Definição de modelos e fallbacks LiteLLM
├── docker-compose.yml  # Orquestração de serviços
├── Makefile            # Atalhos de automação
└── venv/               # Ambiente virtual

8. Utilização da API

O gateway expõe um endpoint compatível com OpenAI na porta 4000.

Exemplo de requisição via cURL:

curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-litellm-local" \
  -d '{
    "model": "smart-router",
    "messages": [
      {"role": "system", "content": "Você é um arquiteto de software."},
      {"role": "user", "content": "Explique a diferença entre consistência eventual e forte em sistemas distribuídos."}
    ]
  }'

Nota: Ao enviar para o modelo "smart-router", o sistema automaticamente reescreverá o campo "model" para o tier adequado (ex: gemini-3.1-pro) antes de processar.


9. Monitoramento e Estatísticas

O sistema mantém métricas de performance no Redis sob a hash router:stats. É possível monitorar:

  • total_requests: Total de chamadas processadas.
  • cache_hits: Quantidade de respostas servidas pelo cache.
  • routing_decisions: Distribuição de roteamento por tier (simple/standard/complex).

Documento elaborado em 06 de agosto de 2026. As informações contidas são de responsabilidade do solicitante.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smart_router_llm-1.0.2.tar.gz (359.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smart_router_llm-1.0.2-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file smart_router_llm-1.0.2.tar.gz.

File metadata

  • Download URL: smart_router_llm-1.0.2.tar.gz
  • Upload date:
  • Size: 359.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for smart_router_llm-1.0.2.tar.gz
Algorithm Hash digest
SHA256 429429b76ed38e2fc26c6c5a0640b73d04ed5f25b4beca6f5e182f49e0eace74
MD5 fbfb9973652a22a0512d89ffb0944deb
BLAKE2b-256 53c7d02f0c7e832beef2f327a7bd4ca6f3ebd6658664000fd8082c10d5c3a78d

See more details on using hashes here.

Provenance

The following attestation bundles were made for smart_router_llm-1.0.2.tar.gz:

Publisher: publish-pypi.yml on victorleandroof/smart-router-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smart_router_llm-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for smart_router_llm-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b59d3067cfa3a4ff636c3d1036f3d64d9c21a7ba9ff0a8a5769a0624f06bc989
MD5 b0fe24a1ad78e7aee499d4902fc0b36b
BLAKE2b-256 4cdeca498ece91ad9e4d4d89bad786a435d5c7a753aa1c84edc0c231bbd55cc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for smart_router_llm-1.0.2-py3-none-any.whl:

Publisher: publish-pypi.yml on victorleandroof/smart-router-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.0.3

2 files

This release

1.0.2 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page