Если вы используете api генерации картинок для серии баннеров, карточек товаров или публикаций, проблема обычно появляется не на первой генерации. Отдельная картинка может выглядеть хорошо, но десять изображений подряд начинают различаться по свету, цветам, композиции и характеру деталей. Поэтому стиль генерации изображений лучше задавать не одним красивым прилагательным, а повторяемым набором правил.
Практический подход простой: собрать стилевой блок, который неизменно добавляется к каждому описанию, а затем проверить его на небольшой серии. В этой статье разберём, какие слова стоит фиксировать, как задавать палитру и свет, что помещать в запреты и как вынести постоянную часть промпта в переменную. Для работы с API ключ можно получить в разделе API после входа.
Из чего складывается узнаваемый стиль в описании
Узнаваемость серии начинается не с названия стиля, а с повторяющихся визуальных признаков. Если в одном запросе написать «минималистичная предметная фотография», а в другом «современный рекламный кадр», модель получает два разных набора ориентиров. Даже при одинаковом объекте результат может заметно измениться.
Я обычно делю стилевое описание на пять частей: материал или визуальная среда, палитра, свет, композиция и запреты. Эти части можно оформить как отдельный блок и не менять от запроса к запросу. Переменной остаётся только содержимое конкретной сцены: например, «керамическая чашка на столе» или «флакон косметики рядом с полотенцем».
Для примера возьмём условный стиль для предметных изображений:
STYLE_BLOCK = """
Фотореалистичная предметная съёмка для каталога.
Чистая спокойная композиция, один главный объект в центре внимания.
Матовые нейтральные поверхности, мягкий рассеянный дневной свет.
Палитра: молочный, бежевый, графитовый, приглушённый зелёный.
Низкая насыщенность, естественные материалы, аккуратные тени.
Без декоративного визуального шума, без текста, без логотипов.
"""
Здесь нет привязки к конкретному объекту. Поэтому блок можно добавить к описанию десяти разных сцен. Если затем понадобится брендовая картинка нейросеть должна создавать её в том же визуальном окружении, достаточно заменить объект, сохранив основные правила.
Полезно также ограничить количество стилевых характеристик. Если в каждом запросе одновременно указать двадцать эпитетов, часть из них будет конфликтовать между собой. Лучше иметь 5–10 устойчивых признаков, которые действительно видны на изображении: тип света, диапазон цветов, фон, характер материалов, положение объекта и уровень детализации.
Отдельно стоит зафиксировать композицию. Формулировка «объект по центру, много свободного пространства вокруг» задаёт более конкретное правило, чем просто «минималистичная композиция». Если серия предназначена для карточек с последующим добавлением текста, можно сразу оставить свободную область с одной стороны.

Палитра и свет: слова, которые работают
Цветовая палитра — один из самых заметных признаков постоянства. Фраза «приятные цвета» практически не задаёт измеримого ограничения. Гораздо полезнее перечислить несколько базовых оттенков и определить их характер: тёплые или холодные, насыщенные или приглушённые, контрастные или близкие друг к другу.
Например, вместо «светлая пастельная палитра» можно использовать «молочный фон, бежевые поверхности, приглушённый оливковый как акцент, графитовые детали, без ярких неоновых цветов». Такая конструкция одновременно задаёт основные цвета и ограничивает нежелательные отклонения.
Свет желательно описывать тем же способом. Можно зафиксировать направление, жёсткость и температуру: «мягкий рассеянный свет слева, слабые естественные тени, нейтральная цветовая температура». Для всей серии эта строка остаётся неизменной.
Особенно важно не менять случайно слова «студийный», «дневной», «кинематографический» и «солнечный». Они описывают разные визуальные ситуации. Если первая половина серии строится на мягком окне, а вторая на контрастном студийном источнике, одинаковый стиль картинок сохранить будет трудно даже при одинаковой палитре.
Хороший стилевой блок может выглядеть так:
Палитра: молочный #F3EFE7, тёплый бежевый, приглушённый
оливковый, графитовый; без ярких красных, синих и неоновых акцентов.
Свет: мягкий рассеянный дневной свет слева, плавный переход
в тень, умеренный контраст, без жёстких бликов.
Фон: матовый, нейтральный, без заметной фактуры.
HEX-коды не следует считать гарантией точного воспроизведения каждого пикселя. Это скорее дополнительный ориентир для палитры. На практике полезнее сочетать конкретные названия цветов с описанием их роли: какой оттенок занимает фон, какой используется как акцент и какие цвета исключены.
| Параметр | Слабая формулировка | Более конкретная формулировка |
|---|---|---|
| Палитра | Красивые спокойные цвета | Молочный, бежевый, графитовый, приглушённый оливковый |
| Свет | Хорошее освещение | Мягкий рассеянный дневной свет слева, слабые тени |
| Фон | Красивый фон | Матовый нейтральный фон без заметного рисунка |
| Композиция | Минимализм | Один главный объект, центр кадра, свободное пространство вокруг |
Запреты: что нужно исключать всегда
Постоянство определяется не только тем, что вы просите добавить, но и тем, что запрещаете. Если в одном запросе появился глянцевый рекламный фон, в другом — лишний текст, а в третьем — декоративные элементы, общая визуальная система быстро распадается.
Поэтому в стилевой блок имеет смысл включить постоянный список нежелательных элементов. Он должен быть коротким и проверяемым. Например: «без текста, без водяных знаков, без логотипов, без рамок, без неоновых цветов, без лишних предметов на переднем плане».
Запреты особенно полезны, если серия предназначена для коммерческого контента. Лишний объект на фоне может быть не критичен для одной картинки, но при публикации серии становится заметным различием. То же касается случайных надписей и декоративных элементов, которые не предусмотрены дизайном.
Есть и другой тип запретов — композиционный. Если главный объект всегда должен занимать примерно одну область кадра, это стоит сформулировать напрямую: «один объект, не обрезать края объекта, без второго главного предмета». Для вертикальной серии можно дополнительно закрепить расположение свободного пространства.
Не стоит превращать блок запретов в страницу текста. Длинный список из десятков отрицаний усложняет поддержку промпта. Начните с пяти–семи признаков, которые действительно нарушают ваш визуальный стандарт, затем добавляйте новые только после проверки серии.

Стилевой блок как переменная в коде
Когда изображений становится больше нескольких штук, копировать стиль вручную в каждый запрос неудобно. Любая правка превращается в поиск десятков строк. Поэтому постоянную часть описания лучше хранить в одной переменной.
API принимает запрос на операцию через POST /generate. Базовый адрес API — https://genius-bot.ru/wp-json/genius/v1, авторизация передаётся заголовком Authorization: Bearer <ключ>. Для генерации изображения используется операция с типом image; её стоимость по указанной тарификации составляет 9 ₽ за запуск.
Минимальный рабочий пример на Python с библиотекой requests может выглядеть так:
import requests
API_URL = "https://genius-bot.ru/wp-json/genius/v1"
API_KEY = "ВАШ_КЛЮЧ"
STYLE_BLOCK = """
Фотореалистичная предметная съёмка для каталога.
Один главный объект, спокойная минималистичная композиция.
Мягкий рассеянный дневной свет слева, естественные тени.
Палитра: молочный, бежевый, графитовый, приглушённый оливковый.
Матовые нейтральные поверхности.
Без текста, логотипов, водяных знаков и неоновых цветов.
"""
prompt = STYLE_BLOCK + """
Объект: керамическая чашка матового бежевого цвета
на светлой каменной поверхности.
"""
response = requests.post(
f"{API_URL}/generate",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"operation": "image",
"prompt": prompt,
},
timeout=60,
)
response.raise_for_status()
print(response.json())
Конкретные поля тела запроса следует сверять с актуальной схемой операции из списка сервисов. Сам список доступен через GET /services; там же находятся операции и цены. После запуска задача имеет идентификатор, а её состояние и результат можно получить через GET /tasks/{id}.
Тот же принцип удобно использовать с curl. Здесь переменная PROMPT содержит и постоянную часть, и описание конкретной сцены:
API_KEY="ВАШ_КЛЮЧ"
PROMPT='
Фотореалистичная предметная съёмка для каталога.
Один главный объект, спокойная минималистичная композиция.
Мягкий рассеянный дневной свет слева, естественные тени.
Палитра: молочный, бежевый, графитовый, приглушённый оливковый.
Матовые нейтральные поверхности.
Без текста, логотипов, водяных знаков и неоновых цветов.
Объект: стеклянный флакон с кремом на бежевой поверхности.
'
curl -X POST \
"https://genius-bot.ru/wp-json/genius/v1/generate" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d "{\"operation\":\"image\",\"prompt\":$(printf '%s' "$PROMPT" | python -c 'import json,sys; print(json.dumps(sys.stdin.read()))')}"
Для автоматизации серии полезно разделить код на две сущности: STYLE_BLOCK и список объектов. Тогда изменение палитры или света происходит в одном месте. Это также снижает риск ситуации, когда в девятом запросе случайно осталась старая формулировка.
Если серия большая, учитывайте ограничение частоты: не более 60 запросов в минуту на один ключ. Поэтому цикл из сотен генераций не стоит запускать без контроля скорости. Для асинхронной обработки можно также использовать необязательный параметр callback_url: после готовности задачи сервис отправляет POST на указанный адрес.
Проверка на серии из десяти картинок
До запуска большой партии я бы не проверял стиль на одной картинке. Одна удачная генерация ничего не говорит о стабильности правил. Практический тест — десять разных объектов с одним и тем же стилевым блоком.
Составьте список, в котором объекты отличаются по форме, цвету и фактуре. Например: чашка, флакон, книга, наушники, свеча, часы, растение, упаковка, очки и блокнот. Для каждого объекта оставьте неизменными палитру, свет, фон, композиционные ограничения и запреты.
После генерации не нужно оценивать изображения только по принципу «нравится или не нравится». Сделайте небольшой чек-лист. Например, пять критериев по одному баллу: совпадает ли палитра, совпадает ли свет, сохраняется ли фон, выдерживается ли композиция, отсутствуют ли запрещённые элементы.
| Проверка | Что смотреть |
|---|---|
| Палитра | Основные оттенки серии остаются в заданном диапазоне |
| Свет | Направление и мягкость освещения не меняются без причины |
| Фон | Не появляются случайные интерьеры, узоры или яркие детали |
| Композиция | Главный объект занимает ожидаемую область кадра |
| Запреты | Нет текста, логотипов и других исключённых элементов |
Если семь изображений выглядят согласованно, а три резко отличаются, не нужно сразу переписывать весь промпт. Посмотрите, какое именно правило нарушено. Если отклонение связано со светом, усиливайте строку о свете; если появляются дополнительные предметы, уточняйте композиционный запрет.
Полезно сохранять исходные описания вместе с результатами. Тогда при изменении стилевого блока можно повторить тот же тест и сравнить две версии на одинаковом наборе объектов. Это намного информативнее, чем каждый раз придумывать новые сцены.
Для десяти тестовых запусков операции image при цене 9 ₽ за запуск стоимость самих генераций составит 90 ₽. Такая небольшая серия позволяет проверить блок до того, как он будет использован в сотнях запросов. При первом выпуске ключа на баланс начисляется 50 ₽ для пробы, поэтому размер тестовой серии стоит учитывать заранее.

Что делать, когда стиль надоел
Стабильность не означает, что стилевой блок нужно сохранять навсегда. Если визуальная система перестала подходить проекту, меняйте её как версию, а не случайными правками внутри отдельных запросов.
Например, вместо изменения пяти строк одновременно создайте STYLE_V2. В первой версии может быть молочно-бежевая палитра и мягкий дневной свет, а во второй — более холодная палитра и чуть более контрастное освещение. После этого прогоните те же десять объектов через новую версию.
Такой подход сохраняет историю решений. Если новая версия окажется неудачной, можно вернуться к старой без восстановления промпта по памяти. Для проекта с большим количеством изображений это важнее, чем кажется: через несколько недель трудно вспомнить, какая именно формулировка изменила результат.
Ещё один вариант — менять только один слой. Например, оставить композицию и свет, но заменить палитру. Или сохранить цвета, но перейти от предметной фотографии к более иллюстративной подаче. Чем меньше параметров меняется за один тест, тем легче понять причину визуального сдвига.
При необходимости изображения можно не только генерировать с нуля. В API есть отдельная операция «Изменить фото по описанию» (image-edit) стоимостью 35 ₽ за запуск, а загрузка файла выполняется через POST /uploads. Это позволяет выстроить отдельный процесс для работы с исходными изображениями, если задача требует редактирования, а не новой генерации.
| Операция | Цена за запуск | Когда относится к визуальной серии |
|---|---|---|
Картинка по описанию (image) |
9 ₽ | Создание новой серии |
Изменить фото по описанию (image-edit) |
35 ₽ | Редактирование исходного изображения |
Увеличить качество фото (upscale) |
50 ₽ | Подготовка результата после генерации |
Оплата в API идёт за запуск, без абонентской платы и минимального платежа. Для чата предусмотрена совместимость с форматом OpenAI: доступны POST /chat/completions и GET /models, а тариф указан отдельно — 40 ₽ за миллион токенов запроса и 400 ₽ за миллион токенов ответа. Для самой задачи генерации изображений достаточно ориентироваться на стоимость выбранной операции.
Главная практическая идея здесь — не искать одно магическое слово для стиля. Единый вид получается из повторяемого набора конкретных правил: палитра, свет, фон, композиция и запреты. Сначала этот набор проверяется на десяти разных сценах, затем превращается в постоянную переменную в коде и только после этого используется для большой серии.
Частые вопросы
Нужно ли полностью копировать один и тот же промпт для каждой картинки?
Нет. Удобнее вынести постоянную часть в переменную, например STYLE_BLOCK, а к ней добавлять описание конкретного объекта. Так изменения стиля делаются в одном месте.
Сколько признаков стоит включать в стилевой блок?
Жёсткого числа нет. Для практического теста удобно начать с нескольких конкретных признаков: палитры, света, фона, композиции и списка запретов. Если блок становится слишком длинным и содержит противоречивые требования, его лучше сократить.
Почему одной удачной картинки недостаточно для проверки стиля?
Одна генерация показывает только один результат. Серия из десяти разных объектов позволяет увидеть, сохраняются ли цветовая схема, свет, фон и композиция при изменении содержимого сцены.
Можно ли менять стиль после запуска проекта?
Да. Практичнее сохранить старый блок как отдельную версию и создать новый, например STYLE_V2. После этого можно прогнать одинаковый набор тестовых сцен и сравнить версии.
Где посмотреть доступные операции и цены?
Для этого предусмотрен маршрут GET /services. В справке сервиса перечислены операции и их цены, включая генерацию изображения за 9 ₽ за запуск.
Где получить ключ для API?
Ключ выдаётся после входа в личном разделе API и показывается один раз. В запросах он передаётся как Authorization: Bearer <ключ>.
