Mon application de finance FinMan VHWorx lit les compteurs de services publics, les reçus de carburant et les relevés bancaires à partir de photos et de fichiers. Tout cela fonctionne sur des LLM de vision/texte via OpenRouter — et beaucoup sur des modèles gratuits.
Les modèles gratuits sont excellents sauf pour une chose : ils changent constamment. Ils apparaissent, disparaissent, sont renommés ou dépréciés silencieusement. Si vous codez en dur un identifiant de modèle, votre fonctionnalité meurt silencieusement un mardi aléatoire.
Donc FinMan a cessé de traiter les modèles comme des constantes. Les modèles sont des données :
- Un travail quotidien synchronise la liste des modèles en direct depuis OpenRouter. De nouveaux modèles de vision gratuits sont ajoutés automatiquement ; ceux qui ont disparu sont désactivés.
- Les sauvegardes payantes sont réorganisées par prix quotidiennement. La famille Gemini Flash soutient le niveau gratuit, le moins cher en premier — donc un basculement ne surprend jamais la facture.
- La reconnaissance suit la liste de priorité. Si un modèle échoue ou est absent, le suivant prend le relais. Un modèle mort ne casse jamais la photo d'un utilisateur.
- L'application se met à jour elle-même. Un travail séparé fixe le meilleur modèle d'un classement communautaire public comme priorité #1 — donc les tâches textuelles passent discrètement à ce qui est actuellement le meilleur.
- Les changements me ping sur Telegram. Pas de tableaux de bord à vérifier.
Le résultat après des mois en production : je n'ai pas touché un identifiant de modèle depuis. Chaque vague de dépréciation est passée inaperçue — par moi et par les utilisateurs.
Si vous construisez sur des LLM (surtout des niveaux gratuits), c'est le changement de petite taille le plus efficace que je connaisse : modèles comme données, pas constantes. Un tableau, un cron quotidien, une marche de priorité. C'est tout le truc.