Min finansapp FinMan VHWorx läser mätare, bränslekvittot och bankutdrag från foton och filer. Allt detta körs på visions/text LLMs via OpenRouter — och mycket av det på gratis-modeller.
Gratis modeller är bra förutom en sak: de förändras ständigt. De dyker upp, försvinner, byter namn eller avskrivs tyst. Hårdkoda en modell-id, och din funktion dör tyst en slumpmässig tisdag.
Så FinMan slutade behandla modeller som konstanter. Modeller är data:
- Ett dagligt jobb synkroniserar den aktuella modellistan från OpenRouter. Nya gratis visionsmodeller läggs till automatiskt; försvunna avaktiveras.
- Betalda reservmodeller omrankas efter pris dagligen. Gemini Flash-familjen backar upp gratisnivån, billigast först — så en failover överraskar aldrig fakturan.
- Återkänning går igenom prioriteringslistan. Om en modell ger fel eller är borta, tar nästa över. En död modell bryter aldrig en användares foto.
- Appen uppgraderar sig själv. Ett separat jobb sätter den bästa modellen från en offentlig community-ledartavla som prioritet #1 — så textuppgifter flyttas tyst till vad som för närvarande är bäst.
- Ändringar pingar mig på Telegram. Inga instrumentpaneler att kolla.
Resultatet efter månader i produktion: Jag har inte rört en modell-id sedan dess. Varje avskrivningsvåg passerade obemärkt — av mig och av användarna.
Om du bygger på LLMs (särskilt gratisnivåer), är detta den högsta avkastningen på en liten förändring jag känner till: modeller som data, inte konstanter. En tabell, en daglig cron, en prioriteringsgång. Det är hela tricket.