Meu aplicativo financeiro FinMan VHWorx lê medidores de utilidades, recibos de combustível e extratos bancários de fotos e arquivos. Tudo isso funciona com LLMs de visão/texto via OpenRouter — e muito disso em modelos de nível gratuito.
Modelos gratuitos são ótimos, exceto por uma coisa: eles mudam constantemente. Eles aparecem, desaparecem, são renomeados ou desativados silenciosamente. Codifique um id de modelo, e seu recurso morre silenciosamente em uma terça-feira aleatória.
Então, o FinMan parou de tratar modelos como constantes. Modelos são dados:
- Um trabalho diário sincroniza a lista de modelos ao vivo do OpenRouter. Novos modelos de visão gratuitos são adicionados automaticamente; os que desapareceram são desativados.
- Alternativas pagas reclassificam por preço diariamente. A família Gemini Flash faz backup do nível gratuito, começando pelo mais barato — assim, um failover nunca surpreende a conta.
- O reconhecimento percorre a lista de prioridades. Se um modelo falha ou desaparece, o próximo assume. Um modelo inativo nunca quebra a foto de um usuário.
- O aplicativo se atualiza automaticamente. Um trabalho separado fixa o modelo principal de um ranking comunitário público como prioridade #1 — assim, tarefas de texto se movem silenciosamente para o que é atualmente melhor.
- As mudanças me notificam no Telegram. Sem painéis para verificar.
O resultado após meses em produção: não toquei em um id de modelo desde então. Cada onda de desativação passou despercebida — por mim e pelos usuários.
Se você está construindo em LLMs (especialmente em níveis gratuitos), essa é a mudança pequena de maior impacto que conheço: modelos como dados, não constantes. Uma tabela, um cron diário, uma caminhada de prioridade. Esse é o truque todo.