La meva aplicació financera FinMan VHWorx llegeix comptadors d'utilitat, rebuts de combustible i extractes bancaris a partir de fotos i fitxers. Tot això funciona amb LLMs de visió/text a través d'OpenRouter — i molt d'això amb models de nivell gratuït.
Els models gratuïts són genials excepte per una cosa: canvien constantment. Apareixen, desapareixen, es renominen o es depreciuen silenciosament. Codifica un id de model, i la teva funció mor silenciosament un dimarts aleatori.
Així que FinMan va deixar de tractar els models com a constants. Els models són dades:
- Una feina diària sincronitza la llista de models en viu d'OpenRouter. Nous models de visió gratuïts s'afegeixen automàticament; els que han desaparegut es desactiven.
- Les alternatives de pagament es reclassifiquen per preu diàriament. La família Gemini Flash fa de suport al nivell gratuït, el més barat primer — així que un failover mai sorprèn la factura.
- El reconeixement segueix la llista de prioritats. Si un model falla o ha desaparegut, el següent pren el relleu. Un model mort mai trenca la foto d'un usuari.
- L'aplicació s'actualitza sola. Una feina separada fixa el model superior d'una taula de classificació pública com a prioritat #1 — així que les tasques de text es mouen tranquil·lament al que és actualment millor.
- Els canvis em pinguen per Telegram. Sense taulers per comprovar.
El resultat després de mesos en producció: no he tocat un id de model des de llavors. Cada onada de depreciació ha passat desapercebuda — per mi i pels usuaris.
Si estàs construint sobre LLMs (especialment nivells gratuïts), aquest és el canvi petit de més alt impacte que conec: models com a dades, no constants. Una taula, un cron diari, una caminada de prioritats. Aquest és el truc complet.