Мій фінансовий додаток FinMan VHWorx читає комунальні лічильники, чеки за паливо та банківські виписки з фотографій та файлів. Усе це працює на візуальних/текстових LLM через OpenRouter — і багато з цього на безкоштовних моделях.
Безкоштовні моделі чудові, за винятком однієї речі: вони постійно змінюються. Вони з'являються, зникають, перейменовуються або тихо знецінюються. Закріпіть ідентифікатор моделі, і ваша функція тихо помре в випадковий вівторок.
Тому FinMan перестав розглядати моделі як константи. Моделі — це дані:
- Щоденна робота синхронізує живий список моделей з OpenRouter. Нові безкоштовні візуальні моделі додаються автоматично; зниклі деактивуються.
- Платні резерви повторно ранжуються за ціною щодня. Сімейство Gemini Flash підкріплює безкоштовний рівень, спочатку найдешевше — тому переключення ніколи не дивує рахунок.
- Розпізнавання проходить пріоритетний список. Якщо модель помиляється або зникла, наступна бере на себе. Одна мертва модель ніколи не ламає фотографію користувача.
- Додаток оновлює себе. Окрема робота закріплює найкращу модель з публічного лідерборду як пріоритет #1 — тому текстові завдання тихо переходять до того, що наразі найкраще.
- Зміни пінгують мене в Telegram. Ніяких панелей для перевірки.
Результат після місяців у виробництві: я не торкався ідентифікатора моделі з тих пір. Кожна хвиля знецінення пройшла непомічено — мною та користувачами.
Якщо ви будуєте на LLM (особливо безкоштовних рівнях), це найвищий важіль маленької зміни, який я знаю: моделі як дані, а не константи. Таблиця, щоденний крон, пріоритетний прохід. Ось у чому весь трюк.