Min finansapp FinMan VHWorx læser målere, brændstofkvitteringer og bankudskrifter fra fotos og filer. Alt dette kører på vision/tekst LLM'er via OpenRouter — og meget af det på gratis-modeller.
Gratis modeller er gode bortset fra én ting: de ændrer sig konstant. De dukker op, forsvinder, bliver omdøbt eller stille deprecere. Hardcode en model-id, og din funktion dør stille på en tilfældig tirsdag.
Så FinMan stoppede med at behandle modeller som konstanter. Modeller er data:
- Et dagligt job synkroniserer den live model liste fra OpenRouter. Nye gratis visionsmodeller tilføjes automatisk; forsvundne deaktiveres.
- Betalte fallback-modeller omrangere efter pris dagligt. Gemini Flash-familien understøtter gratis niveauet, billigst først — så en failover overrasker aldrig regningen.
- Genkendelse følger den prioriterede liste. Hvis en model fejler eller er væk, overtager den næste. En død model bryder aldrig en brugers foto.
- Appen opgraderer sig selv. Et separat job fastsætter den bedste model fra en offentlig fællesskabsrangliste som prioritet #1 — så tekstopgaver stille flytter til hvad der aktuelt er bedst.
- Ændringer ping mig på Telegram. Ingen dashboards at tjekke.
Resultatet efter måneder i produktion: Jeg har ikke rørt en model-id siden. Hver deprecieringsbølge gik ubemærket hen — af mig og af brugerne.
Hvis du bygger på LLM'er (især gratis niveauer), er dette den højeste udbytte lille ændring, jeg kender: modeller som data, ikke konstanter. Et bord, en daglig cron, en prioriteret liste. Det er hele tricket.