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