Meine Finanz-App FinMan VHWorx liest Zählerstände, Kraftstoffquittungen und Kontoauszüge aus Fotos und Dateien. All das läuft über Vision/Text-LLMs via OpenRouter — und vieles davon auf kostenlosen Modellen.
Kostenlose Modelle sind großartig, außer in einem Punkt: sie churnen ständig. Sie erscheinen, verschwinden, werden umbenannt oder stillschweigend abgewertet. Kodieren Sie eine Modell-ID fest, und Ihre Funktion stirbt leise an einem zufälligen Dienstag.
Also hörte FinMan auf, Modelle als Konstanten zu behandeln. Modelle sind Daten:
- Ein täglicher Job synchronisiert die Live-Modellliste von OpenRouter. Neue kostenlose Vision-Modelle werden automatisch hinzugefügt; verschwundene werden deaktiviert.
- Kostenpflichtige Fallbacks werden täglich nach Preis neu bewertet. Die Gemini Flash-Familie sichert die kostenlose Stufe, zuerst die günstigsten — sodass ein Failover die Rechnung nie überrascht.
- Die Erkennung folgt der Prioritätenliste. Wenn ein Modell einen Fehler hat oder verschwunden ist, übernimmt das nächste. Ein totes Modell bricht niemals das Foto eines Nutzers.
- Die App aktualisiert sich selbst. Ein separater Job setzt das beste Modell von einer öffentlichen Community-Rangliste als Priorität #1 — sodass Textaufgaben leise zu dem wechseln, was gerade am besten ist.
- Änderungen benachrichtigen mich über Telegram. Keine Dashboards zu überprüfen.
Das Ergebnis nach Monaten in der Produktion: Ich habe seitdem keine Modell-ID mehr berührt. Jede Abwertungswelle blieb unbemerkt — von mir und von den Nutzern.
Wenn Sie auf LLMs aufbauen (insbesondere auf kostenlosen Stufen), ist dies die wirkungsvollste kleine Änderung, die ich kenne: Modelle als Daten, nicht als Konstanten. Eine Tabelle, ein täglicher Cron, ein Prioritätenlauf. Das ist der ganze Trick.