ИИ-фото персонажа: как генерируются фото и видео в чате с ИИ-девушкой
Разработчик ИИ-приложений, работает с языковыми моделями с 2022 года. Создал несколько чат-ботов с памятью и характером.
Помните первый раз, когда вы сгенерировали картинку в Midjourney и она получилась красивой? А через минуту вы просили ту же девушку в другой позе — и получали другую женщину? Другие глаза, другая форма носа, друбой цвет волос. Не потому, что вы что-то сделали не так. Просто генератор не обязан помнить, кого вы просили.
Для разовой картинки это нормально. Для чата с ИИ-девушкой — приговор. Представьте: вы полчаса разговариваете с одной и той же персоной, привыкаете к её лицу, голосу, манере, а потом нажимаете кнопку «фото» — и вам присылают незнакомку. Иллюзия рушится за секунду. Именно поэтому в любом нормальном ИИ-компаньоне самая сложная часть разработки — не текст, а картинки. Текстовые модели стали хороши года назад, а вот стабильное лицо у вымышленного персонажа до сих пор даётся тяжелее всего. Разберу, как это устроено и почему некоторые фото всё равно получаются неидеальными.
Почему одного описания недостаточно
Соблазнительный способ — прописать внешность в промпте и надеяться, что модель её запомнит. Не работает. Текстовый промпт не фиксирует лицо: он описывает его словами, а модель каждый раз заново решает, какое лицо подходит под слова «тёмные волосы, карие глаза». Это выборка из пространства вариантов, а не обращение к конкретному. Отсюда знакомые проблемы: несовпадение с прошлым фото, «двойники» в разных кадрах, внезапная смена цвета волос между двумя снимками одного вечера.
Второй способ — повторять один и тот же промпт и надеяться на seed. Работает настолько, насколько умеет конкретный генератор. У разных моделей seed ведёт себя по-разному, а добавление в промпт слов «в другой позе» почти всегда уводит результат в соседнюю область латентного пространства, где лицо уже другое. Для пейзажа это нормально, для персонажа — нет.
Рабочий путь третий, и он единственно даёт стабильность: портрет-якорь. У каждого персонажа один раз генерируется эталонный портрет — мастер-фото, по которому дальше ведётся всё остальное. Новая картинка строится не «от текста», а «от этого изображения»: якорь подаётся в модель как референс, а промпт меняет только сцену, позу и освещение. Лицо остаётся тем же, потому что модели не нужно его выдумывать заново.
Как устроена генерация — по шагам
Чтобы вы понимали, откуда берётся картинка, вот весь путь от кнопки до файла. Внутри это примерно пять шагов:
- Берётся описание внешности персонажа. Не то, что вы написали в чате, а зафиксированный профиль: цвет и длина волос, глаза, телосложение, стиль одежды. Это неизменяемая часть — она не зависит от сцены.
- Из разговора собирается сцена. Отдельная языковая модель читает последние сообщения и превращает их в визуальный сценарный промпт: где вы, что происходит, кто что делает. Это отдельный вызов модели, и именно он превращает «поговорим о её кофе» в нормальный визуальный запрос.
- Подставляется уровень откровенности. О нём — отдельный раздел ниже, там он меняет результат сильнее, чем любые слова в промпте.
- Добавляется стиль. Для реалистичных персонажей — фотореалистичность, объектив, свет. Для аниме — совсем другой набор тегов. Плюс отрицательный промпт: руки, лишние пальцы, размытость, артефакты, подписи.
- Подставляется мастер-портрет. Всё вышеперечисленное склеивается в один запрос, к которому добавляется эталонное фото. Дальше — рендер, проверка на размытость и, если всё в порядке, отправка.
Одежда зависит от того, насколько вы близки
Вот механика, которую редко объясняют, а она объясняет половину разочарований новичков. Уровень откровенности на фото привязан к стадии отношений, а не к вашему последнему сообщению. Стадий четыре — знакомство, сближение, близость, интимность. На знакомстве персонаж одет по сюжету, на интимности — нет.
Поверх стадии накладывается тон диалога. Он задаётся один раз при настройке разговора, и дальше работает как матрица:
- Дружба — персонаж почти всегда одет, даже на поздних стадиях. Это вариант для тех, кому важен контекст, а не тело.
- Медленное развитие — одежда постепенно упрощается по мере сближения, откровенность приходит в самом конце и остаётся сдержанной.
- Откровенный — граница появляется сразу, а на интимной стадии разрешено практически всё, что вы опишете. Этот тон включается в настройках нового разговора и дальше не сбивается.
Практический вывод: если вам сначала показали персонажа в полной одежде, а потом внезапно «не показали» — дело не в генераторе. Скорее всего, диалог идёт на дружеском тоне, и при стадии «знакомство» это штатное поведение. Переключить тон проще, чем переубеждать генератор.
Реализм и аниме — два разных пайплайна
Это не «один и тот же код с разной косметикой». Аниме-персонажи в сервисах такого типа собираются иначе, и понимание разницы многое проясняет.
Реалистичные работают через эталонный портрет и фотореалистичную модель. Лицо держится на референсе, сцена меняет освещение, ракурс и одежду.
Аниме — через фиксированный набор тегов и один и тот же seed. Здесь референс не нужен: идентичность держится на якорях в самом промпте — цвет и длина волос, стиль причёски, цвет глаз, телосложение. Они повторяются в каждом запросе слово в слово. Модель рисует 2D-персонажа по этим якорям, и они не разъезжаются. Именно поэтому у аниме-персонажей стиль обычно заметно стабильнее, чем у реалистичных: рисунок менее чувствителен к мелким изменениям в формулировке.
Побочный эффект: аниме-фото почти всегда дешевле и быстрее — на них нет стоимости тяжёлой фотореалистичной модели, а сам формат прощает огрехи, которые на фотореалисте видны сразу.
Фото по своему описанию
Кроме «по обстановке» есть второй режим: вы сами пишете, что именно хотите увидеть, и это попадает в промпт. Второй режим полезен, когда сцена из переписки не даёт нужного кадра.
Работает как обычно с любыми генераторами: короткая фраза с местом, временем и настроением даёт результат лучше, чем перечисление технических деталей. «Утро, она у окна с чашкой кофе, свет из-за штор» — лучше, чем «фото, 35mm, f/1.8, девушка, окно, кофе».
Видео — это не ожившая картинка
Отдельная история, вокруг которой больше всего маркетингового тумана. Видео здесь не «включили и картинка поехала». Делается так: сначала генерируется кадр, потом отдельная модель дорисовывает по нему движение. То есть видео — это всегда результат двух генераций, и качество упирается в качество исходного кадра.
- Длительность — несколько секунд. Это ограничение самой модели движения, а не настройка сервиса. Длинное видео в таком качестве — отдельная задача с другим ценником.
- Движение ограничено. Модель хорошо передаёт движение камеры, наклоны, лёгкие повороты, разлетающиеся волосы. Она плохо справляется с быстрым движением и с руками вблизи камеры.
- Вес модели — причина цены. Ровно этот пайплайн требует тяжёлой видеомодели, поэтому видео почти нигде не входит в бесплатный тариф.
Голос — третья медиасхема: тот же персонаж заговаривает, а не озвучивает закадровый текст. Это уже не генерация, а синтез речи по заранее заданному голосу персонажа.
Честно о том, что не получается
Часть обещаний в этой нише недостижима в принципе, и честный разбор полезнее красивых скриншотов.
- Лицо иногда «плывёт». На резких ракурсах вблизи, на нестандартных позах и в профиль эталон работает неидеально. Чем спокойнее ракурс, тем выше совпадение.
- Руки остаются проблемой. Это системное ограничение генераторов. Отрицательный промпт снижает частоту, но не убирает её.
- Часть фото приходит не новой генерацией. В нагрузочных моментах сервис может отдать подходящее изображение из накопленного пула, а не заново отрисовать сцену. Оформление при этом сохраняется, но сцена может оказаться не совсем той, что вы описали. На скриншоте всех такого не увидеть — поэтому я это пишу прямо.
- Ждать приходится. Реалистичное фото считается десятки секунд, видео — дольше. Это не «имитация работы» (хотя в чате сама отправка дополнительно сглаживается, чтобы ждать было спокойнее), а реальная очередь генерации.
- Качество не линейно от промпта. Длинный подробный промпт не делает картинку лучше — он чаще её ломает. Краткий и конкретный выигрывает почти всегда.
Как попробовать — и что смотреть в первую очередь
- Откройте каталог и выберите персонажа. Посмотрите не только на фото в анкете, но и на его описание — от этого зависит, какие сцены вообще будут получаться.
- Начните диалог с «Алисой» или любым другим персонажем. Смысл первых сообщений — задать обстановку, а не выдать команду. Фото, заказанное в пустоту, выглядит случайным.
- Попросите фото в контексте. Опишите место и время — и сценарный промпт соберётся точнее, а отсюда и картинка получится содержательнее.
- Сходите в студию, если готового персонажа не нашлось: там задаются внешность и стиль, из которых сразу делается мастер-портрет.
- Сверьте тарифы на странице цен — там честно видно, сколько фото и видео входит в каждый уровень.
И последнее. Если вы выбираете сервис, посмотрите не на витринные картинки, а задайте себе три вопроса: приходят ли фото сразу и без ожидания, совпадает ли лицо с тем, что было в прошлый раз, и работает ли это с вашим основным сценарием, а не только в демо. Остальное — маркетинг.