gemini-3-pro-image) по текстовой инструкции меняет деталь, переводит фотографию в другой стиль или собирает из нескольких изображений новое. Каждая правка стоит одну фиксированную цену за вызов при любом размере вывода.
Генерация изображений только по тексту описана на странице Nano Banana Pro.
Подготовка
1
Создайте API-ключ
В разделе Управление токенами откройте диалог создания токена (创建令牌), в поле Режим оплаты (计费模式) выберите «сначала по использованию» (按量优先, рекомендуется) или «оплата за вызов» (按次计费) и нажмите Создать (创建). У Nano Banana Pro есть только цена за вызов, поэтому ключ с режимом «оплата по использованию» (按量计费) её вызвать не может; когда запрос тарифицируется, описано в правилах оплаты.

2
Задайте ключ и установите зависимости
3
Добавьте функцию сохранения для cURL
Для примеров с cURL нужен Если в ответе нет изображения, функция выводит поля
jq. Определите эту shell-функцию: она сохраняет последнее изображение из нативного ответа Gemini (если вместе с результатом пришли промежуточные изображения, финальное — последнее) с расширением, которое соответствует mimeType:error, promptFeedback и finishReason.Правка локального изображения
Отправьте запрос наPOST https://api.laozhang.ai/v1beta/models/gemini-3-pro-image:generateContent. Поставьте в parts сначала инструкцию, а за ней изображения. Каждый локальный файл передаётся частью inlineData с mimeType, соответствующим файлу.
- Python
- cURL
Сохраните скрипт как Добавьте шляпу коту на фотографии, вывод 2K:
nano_banana_pro_edit.py. Он отправляет инструкцию с 1–14 локальными изображениями и сохраняет все изображения из ответа:aspectRatio, поэтому результат по умолчанию Google повторяет размер входного изображения. Чтобы изменить форму, добавьте aspectRatio (или --ratio); размеры в пикселях для каждого соотношения и размера приведены в разделе «Размеры вывода» на странице Nano Banana Pro. Правка в 4K занимает больше времени, чем в 1K, поэтому оставьте в клиенте большой таймаут; в примерах он равен 300 секундам.
Объединение референсных изображений
Перечислите до 14 файлов после инструкции в том порядке, в котором вы на них ссылаетесь, и назовите в промпте роль каждого изображения:- 6 изображений объектов, которые должны точно появиться в результате, например товары или реквизит
- 5 изображений персонажей, которые сохраняют внешность людей в серии
- 3 изображений стиля, которые задают общий вид, например палитру или манеру мазка
Правка изображения по публичному URL
Нативный маршрут Gemini может принять изображение и по URL — частьюfileData вместо Base64:
fileUri публичным HTTPS-адресом своего изображения и укажите соответствующий mimeType. Изображение скачивается по этому адресу во время запроса, поэтому оно должно открываться без входа, cookie и проверок на ботов. Если скачать его не удаётся, загрузите файл к себе и отправьте его как inlineData.
- Переходите на URL, если запрос превысит 20 МБ. Всё тело запроса должно быть меньше 20 МБ; изображения в
inlineDataв сумме должны занимать около 15 МБ или меньше, поэтому более крупные передавайте вfileDataили сначала уменьшайте. robots.txtсайта не должен запрещать краулерам путь к изображению, а подписанный URL должен оставаться действительным не меньше 30 минут с учётом очереди и повторов.- Части
fileDataиinlineDataмогут находиться в одном массивеpartsв порядке референсов. Полные условия описаны в разделе «Большие изображения и URL» обзора Nano Banana.
OpenAI-совместимый маршрут
Если приложение уже использует OpenAI SDK, отправляйте правки через chat completions. Поместите инструкцию и изображения в одно сообщение пользователя частямиimage_url: локальный файл — как data URL, либо публичный HTTPS-адрес.
На этом маршруте нет настроек соотношения сторон и размера; для 2K, 4K или фиксированного соотношения используйте нативный маршрут Gemini. Изображение приходит как data URL в Base64 внутри message.content. Сохраните скрипт как nano_banana_pro_chat_edit.py:
Обработка ответа
- Нативный формат Gemini: каждое изображение — это часть
inlineDataвcandidates[].content.parts[]сmimeTypeи даннымиdataв Base64.- Пропускайте части с пометкой
thought: true. Pro рассуждает перед отрисовкой, и при сложной правке вместе с результатом могут прийти промежуточные изображения; финальное — последнее. - Сохраняйте файл с расширением, соответствующим
mimeType.
- Пропускайте части с пометкой
- Chat completions: изображение — это data URL вида
data:image/png;base64,...внутри текстаchoices[0].message.content. Возьмите формат из префикса, уберите префикс и, если длина не кратна 4, добавьте выравнивание=перед декодированием. - Нет изображения: в нативных ответах проверьте
finishReasonкаждого кандидата иpromptFeedback, если он есть, а в ответах chat — текст ответа. Частые причины — блокировка проверкой безопасности или инструкция, на которую модель ответила только текстом.
Советы по промптам для правки
- Укажите, что должно остаться прежним: лицо, этикетка товара или компоновка. Параметра маски нет, поэтому изменяемую область описывайте словами.
- Ссылайтесь на каждое изображение по порядку и роли, например «куртка со второго изображения».
- Чтобы сохранить лицо или логотип, подробно опишите его и прямо скажите, что его нельзя менять.
- Для текста на изображении возьмите точные слова в кавычки и назовите стиль шрифта.
- Разбивайте сложную правку на шаги и отправляйте каждый сохранённый результат на вход следующего запроса.
Ошибки и оплата
Передавайте значения, которые принимает Pro:- Запрос может вернуть HTTP 200 без изображения, например если проверка безопасности блокирует результат. Правки тарифицируются так же, как генерация, поэтому вызов оплачивается. Проверьте
finishReason(иpromptFeedback, если он есть), затем измените инструкцию или референсы, прежде чем отправлять снова; см. раздел «Как не платить за пустые ответы» в обзоре Nano Banana. - HTTP 401 означает неверный ключ или заголовок
Authorization: Bearer; нативный маршрут Gemini принимает ключ и вx-goog-api-key. Ответы 429 и 5xx повторяйте с нарастающей задержкой, а перед повторной отправкой запроса с таймаутом сверьтесь с журналом вызовов. - Если URL в
fileDataне скачивается, проверьте, что он открывается без входа и чтоrobots.txtего разрешает, или отправьте изображение какinlineData. - HTTP 413 означает слишком большое тело запроса. Передавайте большие изображения по URL или уменьшайте их, чтобы весь запрос был меньше 20 МБ.
- Base64 увеличивает файл примерно на треть, поэтому очень крупные фотографии уменьшайте перед кодированием.
Частые вопросы
Можно ли редактировать через /v1/images/edits?
Нет. Правки Nano Banana Pro идут через нативный эндпоинт Gemini generateContent или OpenAI-совместимый /v1/chat/completions, а не через эндпоинт редактирования Images API.
Можно ли изменить только часть изображения?
Да, описав её словами: поля маски нет. Google называет это семантической маской — назовите элемент, который нужно изменить, и скажите, что всё остальное должно остаться прежним, например: «Замени только синий диван на коричневый кожаный. Остальную комнату, планировку и освещение не меняй». Больше приёмов — в разделе «Советы по промптам для правки».Какой формы будет результат без aspectRatio?
По умолчанию Google повторяет размер входного изображения, поэтому без aspectRatio исходная форма сохраняется; так работают примеры из раздела «Правка локального изображения». Задавайте aspectRatio, только если нужна другая форма, а imageSize оставьте для выбора 1K, 2K или 4K.
Связанные материалы и источники
- Nano Banana Pro — генерация по тексту, размеры вывода по соотношениям сторон и привязка к поиску Google
- Nano Banana 2 — более дешёвая генерация и правка до 4K
- Обзор Nano Banana — сравнение пяти моделей, двух форматов запроса и правил оплаты
- Редактирование Standard — правка через
gemini-2.5-flash-imageи переход с неё - Журнал вызовов — статус и списание по запросу
- Google: Nano Banana image generation — промпты для правки, лимиты референсов и рассуждение
- Google: справочник generateContent — поля
imageConfig - Google: способы передачи файлов — встроенные данные и публичные URL