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