Перейти к основному содержанию

Ошибки Nano Banana Pro и руководство по устранению: исправление всех кодов ошибок (2026)

У каждой ошибки Nano Banana Pro есть решение. Этот справочник охватывает распространённые коды ошибок — от 429 RESOURCE_EXHAUSTED до IMAGE_SAFETY и blockReason OTHER — с 30-секундной диагностикой, готовым кодом для повторных попыток и сравнением лимитов по тарифам.

LaoZhang AI TeamОпубликованоОбновлено 19 мин чтения
Содержание
Диагностика ошибок Nano Banana Pro по коду ответа, квотам и блокировкам безопасности

У каждой ошибки Nano Banana Pro есть решение или понятный следующий шаг. Ошибки лимита запросов (429 RESOURCE_EXHAUSTED) вы можете устранить сами: экспоненциальным бэкоффом, увеличением квоты или очередью запросов. Серверные ошибки (5xx, например 503 при перегрузке) возникают на стороне Google, поэтому повторяйте запрос с бэкоффом и переключайтесь на другую модель. Блокировки по безопасности приходят как finishReason: SAFETY или IMAGE_SAFETY, либо как promptFeedback.blockReason, и Google документирует, какие из них можно настроить через safetySettings. В этом руководстве рассмотрены распространённые коды ошибок, то, что Google действительно документирует о блокировках безопасности, и готовый для продакшена код автоматической обработки сбоев. Последнее обновление — октябрь 2026.

Краткое содержание

  • 429 RESOURCE_EXHAUSTED означает, что достигнут лимит запросов или квота — дождитесь сброса поминутного окна и реализуйте экспоненциальный бэкофф либо увеличьте квоту
  • 503 Service Overloaded означает перегрузку серверов Google — повторяйте с бэкоффом и переключайтесь на более лёгкую модель изображений; фиксированное время восстановления Google не публикует
  • Блокировки SAFETY приходят вместе с safetyRatings; четыре настраиваемые категории (притеснения, язык вражды, сексуально откровенный контент, опасный контент) регулируются порогами safetySettings
  • IMAGE_SAFETY означает, что сгенерированное изображение заблокировано по соображениям безопасности — Google не сообщает, какое правило сработало, поэтому перепишите промпт
  • blockReason: OTHER Google определяет лишь как «неизвестные причины», а встроенная защита от основных видов вреда, например для безопасности детей, блокирует всегда — см. руководство по blockReason OTHER
  • Сначала проверяйте finishReason и promptFeedback.blockReason в ответах API, чтобы понять, с каким видом блокировки вы столкнулись

Быстрая диагностика: определите вашу ошибку за 30 секунд

Схема выбора следующего шага по HTTP-коду и полям ответа Gemini API

Когда генерация изображения в Nano Banana Pro завершается ошибкой, первое, что нужно проверить — это HTTP-код статуса или поле finishReason в ответе API. Эта единственная порция информации точно скажет вам, что пошло не так, и какую категорию исправления нужно применить. Правило простое: ошибки 5xx означают проблему на стороне инфраструктуры Google и вам нужно подождать, ошибки 4xx означают, что нужно исправить что-то в вашем запросе, а блокировки IMAGE_SAFETY означают, что контент вызвал срабатывание фильтра. Подробный пошаговый алгоритм отладки описан в нашем руководстве по пошаговой отладке.

Следующая диагностическая таблица сопоставляет каждое распространённое сообщение об ошибке с его первопричиной и немедленным решением. Сохраните эту таблицу в закладки — вы будете возвращаться к ней неоднократно в процессе разработки.

Что вы видитеКод ошибкиЧто это значитБыстрое решениеВремя восстановления
RESOURCE_EXHAUSTED429Превышен лимит запросов или квотаДождитесь сброса поминутного окна, затем повторитеОколо минуты для поминутных лимитов
The model is overloaded503Серверы Google на пределе мощностиПовторите с бэкоффом, переключитесь на другую модельПо-разному, фиксированное время не публикуется
Internal error encountered500Временный сбой бэкенда GoogleПовторите с бэкоффомВременно, повторите
Bad Gateway502Сбой вышестоящего сервисаПовторите с бэкоффомВременно, повторите
finishReason: SAFETY200Блокировка по одной из категорий безопасности (см. safetyRatings)Настройте пороги safety_settingsМгновенно
finishReason: IMAGE_SAFETY200Сгенерированное изображение заблокировано по безопасности; правило не публикуетсяПерепишите промптМгновенно
generated images may contain unsafe content200Блокировка на уровне изображения, того же семейства, что IMAGE_SAFETYПерепишите промпт с нейтральным объектом и явным стилемМгновенно
PERMISSION_DENIED403Недействительный API-ключ или блокировка по регионуПроверьте учётные данные и регионМгновенно
INVALID_ARGUMENT400Неправильные параметры запросаПроверьте формат входных данныхМгновенно
API key not valid403Просроченный или отозванный ключСоздайте новый ключ в AI StudioМгновенно
Quota exceeded for quota metric429Исчерпана суточная или поминутная квотаПовысьте тариф или дождитесь сброса1 мин — 24 часа
Request payload size exceeds the limit400Изображение или промпт слишком большиеУменьшите размер входных данныхМгновенно

Основное диагностическое правило простое. Если код ошибки начинается с 5 — проблема на стороне Google, и единственный выход — терпение. Если начинается с 4 — что-то не так с вашим запросом, и вы можете исправить это прямо сейчас. А если вы получили ответ с кодом 200 и finishReason, отличным от STOP, — фильтр безопасности обнаружил в вашем контенте что-то, что нужно перефразировать или перенастроить.

Серверные ошибки (5xx): когда проблема на стороне Google

Серверные ошибки — наиболее неприятная категория, потому что вы действительно ничего не можете изменить в своём коде для их немедленного устранения. Когда Nano Banana Pro возвращает код статуса 5xx, проблема кроется в инфраструктуре Google — перегруженных GPU-кластерах, сбоях бэкенд-сервисов или сетевых разрывах между внутренними службами. Ваша задача в таких ситуациях — реализовать корректную деградацию, установить подходящие стратегии повторных попыток и управлять ожиданиями пользователей относительно времени восстановления. Полный справочник по кодам ошибок, включая редкие серверные ошибки, не рассмотренные здесь, представлен в нашей специализированной статье.

503 Service Overloaded — самая распространённая серверная ошибка в периоды высокой нагрузки. Она указывает на то, что конвейер генерации изображений вызванной вами модели достиг предела мощности. Google не публикует ни долю ошибок 503, ни фиксированное время восстановления, поэтому любые проценты и диапазоны минут, которые вы встречаете в других источниках, следует считать анекдотическими. Перегрузка также зависит от модели: более лёгкая модель, например Gemini 3.1 Flash Image (Nano Banana 2), может продолжать отвечать, пока Pro занята, но гарантий нет. Ключевая стратегия — обнаруживать ошибки 503, повторять запрос с экспоненциальным бэкоффом и переключаться на более лёгкую модель, если требуется немедленная генерация изображения, соглашаясь на другой профиль качества ради доступности.

500 Internal Server Error представляет собой временный сбой бэкенда, который отличается от 503 в важном аспекте: ошибки 500 обычно вызваны сбоями при обработке отдельных запросов, а не системными проблемами с мощностью. Это означает, что тот же самый запрос может быть успешно выполнен при следующей попытке. Реализуйте стратегию экспоненциального бэкоффа, начиная с 2 секунд и удваивая интервал до максимума в 64 секунды. Поскольку сбой обычно временный, повторная попытка часто проходит, но ограничивайте число попыток. Если ошибки 500 сохраняются, проверьте панель статуса Google AI на предмет инцидентов — это может быть более масштабный сбой, а не проблема с вашим конкретным запросом. Учтите, что ошибки 500 также могут сигнализировать о проблеме с истечением срока временных URL изображений, если вы пытаетесь получить доступ к сгенерированным изображениям после истечения срока действия их URL.

502 Bad Gateway — самая редкая ошибка из серверной тройки, обычно появляющаяся во время развёртывания сервисов или при потере связи балансировщиков нагрузки Google с бэкенд-серверами Gemini. В отличие от ошибок 503, указывающих на проблемы с мощностью, ошибки 502 свидетельствуют о проблемах маршрутизации инфраструктуры. Эти ошибки обычно временные и не требуют никаких действий с вашей стороны. Если вы видите кластер ошибок 502, появившихся внезапно, скорее всего, идёт процесс выкатки обновления. Лучший ответ — подождать 30 секунд перед повторной попыткой и записать временные метки, чтобы со временем выявить паттерны развёртывания.

Один практичный паттерн обработки всех ошибок 5xx в продакшене — подход «прогрессивного фоллбэка». Начните с повторной попытки исходного запроса к Gemini 3 Pro с экспоненциальным бэкоффом. После двух неудачных попыток автоматически переключитесь на Gemini 3.1 Flash Image (Nano Banana 2, model ID gemini-3.1-flash-image) — более лёгкую модель, которая часто остаётся доступной, когда Pro перегружена (без гарантий; прежний фоллбэк gemini-2.5-flash-image был отключён Google 2 октября 2026 года). Если Flash тоже не отвечает после двух попыток, поставьте запрос в очередь для отложенной обработки и верните пользователю дружелюбное сообщение «генерация в процессе». Этот трёхуровневый подход — повтор, фоллбэк, очередь — обрабатывает большинство временных серверных ошибок без ручного вмешательства и поддерживает отзывчивость вашего приложения даже во время инфраструктурных событий Google. Код для реализации этого паттерна представлен в разделе «Готовый код обработки ошибок для продакшена» ниже.

Клиентские ошибки (4xx): исправьте ваш запрос

Клиентские ошибки — это на самом деле хорошая новость: они означают, что проблема на вашей стороне, а значит, вы в состоянии исправить её без ожидания действий от Google. Самое важное, что нужно понять: 429 — это ошибка, с которой большинство приложений сталкивается первой по мере роста объёма, и она полностью в вашей власти. Если вы правильно решите проблему ограничения частоты запросов с помощью бэкоффа, квот и очереди запросов, вы устраните один из самых частых источников сбоев. Для подробного разбора самой распространённой клиентской ошибки читайте наше специализированное руководство по устранению RESOURCE_EXHAUSTED.

429 RESOURCE_EXHAUSTED — ошибка, которую вы будете встречать чаще всего при работе с Nano Banana Pro, и у неё есть несколько подтипов, требующих разных стратегий обработки. Поминутный лимит запросов срабатывает, когда вы превышаете лимит запросов в минуту (RPM) вашего тарифа — 15 RPM для бесплатного тарифа, 60 RPM для Google AI Pro ($19.99/мес, подписки Google AI, февраль 2026) и 300 RPM для Google AI Ultra ($249.99/мес). Суточный лимит квоты срабатывает, когда вы исчерпываете общий суточный лимит генерации изображений. А лимит токенов в минуту срабатывает, когда суммарное количество входных и выходных токенов по всем запросам превышает потолок тарифа. Решение для поминутных лимитов простое: реализуйте экспоненциальный бэкофф, начиная с 1 секунды, и ждите до 60 секунд между попытками. При исчерпании суточной квоты нужно либо повысить тариф, либо распределить запросы между несколькими API-ключами, либо поставить запросы в очередь на следующий день. Распространённая ошибка разработчиков — слишком агрессивные повторные попытки при ошибках 429: каждая повторная попытка засчитывается в лимит, создавая «спираль смерти», которая фактически продлевает период блокировки.

400 Bad Request указывает на структурную проблему в вашем API-запросе. Наиболее частые причины: отправка изображения, превышающего максимальный размер (примерно 20 МБ на запрос), использование неподдерживаемого формата изображения, промпт, превышающий лимит токенов (65 536 входных токенов для Gemini 3 Pro Image по данным ai.google.dev/docs/models за февраль 2026; сверяйтесь с актуальной страницей модели), или передача некорректных комбинаций параметров. Для диагностики ошибок 400 внимательно изучите сообщение об ошибке — API Google возвращает конкретные детали о том, какое поле или параметр неверны. Типичные решения включают сжатие входных изображений до размера менее 4 МБ, проверку соответствия соотношений сторон поддерживаемым диапазонам и контроль длины промпта. Особенно тонкая причина ошибок 400 возникает при использовании многоходовых диалогов для редактирования изображений: если история диалога превышает лимит токенов, весь запрос отклоняется, даже если текущий промпт короткий.

403 PERMISSION_DENIED делится на две отдельные категории. Первая — ошибка аутентификации: ваш API-ключ недействителен, просрочен или для него не включён Gemini API в вашем проекте Google Cloud. Решение — создать новый API-ключ в Google AI Studio, убедиться, что Generative Language API включён, и проверить настройку биллинга, если вы на платном тарифе. Вторая категория — географические ограничения: доступ к сервисам Gemini API заблокирован в некоторых странах. Если вы находитесь в ограниченном регионе, вам потребуется маршрутизировать запросы через поддерживаемый регион или использовать прокси-сервис API. Всегда проверяйте работоспособность API-ключа простым текстовым запросом к Gemini, прежде чем отлаживать более сложные задачи генерации изображений — это позволяет отделить проблемы аутентификации от ошибок, связанных с изображениями.

Что Google документирует о блокировках безопасности: SAFETY, IMAGE_SAFETY и OTHER

Различия между SAFETY, IMAGE_SAFETY и OTHER в ответе API и действия разработчика

Блокировки безопасности — самые запутанные ошибки Nano Banana Pro, потому что ответ редко объясняет причину. Полезно отделить то, что документирует Google, от догадок разработчиков. Google не публикует «уровневую» архитектуру или список внутренних этапов модерации; он публикует названия полей и значения перечислений, которые возвращает API, а также настройки безопасности, которые можно менять. Стройте обработку ошибок именно на них. Как Google разделяет блокировки контента, лимиты и меры против аккаунта и что делать в каждом случае, см. Блокировки Nano Banana Pro: контент, лимиты, аккаунт и регион.

Вот что документировано. В Gemini API есть настраиваемые категории безопасности — притеснения, язык вражды, сексуально откровенный и опасный контент, — пороги которых задаются через safetySettings; для актуальных моделей порог по умолчанию — Off. Отдельно существует встроенная защита от основных видов вреда, например для безопасности детей: она блокирует всегда и не настраивается. Ответ показывает, с каким видом блокировки вы столкнулись: finishReason кандидата может быть SAFETY (смотрите safetyRatings), IMAGE_SAFETY, IMAGE_PROHIBITED_CONTENT, IMAGE_OTHER, NO_IMAGE или OTHER, а promptFeedback.blockReason — SAFETY, BLOCKLIST, PROHIBITED_CONTENT, IMAGE_SAFETY или OTHER. Внутренние этапы, стоящие за этими результатами, Google не публикует.

Практическая разница — в том, что вы можете изменить. Когда finishReason равен SAFETY, safetyRatings показывают, какая категория сработала, и вы можете изменить порог этой категории через safetySettings. Установка категории в BLOCK_NONE ослабляет только эту категорию; рассчитывать, что она снимет OTHER или всегда действующую встроенную защиту, не стоит (это наш вывод, он совпадает с отчётами разработчиков). Когда вы видите finishReason: "IMAGE_SAFETY" или сообщение "generated images may contain unsafe content", изображение заблокировано по соображениям безопасности. Google не сообщает, какое правило сработало, и не документирует настройку, которая это отключает, поэтому практический ответ — переписать промпт.

А что насчёт blockReason: OTHER? Справочник API Google определяет его одной строкой: промпт заблокирован по неизвестным причинам. Google не сообщает, какое правило или система его заблокировали, поэтому нет поля для проверки и нет документированной настройки, которая его снимает. Не ожидайте, что BLOCK_NONE его исправит. Что проверять и как найти триггер — см. руководство по blockReason OTHER.

Стратегия разработчика зависит от того, какое поле вы получили. Если finishReason равен SAFETY, изучите safetyRatings и измените порог соответствующей категории. Если IMAGE_SAFETY — перепишите промпт. Следующие приёмы из практики иногда помогают, но Google их не документирует и успех не гарантирован: во-первых, замените имена персонажей или ссылки на IP общими описаниями (например, «принцесса в голубом платье» вместо имени конкретного персонажа); во-вторых, добавьте явное указание художественного стиля, например «цифровая иллюстрация в акварельном стиле»; в-третьих, избегайте сочетания человеческих фигур с описаниями одежды или поз, которые можно истолковать как изображение несовершеннолетнего. Поскольку блокировку безопасности определяет собственная защита модели, не следует ожидать, что шлюз, обращающийся к той же модели Google, изменит результат; меняйте промпт.

Влияние зависит от области применения, а Google не публикует доли блокировок по категориям, поэтому измеряйте свои. Промпты для электронной коммерции с моделями в одежде и промпты с фан-артом или пародиями на узнаваемых персонажей — запросы, которые стоит проверить в первую очередь; пейзажи, объекты и абстрактное искусство реже вызывают проблемы. Ключевой диагностический вопрос всегда один: проверяйте finishReason и promptFeedback.blockReason в ответе API. Если там SAFETY — смотрите safetyRatings и свои пороги. Если IMAGE_SAFETY — сгенерированное изображение заблокировано, и нужно изменить промпт. Если OTHER — Google причину не называет.

Лимиты запросов и квоты: бесплатный vs Pro vs API

Точное понимание вашего потолка лимитов критически важно для планирования мощности и диагностики того, является ли ошибка 429 проблемой поминутного лимита или суточной квоты. Ценовая структура Nano Banana Pro включает пять различных тарифов, каждый с кардинально разными лимитами, определяющими количество и скорость генерации изображений. Подробное сравнение с анализом цен представлено в нашей статье о детальном сравнении лимитов бесплатного и Pro тарифов.

ТарифМесячная стоимостьИзображений в деньRPMСтоимость за изображениеПодходит для
Бесплатный (Gemini App)$0~2/деньN/A$0Случайное тестирование
Бесплатный (API)$0Ограничено15$0Разработка/прототипирование
Google AI Pro$19.99/мес~100/день60~$0.20Индивидуальные создатели
Google AI Ultra$249.99/мес~1 000/день300~$0.25Профессиональные команды
С оплатой по использованию (API)По потреблениюБез суточного лимитаПо тарифу$0.045-$0.24Продакшн-приложения

Цены API взяты из ai.google.dev/gemini-api/docs/pricing по состоянию на 4 октября 2026 г.; данные о подписках и Gemini App — из gemini.google/subscriptions, проверены в феврале 2026 г. Примечание: бесплатное выделение различается для Gemini App (примерно 2 изображения в день через веб-интерфейс) и API (ограниченная бесплатная квота, которую Google на официальной странице цен отмечает как «Not available» для генерации изображений — это, вероятно, отражает ограничения, специфичные для API, тогда как Gemini App сохраняет небольшой бесплатный лимит).

Тариф API с оплатой по использованию заслуживает особого внимания, поскольку является наиболее гибким вариантом для продакшена. По состоянию на 4 октября 2026 года стандартная цена Google для Gemini 3 Pro Image (gemini-3-pro-image) — $0.134 за изображение при 1K или 2K и $0.24 при 4K, а Gemini 3.1 Flash Image (Nano Banana 2) стоит $0.045 при 0.5K, $0.067 при 1K, $0.101 при 2K и $0.151 при 4K (ai.google.dev/gemini-api/docs/pricing). При $0.134 за изображение Pro API сравнивается с подпиской Google AI Pro за $19.99 примерно на 150 изображениях в месяц ($19.99 / $0.134 ≈ 149), так что при меньшем объёме API дешевле. Компромисс в том, что доступ по API требует более технической настройки, и вы самостоятельно управляете ограничениями запросов. Для продакшн-приложений API обычно выбирают ради гибкости: суточного лимита нет, а квоты можно увеличить по запросу. Если вы сейчас на подписке Pro и регулярно упираетесь в лимит ~100/день, переход на API с оплатой по использованию полностью снимает суточный лимит — вы платите только за сгенерированное. Для оптимизации стоимости сверх нативных цен Google шлюз LaoZhang API (laozhang.ai) указывает для gemini-3-pro-image цену $0.09 за вызов независимо от того, запрашиваете вы 1K, 2K или 4K (по состоянию на 4 октября 2026 года). Относительно стандартных цен Google это примерно на 32.8% дешевле при 1K/2K ($0.134) и на 62.5% дешевле при 4K ($0.24). Уровень Batch у Google при 1K/2K стоит $0.067 за изображение, то есть дешевле $0.09, а при 4K Batch ($0.12) шлюз дешевле на 25%. Выбор между Batch и поштучными вызовами разобран в руководстве по оптимизации затрат на Batch API, а сравнение подписки, API и шлюза — в руководстве по ценам Nano Banana Pro.

Понимание того, какая именно квота исчерпана, критически важно для выбора правильной стратегии восстановления. Когда вы получаете ошибку 429, сообщение об ошибке обычно содержит подсказку о том, какая конкретная квота была превышена. Если вы видите Quota exceeded for quota metric 'generate_content' and limit 'GenerateContent request limit per minute', решение простое — подождите 60 секунд, и ваш поминутный лимит сбросится. Если сообщение ссылается на суточный лимит, вы заблокированы до полуночи по тихоокеанскому времени. А если упоминается лимит токенов в минуту, нужно уменьшить либо частоту, либо объём запросов — это особенно актуально для многоходовых диалогов редактирования изображений, накапливающих большие истории токенов. Логирование этих различий в коде обработки ошибок — это разница между восстановлением за 60 секунд и простоем на 24 часа.

Готовый код обработки ошибок для продакшена

Переход от понимания ошибок к их автоматической обработке в продакшене требует надёжной системы повторных попыток с логикой фоллбэка. Следующая реализация на Python демонстрирует, как объединить экспоненциальный бэкофф, явные пороги безопасности, фоллбэк модели при ошибках 503 и корректное логирование в единую переиспользуемую функцию. Этот код готов для копирования напрямую в ваше приложение.

python
import google.generativeai as genai
import time
import random
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("nano_banana_pro")

# Explicit safety thresholds (for current models the default is Off; shown so the behavior is visible in code)
SAFETY_SETTINGS = [
    {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
]

def generate_image_with_retry(
    prompt: str,
    api_key: str,
    max_retries: int = 5,
    primary_model: str = "gemini-3-pro-image",
    fallback_model: str = "gemini-3.1-flash-image",
) -> dict:
    """Generate image with exponential backoff, safety config, and model fallback."""
    genai.configure(api_key=api_key)
    current_model = primary_model

    for attempt in range(max_retries):
        try:
            model = genai.GenerativeModel(current_model)
            response = model.generate_content(
                prompt,
                safety_settings=SAFETY_SETTINGS,
                generation_config={"response_modalities": ["TEXT", "IMAGE"]},
            )

            # Check finishReason for safety blocks
            if response.candidates:
                finish_reason = response.candidates[0].finish_reason.name
                if finish_reason == "SAFETY":
                    logger.warning("SAFETY block — check safetyRatings and safety_settings")
                    return {"status": "blocked_safety", "reason": finish_reason}
                elif finish_reason == "IMAGE_SAFETY":
                    logger.warning("IMAGE_SAFETY block — rewrite prompt")
                    return {"status": "blocked_image_safety", "reason": finish_reason}
                elif finish_reason == "STOP":
                    return {"status": "success", "response": response}

            return {"status": "success", "response": response}

        except Exception as e:
            error_str = str(e)

            # 429: Rate limit — exponential backoff
            if "429" in error_str or "RESOURCE_EXHAUSTED" in error_str:
                wait = min(2 ** attempt + random.uniform(0, 1), 60)
                logger.info(f"429 rate limit, waiting {wait:.1f}s (attempt {attempt+1})")
                time.sleep(wait)
                continue

            # 503: Overloaded — switch to fallback model
            if "503" in error_str or "overloaded" in error_str.lower():
                if current_model != fallback_model:
                    logger.info(f"503 overloaded, switching to {fallback_model}")
                    current_model = fallback_model
                    continue
                wait = min(2 ** attempt * 5, 120)
                logger.info(f"503 on fallback too, waiting {wait:.1f}s")
                time.sleep(wait)
                continue

            # 500/502: Transient — simple retry
            if "500" in error_str or "502" in error_str:
                wait = min(2 ** attempt + random.uniform(0, 1), 30)
                logger.info(f"Server error, retrying in {wait:.1f}s")
                time.sleep(wait)
                continue

            # Unknown error — do not retry
            logger.error(f"Unhandled error: {error_str}")
            return {"status": "error", "message": error_str}

    return {"status": "max_retries_exceeded", "model": current_model}

Этот код автоматически обрабатывает четыре наиболее критических сценария. Для ошибок лимита запросов 429 реализован экспоненциальный бэкофф с джиттером во избежание проблемы «стадного эффекта», когда несколько запросов одновременно упираются в лимит. Для ошибок перегрузки 503 код сначала переключается на более лёгкую модель Gemini 3.1 Flash Image в качестве фоллбэка, прежде чем прибегать к длительному ожиданию — этот компромисс между качеством изображения и доступностью обычно приемлем в продакшене. Для временных ошибок 500/502 выполняются повторные попытки с умеренным бэкоффом, поскольку они обычно устраняются за несколько попыток. А для блокировок SAFETY и IMAGE_SAFETY функция немедленно возвращает результат со статусом, указывающим, какой finishReason заблокировал запрос, — повторные попытки с тем же промптом против того же фильтра бессмысленны.

Стратегия фоллбэка модели заслуживает особого акцента. Когда Gemini 3 Pro возвращает ошибки 503 при пиковой нагрузке, Gemini 3.1 Flash Image часто остаётся доступной, поскольку это более лёгкая модель, хотя Google этого не гарантирует. Разница в стоимости тоже играет в вашу пользу: по состоянию на 4 октября 2026 года стандартная цена Google для Gemini 3.1 Flash Image — $0.067 (1K) или $0.101 (2K) за изображение против $0.134 для Gemini 3 Pro Image при 1K/2K (ai.google.dev/gemini-api/docs/pricing), так что вы фактически экономите деньги в периоды деградации. Прежний фоллбэк gemini-2.5-flash-image ($0.039 за изображение — это цена первого поколения Nano Banana, а не цена Pro) был отключён Google 2 октября 2026 года. Подробный пошаговый алгоритм отладки, выходящий за рамки автоматических повторных попыток, описан в нашем руководстве по отладке.

Помимо базовой логики повторных попыток, стоит реализовать три паттерна для продакшена. Первый — добавьте очередь запросов с «мёртвой очередью» для запросов, провалившихся во всех попытках: это предотвращает видимые пользователю ошибки и позволяет обработать неудачные запросы в непиковые часы, когда у Nano Banana Pro больше мощности. Второй — реализуйте логику «предохранителя» (circuit breaker), которая прекращает отправку запросов к конкретной модели после обнаружения паттерна ошибок 503 (например, 5 сбоев за 60 секунд), автоматически перенаправляя весь трафик на резервную модель до успешной проверки работоспособности. Третий — добавьте мониторинг и оповещения, отслеживающие частоту ваших ошибок по категориям в реальном времени. Когда доля ошибок 429 превышает 10% запросов, вы приближаетесь к лимитам тарифа и стоит рассмотреть повышение или распределение нагрузки между дополнительными API-ключами. Когда ошибки 503 превышают 25%, вероятно, происходит событие исчерпания мощности, и ваш «предохранитель» должен автоматически активировать резервную модель. Эти паттерны трансформируют обработку ошибок из реактивной отладки в проактивную инженерию надёжности.

Когда стоит рассмотреть альтернативных провайдеров

Не у каждой ошибки Nano Banana Pro есть быстрое решение. Если вы сталкиваетесь с постоянными ошибками 503 в часы пик, повторяющимися блокировками IMAGE_SAFETY, устойчивыми к промпт-инженерии, или суточными лимитами квот, ограничивающими ваше продакшн-приложение, возможно, пора оценить мультимодельные стратегии. Это не про отказ от Nano Banana Pro — он остаётся одной из наиболее мощных моделей генерации изображений — а про встраивание отказоустойчивости в архитектуру вашего приложения. Детальное сравнение качества и надёжности представлено в нашей статье сравнение с альтернативными моделями генерации изображений, такими как Flux2.

Наиболее практичный подход — реализовать паттерн «основной/резервный», где Nano Banana Pro обрабатывает большинство запросов, а альтернативный маршрут подхватывает сбои. Шлюзы вроде LaoZhang API созданы именно для этого: они предоставляют единую точку API для моделей Nano Banana с оплатой за вызов. По состоянию на 4 октября 2026 года это $0.09 за вызов gemini-3-pro-image при любом размере, $0.055 за gemini-3.1-flash-image и $0.025 за gemini-3.1-flash-lite-image (только 1K). Когда ваш основной вызов Nano Banana Pro завершается ошибкой 503, ваш код обработки ошибок перенаправляет запрос на альтернативную точку без изменения промпта. Два предупреждения: вызов через шлюз, вернувший HTTP 200 без изображения, всё равно оплачивается как один вызов, поэтому не повторяйте запросы вслепую; а размер и соотношение сторон можно задать только на нативном маршруте Gemini (маршрут, совместимый с OpenAI, возвращает 1:1 при 1K). Экономическая выгода очевидна — вы платите только за фоллбэк-запросы, которые действительно происходят, и избегаете видимых пользователю сбоев, подрывающих доверие к вашему приложению.

Оценивайте переход на альтернативного провайдера или мультимодельную стратегию, если выполняются три или более из этих условий: доля ошибок 503 в часы пик превышает 20%, блокировки IMAGE_SAFETY затрагивают более 10% ваших легитимных промптов, суточный объём генерации стабильно превышает квоту вашего тарифа, и вам требуются SLA на уровне 99.9%+, которые не может гарантировать одна модель или один провайдер. Preview-идентификатор gemini-3-pro-image-preview был отключён 25 июня 2026 года; актуальный GA-идентификатор — gemini-3-pro-image, поэтому перед тем как полагаться на единственную модель, проверьте текущие условия Google о SLA для вашего тарифа. Построение мультипровайдерной отказоустойчивости сейчас — это инвестиция в стабильность.

Стоимость реализации добавления резервного провайдера минимальна при грамотно структурированной обработке ошибок. В представленном выше коде добавьте вторичный вызов API в ветке возврата max_retries_exceeded, маршрутизирующий на вашу резервную точку. Ключевой архитектурный принцип — логика вашего приложения никогда не должна зависеть от единственного провайдера генерации изображений. Абстрагируйте вызов генерации за интерфейсом, принимающим промпт и возвращающим изображение, и меняйте лежащую в основе реализацию в зависимости от доступности. Этот паттерн широко применяется в зрелых продакшн-системах, работающих с генерацией изображений в масштабе, и превращает ошибки Nano Banana Pro из сбоев приложения в корректные компромиссы по качеству, невидимые для конечных пользователей.

FAQ

Как долго длится ошибка 429 RESOURCE_EXHAUSTED?

Ошибка 429 из-за поминутного лимита снимается после сброса минутного окна, так что обычно достаточно подождать около минуты. Если вы исчерпали суточную квоту, лимит сбрасывается в полночь по тихоокеанскому времени. Главная ошибка, которой следует избегать — агрессивные повторные попытки: каждая попытка в период «остывания» засчитывается в ваш лимит, потенциально продлевая блокировку. Реализуйте экспоненциальный бэкофф, начиная с 1-2 секунд, с максимальным ожиданием 60 секунд для поминутных лимитов.

Можно ли обойти фильтр IMAGE_SAFETY в Nano Banana Pro?

Google не документирует настройку, которая отключает IMAGE_SAFETY. Пороги safetySettings относятся к четырём настраиваемым категориям (притеснения, язык вражды, сексуально откровенный контент, опасный контент), а встроенная защита от основных видов вреда блокирует всегда. Для finishReason: SAFETY можно изучить safetyRatings и изменить порог соответствующей категории. Для блокировок IMAGE_SAFETY практический подход — промпт-инженерия: замените имена персонажей общими описаниями, явно укажите объект и художественный стиль и избегайте сочетания человеческих фигур с описаниями, которые могут намекать на несовершеннолетнего. Это приёмы из практики, а не документированные гарантии, и Google не публикует их долю успеха.

Почему Nano Banana Pro постоянно выдаёт «generated images may contain unsafe content»?

Это сообщение указывает на блокировку на уровне изображения, того же семейства, что и finishReason: IMAGE_SAFETY. Google не публикует, какой классификатор или правило сработало, поэтому сообщение не говорит, в чём причина — в персонаже, реальном человеке или композиции. Перепишите промпт с общим описанием и явным стилем, например «акварельная иллюстрация» или «плоская векторная графика», а если тот же промпт продолжает блокироваться, упрощайте его шаг за шагом, чтобы найти триггер. Если же вы видите promptFeedback.blockReason: OTHER, Google определяет его лишь как «неизвестные причины»; см. руководство по blockReason OTHER.

В чём разница между finishReason SAFETY и IMAGE_SAFETY?

finishReason: SAFETY означает, что кандидат остановлен по соображениям безопасности; safetyRatings показывает категорию, и для настраиваемых категорий можно изменить порог через safety_settings. finishReason: IMAGE_SAFETY означает, что сгенерированное изображение заблокировано по соображениям безопасности; Google не сообщает, какое правило сработало, и не документирует настройку, которая это меняет, поэтому практическое решение — переписать промпт. Ни то ни другое не равно promptFeedback.blockReason: OTHER, который Google определяет лишь как «неизвестные причины».

Можно ли использовать Nano Banana Pro бесплатно?

У Nano Banana Pro есть ограниченный бесплатный тариф через Gemini App (примерно 2 изображения в день). Для доступа через API бесплатный тариф сильно ограничен — официальная страница цен Google отмечает бесплатную генерацию изображений через API как «Not available» (ai.google.dev/gemini-api/docs/pricing, по состоянию на 4 октября 2026). Платные варианты начинаются с $19.99/мес за Google AI Pro (примерно 100 изображений/день) или API с оплатой по использованию от $0.045 до $0.24 за изображение в зависимости от модели и разрешения (стандартные цены Google, по состоянию на 4 октября 2026). Для наиболее полного разбора читайте наше детальное сравнение лимитов бесплатного и Pro тарифов.

Как проверить, работает ли Nano Banana Pro?

Сначала проверьте панель статуса Google AI на предмет текущих инцидентов. Если на странице статуса нет проблем, а вы по-прежнему получаете ошибки 503, скорее всего, проблема в региональных ограничениях мощности, а не в глобальном сбое. Попробуйте сгенерировать простое тестовое изображение с базовым промптом, чтобы подтвердить, связана ли проблема конкретно с Nano Banana Pro или с параметрами вашего запроса. На форуме сообщества discuss.ai.google.dev также публикуются отчёты в реальном времени от других разработчиков, сталкивающихся с аналогичными проблемами.

Источники3

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 5 окт. 2026 г..

  1. 1.панель статуса Google AIstatus.cloud.google.com
  2. 2.Google AI Studioaistudio.google.com
  3. 3.discuss.ai.google.devdiscuss.ai.google.dev
Центр устранения неполадок Nano Banana Pro: коды ошибок, временные изображения и сравнение платформ
Генерация изображений

Устранение неполадок Nano Banana Pro: решение всех кодов ошибок с проверенными методами (2026)

Ошибки API Nano Banana Pro могут нарушить работу вашего конвейера генерации изображений. Это руководство охватывает все коды ошибок (429, 503, 400, 403, 500), объясняет механизм «мышления» с временными изображениями, содержит готовый к продакшену Python-код для обработки ошибок и сравнивает стабильность Gemini API и Vertex AI — всё на основе реальных отчётов разработчиков и официальной документации по состоянию на февраль 2026 года.

25 мин