От автора: Глубокий разбор технических причин, по которым Nano Banana Pro не поддерживает параметр seed, а также практические альтернативы для тех случаев, когда вы довольны результатом генерации и хотите массово его повторить.
Реальный отзыв пользователя: «Я отредактировал изображение, и результат мне очень понравился. Теперь я хочу пакетно обработать еще несколько картинок с точно таким же эффектом. Как это сделать? Ведь каждый раз получается по-разному». Это типичная «боль» при использовании Nano Banana Pro для пакетной генерации «изображение в изображение» (img2img). Даже если вы используете удачный вариант в качестве референса, результат всё равно будет отличаться. Причина проста: официально Nano Banana Pro не поддерживает параметр seed, поэтому каждая генерация — это абсолютно новый процесс случайного вывода (inference).
Основная ценность: В этой статье мы не будем ходить вокруг да около. Сначала разберем, почему нет сида и почему одного референса недостаточно, а затем предложим 5 эффективных альтернатив, которые помогут вам максимально точно воспроизвести понравившийся эффект даже без параметра seed.

Давайте разберемся: почему у Nano Banana Pro нет параметра Seed?
Обзор официальных параметров
Nano Banana Pro (gemini-3-pro-image-preview) в конфигурации generationConfig поддерживает следующие параметры:
| Параметр | Описание | Пример значения |
|---|---|---|
responseModalities |
Тип вывода | ["IMAGE"] |
resolution |
Разрешение изображения | "1K" / "2K" / "4K" |
aspectRatio |
Соотношение сторон | "16:9" / "1:1" / "2:3" |
candidateCount |
Количество вариантов за раз | 1 (для генерации изображений всегда 1) |
temperature |
Случайность текстовой части (не влияет на картинку) | 1.0 (рекомендуется по умолчанию) |
Параметр seed: отсутствует в списке, официально не поддерживается.
Если попытаться передать seed в коде, это приведет к ошибке:
# ❌ Это вызовет ошибку: Unknown field 'seed' in GenerationConfig
response = model.generate_content(
prompt,
generation_config=genai.GenerationConfig(
response_modalities=["IMAGE"],
seed=42 # ← Ошибка! Официально этот параметр не поддерживается
)
)
Gemini Image API vs Imagen API: две разные службы
Многие находят в документации Google параметр seed, но он относится к Imagen API (сервис генерации изображений в Vertex AI), а не к Nano Banana Pro:
| Сравнение | Nano Banana Pro | Imagen API (Vertex AI) |
|---|---|---|
| ID модели | gemini-3-pro-image-preview |
imagen-3.0-generate-002 |
| Поддержка Seed | ❌ Нет | ✅ Есть (параметр seed) |
| Эндпоинт API | Google Generative AI | Vertex AI |
| SDK для вызова | google-generativeai |
google-cloud-aiplatform |
| Качество изображения | Топовый реализм, отличный рендеринг текста | Высокое качество, разнообразие стилей |
| Цена (APIYI) | $0.05 / шт. | Отдельный прайс |
Вывод: если вам позарез нужна воспроизводимость через seed, стоит переключиться на Imagen API, а не пытаться выжать несуществующие параметры из Nano Banana Pro. Сторонние провайдеры (например, APIYI) обычно не поддерживают Imagen API — этот интерфейс доступен только через официальный ключ.
Почему референсные изображения тоже не панацея?
Первая мысль — загрузить удачный результат как референс и попросить модель его доработать. Но на деле эффект получается «так себе». И вот почему:
Nano Banana Pro воспринимает референс как «ориентир по стилю», а не как «шаблон для копирования». Когда вы загружаете картинку и просите «сделать её чуть темнее», модель:
- Анализирует общий стиль, композицию и содержание референса.
- Заново интерпретирует команду «сделать чуть темнее».
- Генерирует с нуля новую картинку, соответствующую промпту.
В этом процессе каждый раз присутствует элемент случайности. Поэтому «чуть темнее» в первый раз может оказаться идеальным снижением яркости на 15%, во второй — на 50%, а в третий — вообще выдать другой стиль.

5 альтернативных подходов: от самых простых до радикальных
Вариант 1: Точная количественная оценка в промптах (самый быстрый эффект)
Проблема: «Сделай картинку чуть темнее» → результат то слишком темный, то слишком светлый.
Корень проблемы в том, что «чуть-чуть» — понятие растяжимое. Nano Banana Pro не может гарантировать, что каждый раз будет понимать это «чуть-чуть» одинаково. Решение — заменить расплывчатые описания конкретными числами:
❌ Размытый промпт:
"Make this image slightly darker"
"Сделай картинку чуть темнее"
✅ Количественный промпт:
"Apply a subtle darkening effect equivalent to reducing brightness by
approximately 15-20%. The image should feel slightly moodier but all
details must remain clearly visible. Do NOT go dark. The result should
be close to: brightness 85% of original, contrast unchanged."
Примеры количественных формулировок для частых правок:
Регулировка яркости:
"brightness at 85% of original" (уменьшить на 15%)
"increase brightness by 10%, keep contrast" (осветлить на 10%)
Настройка тона:
"add a very subtle warm orange tint, color shift about 10%"
"slight cool blue cast, saturation unchanged"
Интенсивность стиля:
"apply film grain texture at 20% opacity, barely noticeable"
"add very subtle vignette at corners, 15% strength"
💡 Ключевой прием: используйте в промптах ограничители степени вроде "approximately X%", "not exceeding Y%", "subtle/barely noticeable". Это четко указывает модели границы изменений.
Вариант 2: Комбинация удачного результата и точного промпта (рекомендуемый выбор)
Просто загружать референс — лотерея. Но связка «референс + количественный промпт» работает гораздо стабильнее:
import google.generativeai as genai
import base64
genai.configure(
api_key="YOUR_APIYI_KEY",
client_options={"api_endpoint": "vip.apiyi.com"} # APIYI $0.05 за запрос
)
model = genai.GenerativeModel("gemini-3-pro-image-preview")
def apply_consistent_effect(
source_image_path: str, # Новое изображение для обработки
approved_result_path: str, # Первый удачный результат (как эталон стиля)
effect_description: str, # Точное количественное описание эффекта
output_path: str
) -> str:
"""
Воспроизводит удачный эффект на новом изображении,
используя двойную привязку: референс + количественный промпт.
"""
# Читаем два изображения
with open(source_image_path, "rb") as f:
source_data = base64.b64encode(f.read()).decode()
with open(approved_result_path, "rb") as f:
approved_data = base64.b64encode(f.read()).decode()
prompt = f"""
I have two reference images:
- Image 1 (source): The new image I want to process
- Image 2 (approved result): A previous edit I was very happy with
Please apply the SAME effect from Image 2 to Image 1.
The effect is: {effect_description}
Critical instructions:
- The degree of change should match Image 2 EXACTLY
- Do not over-apply the effect
- Keep all other image properties unchanged
- If unsure about intensity, err on the side of LESS change
"""
response = model.generate_content(
[
{"inline_data": {"mime_type": "image/jpeg", "data": source_data}},
{"inline_data": {"mime_type": "image/jpeg", "data": approved_data}},
prompt
],
generation_config=genai.GenerationConfig(
response_modalities=["IMAGE"],
resolution="4K",
aspect_ratio="1:1"
)
)
for part in response.candidates[0].content.parts:
if part.inline_data and part.inline_data.mime_type.startswith("image/"):
with open(output_path, "wb") as f:
f.write(base64.b64decode(part.inline_data.data))
return output_path
return None
# Пример использования
result = apply_consistent_effect(
source_image_path="new_product_photo.jpg",
approved_result_path="approved_dark_edit.jpg",
effect_description="subtle darkening, brightness reduced by approximately 15-20%, "
"image should be slightly moodier but all details clearly visible",
output_path="output_consistent.png"
)
# Каждый запрос $0.05 (APIYI apiyi.com)
🚀 Совет из практики: этот метод превращает консистентность из «полного рандома» в «высокую вероятность успеха», но это все еще не 100%. Рекомендую генерировать по 2-3 варианта для каждой картинки и выбирать лучший вручную. Низкая стоимость APIYI ($0.05 за запрос) делает такие пробы вполне доступными.
Вариант 3: Множественная выборка + пакетная фильтрация (для больших объемов)
Самый прагматичный подход на данный момент: генерировать 3-5 вариантов для каждого изображения и выбирать наиболее подходящий (вручную или программно).
import asyncio
import base64
import os
import google.generativeai as genai
genai.configure(
api_key="YOUR_APIYI_KEY",
client_options={"api_endpoint": "vip.apiyi.com"} # APIYI $0.05 за запрос
)
model = genai.GenerativeModel("gemini-3-pro-image-preview")
EFFECT_PROMPT = """
Apply subtle darkening effect:
- Brightness: approximately 85% of original (reduce by ~15%)
- Mood: slightly darker, more atmospheric
- Details: all elements must remain clearly visible
- Do NOT: make it too dark, change colors dramatically, lose details
This is a subtle, refined adjustment - less is more.
"""
async def generate_variants(image_path: str, n_variants: int = 3) -> list:
"""Генерирует n вариантов для одного изображения для последующего выбора"""
with open(image_path, "rb") as f:
img_data = base64.b64encode(f.read()).decode()
async def one_call(i: int) -> str:
output = image_path.replace(".jpg", f"_v{i+1}.png")
loop = asyncio.get_event_loop()
try:
response = await loop.run_in_executor(None, lambda: model.generate_content(
[{"inline_data": {"mime_type": "image/jpeg", "data": img_data}},
EFFECT_PROMPT],
generation_config=genai.GenerationConfig(
response_modalities=["IMAGE"],
resolution="4K"
)
))
for part in response.candidates[0].content.parts:
if part.inline_data:
with open(output, "wb") as f:
f.write(base64.b64decode(part.inline_data.data))
return output
except Exception as e:
print(f" Вариант {i+1} не удался: {e}")
return None
# Параллельная генерация нескольких вариантов
results = await asyncio.gather(*[one_call(i) for i in range(n_variants)])
return [r for r in results if r]
async def batch_process(image_list: list, n_variants: int = 3):
"""Пакетная обработка: для каждого фото создаем несколько вариантов"""
for img_path in image_list:
print(f"\nОбработка: {img_path}")
variants = await generate_variants(img_path, n_variants)
cost = len(variants) * 0.05
print(f" Создано {len(variants)} вариантов, стоимость ${cost:.2f} (APIYI)")
print(f" Файлы: {variants}")
print(f" → Пожалуйста, выберите лучший вариант вручную")
# Пример: обрабатываем 5 фото, по 3 варианта на каждое
images = ["photo_01.jpg", "photo_02.jpg", "photo_03.jpg", "photo_04.jpg", "photo_05.jpg"]
asyncio.run(batch_process(images, n_variants=3))
# 5 фото × 3 варианта = 15 вызовов, общая стоимость на APIYI $0.75
Оценка затрат:
| Объем | Вариантов на фото | Всего вызовов | Стоимость APIYI |
|---|---|---|---|
| 10 фото | по 3 шт. | 30 | $1.50 |
| 50 фото | по 3 шт. | 150 | $7.50 |
| 100 фото | по 2 шт. | 200 | $10.00 |
Вариант 4: Переход на модели с поддержкой Seed (радикальное решение)
Если вашему бизнесу критически важна точная воспроизводимость, лучше всего перейти на модели, которые нативно поддерживают параметр seed:
Imagen API (Vertex AI) — тоже от Google, но с поддержкой seed:
from google.cloud import aiplatform
from vertexai.preview.vision_models import ImageGenerationModel
# Imagen API поддерживает параметр seed
model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")
response = model.generate_images(
prompt="your prompt here",
seed=42, # ✅ Официальная поддержка!
number_of_images=1,
add_watermark=False # При использовании seed водяной знак нужно отключить
)
# Одинаковый seed + одинаковый промпт → одинаковый результат (высокая повторяемость)
Stable Diffusion / Flux — полноценная экосистема seed:
# Доступ к Flux через APIYI (apiyi.com) с поддержкой seed
import requests
response = requests.post(
"https://vip.apiyi.com/v1/images/generations",
headers={"Authorization": "Bearer YOUR_APIYI_KEY"},
json={
"model": "flux-dev", # или flux-schnell
"prompt": "your prompt",
"seed": 12345, # ✅ Полная поддержка seed
"width": 1024,
"height": 1024
}
)
# Фиксация seed → пакетная генерация абсолютно идентичных базовых изображений
Вариант 5: Постобработка изображений (максимальная точность и стабильность)
Если ваша задача — массово применить фиксированную коррекцию яркости или тона (например, затемнить всё на 15%), то ИИ здесь вообще не лучший выбор. Правильный инструмент — классическая постобработка:
from PIL import Image, ImageEnhance
import os
def batch_darken(input_dir: str, output_dir: str, brightness_factor: float = 0.85):
"""
Точная пакетная регулировка яркости.
brightness_factor: 0.85 = уменьшение на 15%. Полная повторяемость, ноль рандома.
"""
os.makedirs(output_dir, exist_ok=True)
files = [f for f in os.listdir(input_dir) if f.lower().endswith(('.jpg', '.png', '.webp'))]
for filename in files:
img = Image.open(os.path.join(input_dir, filename))
enhancer = ImageEnhance.Brightness(img)
# Точный контроль яркости, результат всегда одинаков
darkened = enhancer.enhance(brightness_factor)
darkened.save(os.path.join(output_dir, filename))
print(f"✓ {filename} → яркость {brightness_factor*100:.0f}%")
# Пакетная обработка: ноль затрат на API, 100% повторяемость
batch_darken("input_images/", "darkened_output/", brightness_factor=0.85)
Сравнение применимости:
| Тип правки | Рекомендуемый инструмент | Почему? |
|---|---|---|
| Яркость / Контраст / Насыщенность | PIL / Photoshop (Action) | Точно, повторяемо, бесплатно |
| Цветовые фильтры (тепло/холод) | PIL / LUT-фильтры | 100% консистентность |
| Сложный перенос стиля (замена фона/объекта) | Nano Banana Pro | В этом истинная ценность ИИ |
| Точное воспроизведение + креатив | Imagen API (с seed) | Баланс качества и стабильности |
🎯 Честный совет: если вы просто хотите массово «сделать фото на 15% темнее», используйте
ImageEnhance.Brightnessиз библиотеки PIL. Это бесплатно, на 100% предсказуемо и делается одной строчкой кода. Ценность генеративного ИИ — в понимании сложного контента и творчестве, а не в простой параметрической коррекции.
Сравнение поддержки Seed в популярных ИИ-моделях генерации изображений
| Модель | Поддержка Seed | Стабильность воспроизведения | Примечания |
|---|---|---|---|
| Nano Banana Pro | ❌ Не поддерживается | Низкая, каждый раз рандом | Можно частично улучшить с помощью Reference Image + промпт |
| Imagen API | ✅ Официальная поддержка | Высокая | Воспроизводимо при одинаковых seed и промпте |
| Stable Diffusion | ✅ Полная поддержка | Очень высокая | Open-source экосистема, self-hosted или облако |
| Flux Dev/Pro | ✅ Поддерживается | Высокая | Высокий реализм, доступно через API |
| Midjourney | ✅ Параметр --seed |
Средняя (на уровне референса) | При одинаковом seed стиль похож, но детали не идентичны |
| DALL-E 3 | ❌ Не поддерживается | Низкая | Те же ограничения, что и у Nano Banana Pro |
💡 Совет по платформе: Через APIYI (apiyi.com) можно получить единый доступ к Nano Banana Pro, Flux, Stable Diffusion и другим моделям. Используйте один API-ключ для переключения между моделями, гибко выбирая те, что поддерживают seed, когда это необходимо.
Часто задаваемые вопросы
Q1: Можно ли как-то «взломать» Nano Banana Pro, чтобы получить эффект seed?
Настоящего способа «взлома» не существует. Некоторые сторонние платформы (например, fal.ai) добавляют параметр seed в свою обертку API, но это лишь контролирует случайность на уровне их платформы. Это не то же самое, что нативный seed в генерации изображений Google Gemini — на практике влияние на воспроизводимость финального изображения крайне ограничено.
Самая близкая комбинация для получения «эффекта seed» — это: точный квантифицированный промпт + использование удачного результата в качестве референса + выборка из нескольких вариантов. Такое сочетание позволяет поднять консистентность с полной случайности до вероятности попадания в 60-70%, но это никогда не будет 100%.
Если в вашем рабочем процессе воспроизводимость является жестким требованием, рекомендуем переключиться на Imagen API. Через платформу APIYI (apiyi.com) можно одновременно подключить несколько сервисов для сравнительного тестирования.
Q2: Я хочу массово воспроизвести эффект «чуть темнее», какой способ самый быстрый?
Все зависит от природы этой «темноты»:
- Если это просто настройка яркости/экспозиции: используйте пакетную обработку на Python с библиотекой PIL:
ImageEnhance.Brightness(img).enhance(0.85). Это 10 строк кода, нулевая стоимость и 100% идентичный результат. - Если это касается стиля, атмосферы или генерации контента ИИ (например, «сделать тона темнее и одновременно придать фону кинематографичность»): используйте второй вариант (референс + квантифицированный промпт). Через APIYI (apiyi.com) можно делать массовые вызовы по цене $0.05 за запрос, генерировать 2-3 варианта и вручную выбирать наиболее подходящий.
Q3: Будет ли Nano Banana Pro поддерживать параметр seed в будущем?
На данный момент официальных анонсов нет. Судя по продуктовой линейке Google, Imagen API — это сервис, специально предназначенный для точной и контролируемой генерации изображений (включая seed), в то время как генерация в Gemini больше ориентирована на «высококачественный креатив». У них разное позиционирование, поэтому вероятность появления seed в Nano Banana Pro существует, но она неочевидна.
Вы можете следить за обновлениями в официальном блоге Google AI (blog.google/technology/google-deepmind) и в чейнджлоге Gemini API (ai.google.dev/gemini-api/docs/changelog). Если появятся обновления, мы первыми опубликуем соответствующие инструкции на APIYI (apiyi.com).
Итоги
Нужно признать факт: Nano Banana Pro не поддерживает параметр seed. В зависимости от ситуации выбирайте одну из 5 альтернатив:
- Точный квантифицированный промпт: замените размытые описания вроде «чуть-чуть» конкретными числами — результат будет виден сразу.
- Референс + квантифицированный промпт: подаете два изображения (исходник + удачный результат) и точно описываете степень эффекта, который нужно воспроизвести.
- Выборка из нескольких вариантов: генерируйте по 2-3 варианта на каждый запрос. На APIYI это стоит всего $0.05 за раз, так что можно смело выбирать лучший вариант вручную.
- Переход на Imagen API / Flux: если для бизнеса критически важна воспроизводимость, используйте модели, которые нативно поддерживают seed.
- Постобработка в PIL: если нужно просто подправить яркость или тон, ИИ — не лучший инструмент. PIL сделает это точнее.
Универсального решения нет, выбирайте то, что подходит под вашу задачу. Низкая стоимость генерации ($0.05 за запрос) на платформе APIYI (apiyi.com) делает стратегию «проб и ошибок» вполне жизнеспособной, в то время как при официальной цене ($0.24) это обошлось бы в 5 раз дороже.
Справочные материалы
-
Документация по параметрам генерации изображений Google Gemini API
- Ссылка:
ai.google.dev/gemini-api/docs/image-generation - Описание: Список официально поддерживаемых параметров generationConfig, подтверждено отсутствие поля seed.
- Ссылка:
-
Документация Vertex AI Imagen API (с поддержкой seed)
- Ссылка:
cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images - Описание: Способы использования и ограничения параметра seed в Imagen API.
- Ссылка:
-
Gemini Python SDK GitHub Issue #536
- Ссылка:
github.com/google-gemini/deprecated-generative-ai-python/issues/536 - Описание: Обсуждение в сообществе, подтверждающее отсутствие поддержки параметра seed при генерации изображений в Gemini.
- Ссылка:
-
Интеграция нескольких моделей на платформе APIYI
- Ссылка:
docs.apiyi.com - Описание: Единая инструкция по подключению Nano Banana Pro / Imagen / Flux.
- Ссылка:
Автор: Техническая команда
Техническое обсуждение: Столкнулись с похожими проблемами консистентности при массовой генерации? Приходите обсуждать в комментарии. Больше практического опыта по генерации изображений с помощью ИИ можно найти в техническом сообществе APIYI на apiyi.com.
