Smart Selector
O Que é o Smart Selector
Seção intitulada “O Que é o Smart Selector”Em vez de escolher manualmente qual modelo usar, o Smart Selector aprende automaticamente qual modelo tem melhor desempenho para o seu caso de uso e roteia o tráfego de acordo. Ele executa um sistema de multi-armed bandit (MAB) que equilibra exploração (testar diferentes modelos para coletar dados) com exploitação (enviar tráfego para o melhor performer atual).
Com o tempo, o Smart Selector converge para o modelo ideal para sua carga de trabalho específica, sem necessidade de testes A/B manuais ou suposições. Ele se adapta continuamente — se um modelo degrada ou um novo melhora, o tráfego muda automaticamente.
Como Funciona
Seção intitulada “Como Funciona”graph TD
A[Request with floopy-smart-select header] --> B[Load Variant Scores from ClickHouse]
B --> C{Min Samples Met?}
C -->|No| D[Force Exploration: Round-Robin]
C -->|Yes| E[Apply Algorithm]
E --> F{Strategy}
F -->|Epsilon-Greedy| G[Exploit best or explore random]
F -->|UCB1| H[Balance score + uncertainty]
F -->|Thompson Sampling| I[Bayesian probability sampling]
G --> J[Select Variant]
H --> J
I --> J
D --> J
J --> K[Route to Selected Provider/Model]Quando uma requisição chega com o header floopy-smart-select, o gateway carrega os scores de desempenho atuais de cada variante do ClickHouse. Se alguma variante tiver menos observações do que a contagem mínima de amostras configurada, o sistema força a exploração usando round-robin para coletar dados suficientes. Uma vez que todas as variantes atingem o mínimo, o algoritmo configurado seleciona a variante.
Pontuação
Seção intitulada “Pontuação”Cada variante é pontuada em cinco dimensões derivadas do feedback dos usuários e dados de custo:
| Dimensão | Fonte | Descrição |
|---|---|---|
| Relevance | Feedback do usuário | Quão bem a resposta responde à pergunta |
| Coherence | Feedback do usuário | Consistência lógica e legibilidade |
| Helpfulness | Feedback do usuário | Utilidade prática da resposta |
| Safety | Feedback do usuário | Ausência de conteúdo prejudicial ou inapropriado |
| Cost Efficiency | Calculado | A variante mais barata recebe 100; as demais são pontuadas proporcionalmente (ex.: uma variante 2x mais cara recebe 50) |
O score composto é uma soma ponderada de todas as cinco dimensões. O Floopy oferece quatro presets:
| Preset | Relevance | Coherence | Helpfulness | Safety | Cost Efficiency |
|---|---|---|---|---|---|
| Balanced | 0.25 | 0.20 | 0.25 | 0.15 | 0.15 |
| Quality First | 0.30 | 0.25 | 0.30 | 0.10 | 0.05 |
| Cost Optimized | 0.15 | 0.10 | 0.15 | 0.10 | 0.50 |
| Safety Critical | 0.15 | 0.15 | 0.15 | 0.45 | 0.10 |
Você também pode definir pesos customizados que somem 1.0.
Benchmark Prior para Novas Variantes
Seção intitulada “Benchmark Prior para Novas Variantes”Quando uma nova variante (modelo) é adicionada a um Smart Selector sem dados históricos, o sistema utiliza scores de benchmarks públicos como estimativa inicial de qualidade, em vez de começar do zero.
Como funciona:
- Os scores de benchmark são obtidos do mesmo banco de dados curado de inteligência de modelos usado pelo Smart Cost Routing (MMLU, HumanEval, SWE-bench, GPQA e 8 outros benchmarks padronizados)
- O score é calculado usando pesos de intenção General: MMLU 30%, GPQA 15%, HumanEval 15%, MATH 15%, IFEval 15%, HellaSwag 10%
- Escalado para 0–100 para corresponder ao intervalo da dimensão de feedback:
initial_composite = benchmark_score × 100 - Modelos sem dados de benchmark começam em 50 (neutro) — a exploração os testará de qualquer forma
Por que isso importa:
- Sem priors, uma nova variante precisa da fase completa de sub-amostragem (N × min_samples requisições) antes de competir com variantes estabelecidas
- Com priors, os algoritmos bandit tomam decisões informadas imediatamente
- Limite de confiança UCB1:
score + √(2 × ln(total) / n)— com um score inicial significativo, o bônus de exploração é calibrado corretamente - Thompson Sampling se beneficia de um prior que reflete a capacidade real do modelo
Exemplo: Adicionando Claude Sonnet 4.5 a um selector:
- Dia 0: Começa com composite ~85 baseado em benchmarks (forte em MMLU, GPQA, HumanEval)
- Fase de sub-amostragem: Recebe amostras mínimas para feedback de baseline
- Dia 2+: Feedback real assume, o prior de benchmark desaparece naturalmente
- O modelo compete de forma justa desde o início, em vez de ser penalizado por ser novo
Transição de prior para feedback: Conforme o ClickHouse acumula dados reais de feedback, a query de agregação naturalmente produz scores baseados em feedback que substituem o prior de benchmark. Sem lógica de transição explícita — a fonte de dados simplesmente muda de benchmarks estáticos para feedback dinâmico dos usuários.
Algoritmos
Seção intitulada “Algoritmos”O Smart Selector suporta três algoritmos de seleção. Cada um equilibra exploração e exploitação de forma diferente.
Epsilon-Greedy (padrão)
Seção intitulada “Epsilon-Greedy (padrão)”O algoritmo mais simples. Com probabilidade exploration_rate ele escolhe uma variante aleatória (exploração); caso contrário, escolhe a variante com o maior score composto (exploitação).
Um exploration_rate de 0.1 significa que 10% das requisições vão para uma variante aleatória e 90% vão para a melhor atual. Valores menores exploram mais agressivamente; valores maiores coletam mais dados.
UCB1 (Upper Confidence Bound)
Seção intitulada “UCB1 (Upper Confidence Bound)”O UCB1 leva em conta a incerteza nas estimativas de score. Ele seleciona a variante que maximiza:
UCB = composite_score + sqrt(2 * ln(total_samples) / variant_samples)Variantes com menos observações recebem um bônus de incerteza maior, garantindo que sejam testadas vezes suficientes para produzir estimativas confiáveis. Conforme os dados se acumulam, o bônus diminui e o algoritmo converge para a melhor variante. O UCB1 não requer parâmetros de ajuste.
Thompson Sampling
Seção intitulada “Thompson Sampling”Uma abordagem Bayesiana que modela o score de cada variante como uma distribuição Beta:
Beta(alpha, beta) where: alpha = score_rate * n + 1 beta = (1 - score_rate) * n + 1A cada requisição, o algoritmo amostra da distribuição de cada variante e seleciona a variante com a maior amostra. O Thompson Sampling equilibra naturalmente exploração e exploitação e converge mais rápido que o Epsilon-Greedy na maioria dos cenários.
Configuração
Seção intitulada “Configuração”Crie um Smart Selector no dashboard em Smart Selectors. Cada selector define:
- Variants — duas ou mais combinações de provider/modelo para competir. Cada variante pode opcionalmente incluir uma substituição de prompt (útil para testar diferentes system prompts junto com diferentes modelos).
- Algorithm — Epsilon-Greedy, UCB1 ou Thompson Sampling.
- Optimization Mode — Composite, Single ou Cost-Aware (veja abaixo).
- Exploration Rate — aplica-se apenas ao Epsilon-Greedy. Padrão 0.1.
- Min Samples — observações mínimas por variante antes do algoritmo ser ativado. Padrão 30.
- Evaluation Window — janela de tempo para cálculo do score (ex.: últimos 7 dias). Dados mais antigos são excluídos, permitindo que o selector se adapte a mudanças nos modelos.
- Weight Preset — Balanced, Quality First, Cost Optimized, Safety Critical ou Custom.
Adicione o header floopy-smart-select com o ID do seu selector. O gateway cuida da seleção de variantes e do roteamento automaticamente.
import { OpenAI } from "openai";
const client = new OpenAI({ baseURL: "https://api.floopy.ai/v1", apiKey: process.env.FLOOPY_API_KEY,});
const response = await client.chat.completions.create( { model: "gpt-4o", // ignored when smart selector is active messages: [{ role: "user", content: "Draft a marketing email for our new feature." }], }, { headers: { "floopy-smart-select": "sel_abc123", }, },);
console.log(response.choices[0].message.content);from openai import OpenAIimport os
client = OpenAI( base_url="https://api.floopy.ai/v1", api_key=os.environ["FLOOPY_API_KEY"],)
response = client.chat.completions.create( model="gpt-4o", # ignored when smart selector is active messages=[{"role": "user", "content": "Draft a marketing email for our new feature."}], extra_headers={ "floopy-smart-select": "sel_abc123", },)
print(response.choices[0].message.content)curl https://api.floopy.ai/v1/chat/completions \ -H "Authorization: Bearer $FLOOPY_API_KEY" \ -H "Content-Type: application/json" \ -H "floopy-smart-select: sel_abc123" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Draft a marketing email for our new feature."}] }'O campo model no corpo da requisição é ignorado quando um smart selector está ativo — o selector escolhe o modelo. A resposta inclui os headers Floopy-Provider e Floopy-Model indicando qual variante foi selecionada.
Modos de Otimização
Seção intitulada “Modos de Otimização”Composite (padrão)
Seção intitulada “Composite (padrão)”Otimiza para o score composto multi-objetivo ponderado. Todas as cinco dimensões contribuem de acordo com os pesos configurados. Este é o modo recomendado para a maioria dos casos de uso.
Otimiza para uma única dimensão (ex.: relevance). Todas as outras dimensões são ignoradas durante a seleção de variantes. Use quando você tem uma prioridade clara e não quer que outros fatores influenciem o roteamento.
Cost-Aware
Seção intitulada “Cost-Aware”Seleciona a variante mais barata que atende a um limite de qualidade configurável. O algoritmo primeiro filtra qualquer variante cujo score composto fique abaixo do limite, e então escolhe a opção mais barata restante. Este modo é ideal para cargas de trabalho de alto volume e sensíveis a custo, onde a qualidade de saída tem um piso aceitável conhecido.
Monitoramento
Seção intitulada “Monitoramento”O dashboard oferece visibilidade em tempo real do desempenho do Smart Selector em Smart Selectors > [Seu Selector]:
- Variante vencedora — qual variante atualmente possui o maior score composto.
- Distribuição de seleção — um gráfico mostrando que porcentagem do tráfego cada variante recebe ao longo do tempo. Um selector saudável mostra o tráfego se concentrando na melhor variante enquanto mantém uma pequena fatia de exploração.
- Tendências de score — gráficos de score por variante em todas as cinco dimensões, plotados ao longo da janela de avaliação.
- Volume de feedback — número de submissões de feedback por variante, para que você possa identificar variantes que precisam de mais dados.
Requisitos de Plano
Seção intitulada “Requisitos de Plano”O Smart Selector está disponível no plano Pro e superiores. A funcionalidade é controlada pela flag has_smart_selector no plano da sua organização. Planos Free e Starter podem visualizar a página de configuração do Smart Selector, mas não podem ativar selectors.