Как я перестал крутить рулетку с AI‑сервисами и сделал себе нормальный стенд
По сути, это была лотерея на настроении. Я выбирал модели не потому, что они доказали себя в цифрах, а потому, что "в прошлый раз вроде понравилось".В какой‑то момент меня это окончательно утомило, и я собрал себе маленький, но упрямый тестовый стенд на TypeScript. Ничего монструозного: обычный проект, OpenRouter API, несколько скриптов, которые запускаются через свои npm run test:* и делают всю грязную работу за меня.
Схема примитивная, как табуретка: один и тот же набор задач отправляется в разные модели, а результаты падают в отдельные директории и превращаются в HTML‑отчёт.Открыл отчёт в браузере — и сразу видно, кто действительно тянет задачу, а кто просто умеет рисовать красивые картинки без привязки к требованиям.
Что именно я гоняю по моделям
Вместо абстрактных бенчмарков я взял те сценарии, на которых чаще всего обжигаюсь в работе.
Соотношения сторон — test:aspect-ratio.Задача тривиальная: попросили 3:4 — получи 3:4, заказали квадрат — получи 1:1, нужен баннер — 16:9. На бумаге это кажется базовой функцией, но реальность такая, что часть движков упрямо лепит один и тот же формат, даже если в промпте явно прописана вертикаль или горизонталь.
Длинные и тяжёлые промпты — test:long-prompt.Знакомое всем ТЗ на полэкрана текста: условия, уточнения, исключения и ещё пара «а давайте тут по‑другому». На таких простынях отлично видно, какая модель может не развалиться к концу инструкции, а какая уже к середине начинает додумывать мир по собственным правилам.
Нишевые запросы — test:niche (ресторан, ремонт, медицина, дом).«Красивый интерьер» умеют почти все. Но стоит попросить «ванную в процессе ремонта» — и шоу начинается: один сервис показывает склад стройматериалов, другой рисует операционную, третий выдаёт странный гибрид, который не подходит ни под одну реальную задачу.
Стоимость и скорость — test:cost-and-time.Здесь я смотрю на цену и время отклика одновременно. Забавная штука: модель, которая в прайсах выглядит самой дешёвой, внезапно оказывается самой прожорливой по бюджету, если просто существенно дольше всех считает один и тот же набор промптов.
Плюс в наборе есть композиционные проверки: коллажи 2×2 и 3×3, вариативные промпты. Это уже история про аккуратные композиции и финишную доводку, когда важны не только детали, но и общая сборка сцены.
Как это встроилось в мои рабочие дни
Каждый прогон падает в outputs/ Отдельный слой — управление пулом моделей. В models.conf лежит список, который я щёлкаю как тумблеры: надо протестировать модель — включил, устал от её выкрутасов — закомментировал до следующего апдейта. Логика тестов при этом не меняется, меняется только состав участников.Сейчас в активном наборе у меня, например, flux.2-klein-4b, riverflow-v2-fast, seedream-4.5, остальные спокойно лежат в конфиге и ждут своего часа. Главное, что ушло, — ощущение, будто я выбираю по хайпу, рекламным лендингам и случайным «мне понравилось в прошлый раз». Теперь это выглядит куда спокойнее и честнее: В какой‑то момент это перестало быть игрой в стилe "ну давай попробуем ещё один модный сервис, вдруг повезёт".Сейчас у меня нормальный рабочий конвейер: формулирую требования, запускаю нужные тесты, смотрю на метрики, открываю отчёт и спокойно решаю, какая модель идёт в прод, а какую мы пока отправляем отлежаться до следующего крупного обновления
Что реально поменялось в выборе сервисов