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