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