La mia app finanziaria FinMan VHWorx legge i contatori di utilità, le ricevute di carburante e gli estratti conto bancari da foto e file. Tutto ciò funziona su LLM di visione/testo tramite OpenRouter — e gran parte di esso su modelli gratuiti.
I modelli gratuiti sono fantastici tranne per una cosa: cambiano costantemente. Appaiono, scompaiono, vengono rinominati o silenziosamente deprecati. Hardcodifica un id modello, e la tua funzione muore silenziosamente un martedì casuale.
Quindi FinMan ha smesso di trattare i modelli come costanti. I modelli sono dati:
- Un lavoro quotidiano sincronizza l'elenco dei modelli live da OpenRouter. Nuovi modelli di visione gratuiti vengono aggiunti automaticamente; quelli scomparsi vengono disattivati.
- I fallback a pagamento vengono riordinati per prezzo quotidianamente. La famiglia Gemini Flash supporta il livello gratuito, il più economico per primo — quindi un failover non sorprende mai la bolletta.
- Il riconoscimento segue l'elenco di priorità. Se un modello genera errori o è scomparso, il successivo prende il suo posto. Un modello morto non rompe mai la foto di un utente.
- L'app si aggiorna da sola. Un lavoro separato fissa il modello migliore da una classifica pubblica della comunità come priorità #1 — quindi i compiti di testo si spostano silenziosamente su quello che è attualmente il migliore.
- Le modifiche mi avvisano su Telegram. Niente cruscotti da controllare.
Il risultato dopo mesi in produzione: non ho toccato un id modello da allora. Ogni ondata di deprecazione è passata inosservata — da me e dagli utenti.
Se stai costruendo su LLM (soprattutto livelli gratuiti), questo è il cambiamento di piccola portata più efficace che conosco: modelli come dati, non costanti. Una tabella, un cron quotidiano, un percorso di priorità. Questo è il trucco.