Сейчас много говорят про генерацию картинок через AI так, будто это выглядит примерно так: написал «сделай красиво», получил идеальную картинку, вставил на сайт, пошёл пить кофе.
На практике всё немного иначе. Особенно если речь не про абстрактный баннер «красивая девушка в клинике улыбается в белом халате», а про реальные изображения услуг для сайта клиники.
У нас задача была довольно приземлённая: для услуг на сайте AVA нужно сделать нормальные изображения препаратов. Не рекламную фантазию, не «похожую коробочку», не что-то из воздуха, а картинку, которую можно поставить в карточку услуги и не краснеть.
Например: есть услуга биоревитализации конкретным препаратом. На сайте у этой услуги должна быть картинка. Хочется, чтобы она выглядела аккуратно: препарат лежит на стальном медицинском подносе, фон клинический, всё чисто, реалистично, без мусора.
Звучит просто. Но дьявол, как обычно, решил устроить себе там прописку.
Почему нельзя просто взять картинку из интернета
Первый вариант, конечно, самый очевидный: найти фото упаковки в интернете и поставить его.
Проблем несколько.
Во-первых, качество. Часто это фотографии с маркетплейсов: криво снятые, с белым фоном, низким разрешением, с водяными знаками, бликами, шприцами, иглами, руками, лишними предметами и всем тем, что не хочется тащить на сайт клиники.
Во-вторых, единый стиль. Если на одной услуге фото коробки на белом фоне, на другой — 3D-рендер, на третьей — фотография со склада, сайт начинает выглядеть как сборная солянка. Для клиники это плохо: медицинская услуга должна выглядеть аккуратно и спокойно, а не как карточка с Авито.
В-третьих, юридическая и репутационная часть. Даже если картинку можно технически скачать, это не значит, что её нормально использовать как постоянный визуал на сайте.
Поэтому мы пошли по другому пути: берём реальный референс препарата и собираем из него новую композицию в едином стиле.
Что мы решили делать
Схема получилась такая:
- Находим реальное изображение упаковки препарата.
- Очищаем/обрезаем его, если нужно: убираем лишние шприцы, иглы, фон, мусор.
- Берём единый референс фона — стальной медицинский поднос.
- Через Gemini собираем композицию: коробка препарата лежит на подносе.
- Проверяем глазами.
- Если я принимаю — загружаем в S3 и привязываем к услугам в базе.
То есть AI здесь не «придумывает препарат». Он работает скорее как Photoshop-ассистент: берёт конкретную упаковку и пытается встроить её в нужную сцену.
И вот тут начинается самое интересное.
Главная проблема — AI очень хочет «улучшать»
Мы довольно быстро упёрлись в то, что генератор постоянно пытается быть слишком творческим.
Просишь: «положи коробку на поднос, на подносе ничего другого быть не должно».
А он такой: «Понял. Вот коробка, а рядом шприц. Ну медицинская же тема».
Просишь: «текст на коробке должен читаться».
Он может повернуть коробку красиво, но так, что название препарата прочитать невозможно. Или ещё хуже — чуть-чуть переписать текст на упаковке. Для обычной красивой картинки это, может быть, и неважно. Для медицинской услуги — важно.
Просишь реалистичную физику и оптику.
Он иногда делает коробку так, будто она парит над подносом, или отражение живёт своей отдельной жизнью.
То есть генератор не понимает бизнес-задачу как человек. Он не знает, что если на препарате написано не то название, это уже не «почти хорошо», а «нельзя использовать».
Промпт пришлось стабилизировать
Мы пришли к довольно жёсткому правилу: промпт не трогать.
Да, звучит странно. Обычно хочется каждый раз улучшить формулировку: добавить деталей, уточнить препарат, дописать ограничения. Но на практике это превращается в хаос. Один раз поменял слово — получил другой стиль, другую композицию, другой уровень самодеятельности.
В итоге рабочий промпт зафиксировали и используем дословно:
Действуй как специалист по Photoshop. Объедини изображения в фотореалистичную композицию. Коробка с препаратом с первого изображения должна встать на стальной поднос со второго изображения. На подносе ничего другого не должно быть, в том числе и шприцов. Коробка с препаратом должна лежать на боку, но таким образом, чтобы такс на нем легко читался. Учитывай физику и оптику предметов
И да, там есть опечатка, которую я только что увидел :), но промпт работает хорошо и, возможно, я не буду исправлять эту опечатку.
Это, кстати, хороший пример реального использования AI. Иногда стабильность важнее красоты формулировки.
Почему не генерируем по 10 вариантов
Вторая ловушка — начать бесконечно перебирать варианты.
С AI это очень легко: «а давай ещё один», «а вдруг следующий будет лучше», «а вот тут угол не идеальный», «а тут поднос красивее».
Так можно убить полдня на одну картинку.
Поэтому мы ввели ограничение: одна генерация — показываем результат — я принимаю или отклоняю.
Ева сначала пыталась сама оценивать результат, перегенерировать, улучшать, выбирать лучший. Но для такой задачи это неправильный режим. Потому что финальное решение всё равно моё: подходит ли картинка для сайта, можно ли её использовать, не выглядит ли она странно.
AI-ассистент должен не бесконечно «улучшать», а делать контролируемый шаг и отдавать на принятие решения.
Техническая часть тоже не такая гладкая
Ещё один миф: «ну это же просто генерация картинки».
Нет. У нас там целый маленький конвейер.
Используем Gemini через отдельный Chrome for Testing, подключаемся к нему через Playwright/CDP. Почему не просто API? Во-первых, так дешевле: не надо каждый раз жечь токены на эксперименты через API. Во-вторых, в этой конкретной задаче Gemini визуально работает быстрее и лучше, чем ChatGPT, который картинки делает откровенно медленнее и хуже. Ну и сам режим с референсами и визуальной генерацией удобнее и стабильнее именно в интерфейсе Gemini.
Но у такого подхода есть свои радости:
- браузер может быть не запущен;
- сессия может слететь;
- Google может решить, что у нас «unusual traffic»;
- загрузка файлов может не сработать;
- меню Gemini может повести себя не так, как вчера;
- нужно не потерять результат и правильно скачать файл;
- нельзя запускать persistent context так, чтобы сломать авторизацию;
- после генерации нужно аккуратно не отправить одно и то же изображение дважды в Telegram. Да, такое тоже было. Привет, автоматизация.
Самое смешное, что большая часть времени уходит не на «AI нарисовал», а на вокруг-AI-инфраструктуру: открыть, загрузить, дождаться, скачать, проверить, не сломать, сохранить.
После картинки работа не заканчивается
Допустим, картинка получилась нормальной.
Это ещё не финал.
Дальше нужно:
- Положить файл в правильную папку проекта.
- Назвать его так, чтобы потом было понятно, что это за услуга и какая версия.
- Загрузить в S3.
- Проверить, что URL реально отдаёт `image/png` и HTTP 200.
- Найти нужные услуги в базе. Часто их две: например, одна для косметолога, другая для главного врача.
- Обновить `extra.images` у обеих услуг.
- Проверить, что в базе ссылка действительно обновилась.
То есть генерация — это только середина процесса. До сайта картинку ещё надо правильно довести.
Где AI реально помогает
Несмотря на весь этот зоопарк, польза есть.
Раньше для таких картинок пришлось бы либо:
- искать фотографа;
- снимать препараты руками;
- покупать/искать подходящие изображения;
- долго чистить всё в Photoshop;
- мириться с разнородным стилем на сайте.
Сейчас можно довольно быстро привести карточки услуг к единому виду. Особенно если есть нормальные референсы упаковок.
AI здесь хорошо работает как инструмент для полуавтоматической визуальной унификации. Не как «креативный директор», а как исполнитель, которого нужно держать в рамках.
Где AI пока раздражает
Главные ограничения:
- плохо соблюдает мелкие надписи на упаковке;
- иногда добавляет лишние медицинские предметы;
- не всегда понимает, что «реалистично» — это не просто красиво;
- может менять форму коробки или пропорции;
- плохо гарантирует повторяемость результата;
- требует ручного контроля на каждом шаге.
И ещё важный момент: чем конкретнее предмет, тем меньше свободы можно давать модели. Если это абстрактный баннер — можно фантазировать. Если это конкретный препарат — фантазия вредна.
Что получилось в итоге
Мы уже прогнали несколько услуг: Novacutan, Revi Eyes, Meso Eye и другие. Для принятых вариантов картинки загрузили в S3 и привязали к нужным услугам на сайте.
Процесс пока не идеальный, но уже рабочий:
- есть единый стиль;
- есть утверждённый промпт;
- есть порядок генерации;
- есть контроль перед публикацией;
- есть загрузка и проверка результата;
- есть понимание, где AI помогает, а где начинает чудить.
Главный вывод
AI в таких задачах — это не волшебная кнопка «сделай красиво».
Это скорее стажёр с очень хорошими руками и странной головой. Он может быстро собрать картинку, но ему нельзя полностью доверять смысл, точность и финальное решение.
Поэтому нормальный процесс выглядит не так:
написал промпт → получил красоту → опубликовал.
А так:
нашёл референсы → зафиксировал промпт → сгенерировал один вариант → проверил → принял или отклонил → загрузил → привязал к услуге → проверил на сайте.
И вот это, на мой взгляд, и есть реальное внедрение AI в бизнесе. Не красивые демо, где всё получается с первого раза, а скучная, местами раздражающая, но полезная автоматизация конкретной задачи.
Если интересно, отдельно могу рассказать, как мы выстраиваем для этого технический конвейер: Playwright, Gemini, S3, база услуг и проверка результата. Там тоже хватает весёлого.