Перейти к основному содержанию
Nano Banana Pro (gemini-3-pro-image) по текстовой инструкции меняет деталь, переводит фотографию в другой стиль или собирает из нескольких изображений новое. Каждая правка стоит одну фиксированную цену за вызов при любом размере вывода. Генерация изображений только по тексту описана на странице Nano Banana Pro.

Подготовка

1

Создайте API-ключ

В разделе Управление токенами откройте диалог создания токена (创建令牌), в поле Режим оплаты (计费模式) выберите «сначала по использованию» (按量优先, рекомендуется) или «оплата за вызов» (按次计费) и нажмите Создать (创建). У Nano Banana Pro есть только цена за вызов, поэтому ключ с режимом «оплата по использованию» (按量计费) её вызвать не может; когда запрос тарифицируется, описано в правилах оплаты.Диалог создания токена в консоли LaoZhang API с режимом оплаты «оплата за вызов» (按次计费)
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, соответствующим файлу.
Сохраните скрипт как nano_banana_pro_edit.py. Он отправляет инструкцию с 1–14 локальными изображениями и сохраняет все изображения из ответа:
Добавьте шляпу коту на фотографии, вывод 2K:
Оба примера не передают aspectRatio, поэтому результат по умолчанию Google повторяет размер входного изображения. Чтобы изменить форму, добавьте aspectRatio (или --ratio); размеры в пикселях для каждого соотношения и размера приведены в разделе «Размеры вывода» на странице Nano Banana Pro. Правка в 4K занимает больше времени, чем в 1K, поэтому оставьте в клиенте большой таймаут; в примерах он равен 300 секундам.

Объединение референсных изображений

Перечислите до 14 файлов после инструкции в том порядке, в котором вы на них ссылаетесь, и назовите в промпте роль каждого изображения:
Google делит 14 референсов по назначению. В одном запросе Nano Banana Pro принимает не больше:
  • 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.

Связанные материалы и источники