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