Постоянный герой в Gemini API: замер на 18 кадрах показал, что голый промпт уводит одежду
У генератора картинок нет памяти между запросами, поэтому «постоянный персонаж» — это дисциплина клиента: фиксированный текстовый паспорт героя и эталонные референсы в каждом запросе. Автор прогнал 18 генераций сцены с двумя героями на трёх вариантах промпта. Лица не поменялись ни разу, но на голом промпте одежда и аксессуары ушли от эталона, а на фоне вылезли надписи.
AI-обработка оригинала Habr AI; редакция Hamidun News
Если вы делаете ролики или рекламу с одними и теми же героями, главная боль знакома: в третьем кадре героиня уже на себя не похожа, а двое в одной сцене вдруг меняются лицами или одеждой. Автор Habr разобрал, как с этим справляться через Gemini API, и проверил свои приёмы небольшим замером.
Почему лицо уплывает
У генератора нет памяти между запросами. Каждый вызов собирает кадр заново из текста и приложенных картинок. Значит, постоянство героя нужно обеспечивать на стороне клиента.
Автор предлагает четыре элемента:
- Паспорт: фиксированный текстовый блок с внешностью, который вставляется в каждый промпт байт в байт. В него идёт только неизменное: возраст, волосы, глаза, приметы. Улыбку и одежду туда писать нельзя, иначе улыбка появится в каждом кадре.
- Эталон: портрет анфас на сером фоне, ровный свет, нейтральное лицо. Он идёт референсом в каждый запрос.
- Виды: анфас, три четверти, профиль, спина. Каждый вид генерируется отдельным запросом с эталоном на входе. Когда автор попросил все четыре вида одной картинкой, модель развернула голову влево, а ступни вправо.
- Проверка каждого кадра глазами в полном размере.
Технически всё просто: в generateContent картинки уходят как inlineData в том же массиве parts, что и текст. Порядок частей и есть порядок картинок, на который ссылается промпт. Соотношение сторон лучше задавать параметром imageConfig.aspectRatio: строка в промпте остаётся подсказкой, а параметр выполняется.
Замер: двое в кадре
Автор взял gemini-3.1-flash-image и две пары героев: женщина и мужчина, а также две заметно разные женщины. Три варианта промпта, по три дубля на пару, всего 18 генераций:
- Голый: «эти двое встречаются в кафе», без ролей и примет.
- С ролями: кто сидит, кто стоит, кто слева. Нумерации картинок нет.
- С нумерацией: «Image 1 — это женщина: …», «Image 2 — это мужчина: …», приметы словами и прямой запрет смешивать лица.
Лица местами не поменялись ни разу, и спиной никто не сел. Разница нашлась в деталях. В голом промпте на героине в одном дубле из трёх появились тёмная куртка и золотой браслет, которых нет на эталоне, и она выглядела старше. В другом дубле на доске в кафе возникла надпись «EVENING SPECIALS». Вариант с ролями держал лица и одежду в 6 дублях из 6, но в двух дублях на фоне были вывески, хотя в промпте стояло no text. Вариант с нумерацией дал 6 из 6 без ошибок и без надписей.
Главный вывод: риск голого промпта не в обмене лицами, а в дрейфе одежды и аксессуаров от эталона. Три дубля на вариант — маленькая выборка, и считать по ней «минус N процентов ошибок» нельзя. К тому же сравнение неидеально: время суток в голых промптах разное, а no text был только в промптах с ролями. Двух похожих героев, например брюнетов в костюмах, автор не проверял.
Видео и Omni
Для видео автор использует gemini-omni-1.1-flash через Interactions API. Роли картинок задаются метками прямо в тексте: <FIRST_FRAME> для первого кадра и <IMAGE_REF_n> для эталонов героев. Рабочий порядок такой: сначала собрать и проверить кадр с двумя героями, потом отдать его как первый кадр, а эталоны добавить референсами.
Модель сама решает, где кто окажется. На просьбу «садится напротив» герой сел рядом, потому что стоял сбоку. Если расстановка важна, нужен первый кадр, где персонажи уже сидят, а в видео остаётся только действие.
С 5 ноября доступна gemini-omni-1.2-flash, и с 3 декабря запросы к 1.1 перенаправят на неё. В ней длительность стала параметром (от 3 до 15 секунд), а секунда 720p подешевела с $0,10 до $0,07. Но в одном тесте метки первого и последнего кадра не сработали. Помогла прямая фраза в начале промпта: «The video starts exactly on the first image and ends exactly on the second image». Для варианта с одним FIRST_FRAME и IMAGE_REF на 1.2 проверки не было.
Что делать на практике
- Держите паспорт героя константой в коде, а не текстом, который пишется заново.
- Для сцен с двумя героями нумеруйте картинки и перечисляйте приметы. Это стоит пары строк и делает промпт однозначным.
- Не верьте no text: смотрите фон, вывеска за спиной героя в рекламе вылезет первой.
- Склеивайте дубли в контактный лист и открывайте подозрительные кадры с увеличением. Куртку и браслет автор заметил только рядом с чистыми дублями.
По деньгам картинка 1K стоит около $0,067, весь замер из 18 кадров — около $1,21, а 6-секундный клип на Omni 1.1 обошёлся в $0,63.
- 12 нояб. 2026 г.Google открывает предзаказ на очки с Gemini от $395 и блокирует скрытую съёмку
- 12 нояб. 2026 г.Google привезла Gemini Intelligence в Android Auto — пока только для Pixel
- 12 нояб. 2026 г.По иску, школьница три месяца говорила с Gemini о суициде, а мониторинг молчал неделями
- 12 нояб. 2026 г.Google и Adobe сближают продукты: Acrobat появится в Gmail, Drive и Gemini
Вопросы и ответы по материалу
Что известно по теме: почему лицо уплывает?
У генератора нет памяти между запросами. Каждый вызов собирает кадр заново из текста и приложенных картинок. Значит, постоянство героя нужно обеспечивать на стороне клиента. Автор предлагает четыре элемента: Паспорт: фиксированный текстовый блок с внешностью, который вставляется в каждый промпт байт в байт. В него идёт только неизменное: возраст, волосы, глаза, приметы. Улыбку и одежду туда писать нельзя, иначе улыбка появится в каждом кадре. Эталон: портрет анфас на сером фоне, ровный свет, нейтральное лицо.
Что известно по теме: замер: двое в кадре?
Автор взял gemini-3.1-flash-image и две пары героев: женщина и мужчина, а также две заметно разные женщины. Три варианта промпта, по три дубля на пару, всего 18 генераций: Голый: «эти двое встречаются в кафе», без ролей и примет. С ролями: кто сидит, кто стоит, кто слева. Нумерации картинок нет. С нумерацией: «Image 1 — это женщина: …», «Image 2 — это мужчина: …», приметы словами и прямой запрет смешивать лица. Лица местами не поменялись ни разу, и спиной никто не сел. Разница нашлась в деталях.
Что известно по теме: видео и Omni?
Для видео автор использует gemini-omni-1.1-flash через Interactions API. Роли картинок задаются метками прямо в тексте: <FIRST_FRAME> для первого кадра и <IMAGE_REF_n> для эталонов героев. Рабочий порядок такой: сначала собрать и проверить кадр с двумя героями, потом отдать его как первый кадр, а эталоны добавить референсами. Модель сама решает, где кто окажется. На просьбу «садится напротив» герой сел рядом, потому что стоял сбоку.
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.