Moja aplikacja finansowa FinMan VHWorx odczytuje liczniki mediów, paragony za paliwo i wyciągi bankowe z zdjęć i plików. Wszystko to działa na wizji/tekście LLM za pośrednictwem OpenRouter — a wiele z tego na modelach z darmowego poziomu.
Darmowe modele są świetne, z wyjątkiem jednej rzeczy: ciągle się zmieniają. Pojawiają się, znikają, zmieniają nazwy lub są cicho wycofywane. Twarde kodowanie identyfikatora modelu sprawia, że twoja funkcja umiera cicho w losowy wtorek.
Dlatego FinMan przestał traktować modele jako stałe. Modele to dane:
- Codzienna praca synchronizuje listę modeli na żywo z OpenRouter. Nowe darmowe modele wizji są dodawane automatycznie; znikające są dezaktywowane.
- Płatne modele są codziennie ponownie klasyfikowane według ceny. Rodzina Gemini Flash wspiera darmowy poziom, najtańszy najpierw — więc przełączanie nigdy nie zaskakuje faktury.
- Rozpoznawanie przechodzi przez listę priorytetów. Jeśli model ma błąd lub zniknął, następny przejmuje. Jeden martwy model nigdy nie łamie zdjęcia użytkownika.
- Aplikacja sama się aktualizuje. Osobna praca przypisuje najlepszy model z publicznej listy liderów jako priorytet #1 — więc zadania tekstowe cicho przechodzą do tego, co jest aktualnie najlepsze.
- Zmiany informują mnie na Telegramie. Żadnych pulpitów do sprawdzania.
Rezultat po miesiącach produkcji: nie dotknąłem identyfikatora modelu od tego czasu. Każda fala deprecjacji przeszła niezauważona — przeze mnie i przez użytkowników.
Jeśli budujesz na LLM (szczególnie na darmowych poziomach), to jest to najwyższa dźwignia małej zmiany, jaką znam: modele jako dane, a nie stałe. Tabela, codzienny cron, przejście priorytetowe. To cały trik.