Skip to main content

Краткий ответ

Когда API возвращает finishReason: NO_IMAGE, а parts имеет значение null, модель обычно обрабатывает запрос, но не возвращает содержимое изображения. Это не обязательно означает, что prompt вызвал срабатывание блокировки безопасности контента. Такие prompt, как «Что такое GEO?» или «Объясни эту концепцию», больше похожи на текстовые вопросы. Модель может не определить однозначно, что пользователю действительно нужно изображение, поэтому возвращает NO_IMAGE. Явно укажите намерение сгенерировать изображение в начале prompt, а затем опишите объект, композицию, стиль и требования к результату. Еще одна частая причина — prompt, в котором содержится просьба написать текст, например «подготовь предложение по дизайну» или «сделай анализ подробным». Когда вызов допускает только вывод изображений, подобный запрос время от времени возвращает NO_IMAGE, поэтому один и тот же запрос может завершиться ошибкой, а затем выполниться успешно. См. раздел «Prompt запрашивает текстовый ответ» ниже.
Если в ответе отсутствует candidates, но содержится promptFeedback.blockReason (например, OTHER), это другая проблема: входные данные были заблокированы провайдером до начала генерации. См. Почему Gemini Image возвращает blockReason: OTHER?

Почему возникает NO_IMAGE?

1. prompt выглядит как текстовый вопрос

Например:
Это объясняет концепцию, но явно не указывает:
  • какой тип изображения требуется сгенерировать;
  • какие элементы должны присутствовать на изображении;
  • как должна быть скомпонована информация;
  • должен ли ответ содержать только изображение.
Даже когда запрос содержит слова «generate an image», модель все равно может интерпретировать запрос целиком как текстовое объяснение.

2. Намерение сгенерировать изображение выражено недостаточно конкретно

Некоторые инструменты платформ автоматически добавляют в начало инструкции вроде «Generate an image:». Однако при прямом вызове API запрос может пересылаться напрямую без автоматического добавления полной инструкции по генерации изображений. Вместо того чтобы писать только:
Укажите тип изображения и визуальную цель напрямую:

3. В prompt отсутствует визуальное описание

Если prompt лишь объясняет концепцию, модель не знает, как превратить ее в визуальную композицию. Рекомендуется указать:
  • тип изображения: инфографика, плакат, блок-схема или промо-графика;
  • компоновка: три колонки, временная шкала или радиальная структура;
  • визуальный стиль: технологичный, деловой, минималистичный или фирменный;
  • иерархия текста: заголовок, нумерованные разделы, основной текст и верстка;
  • инструкция по выводу: сгенерировать только изображение, без текстовых объяснений.

4. prompt запрашивает текстовый вывод

Модели генерации изображений Gemini также могут распознавать изображения и писать текст. Если prompt содержит фразы, запрашивающие текстовый вывод, модель иногда сначала «пишет предложение», вместо того чтобы сгенерировать изображение:
Подобные предложения подходят для текстовой модели. Когда они отправляются в модель генерации изображений с выводом только изображений (responseModalities: ["IMAGE"]), предложение, которое модель хочет написать, не может быть возвращено, поэтому ответом становятся finishReason: NO_IMAGE, parts: null и ноль выходных tokens. Мы повторно запустили реальный запрос на дизайн обуви (3 референсных изображения плюс prompt, аналогичный приведенному выше) в сентябре 2026 года (UTC+8) на gemini-3.1-flash-image с responseModalities: ["IMAGE"]: Именно поэтому один и тот же запрос может завершаться ошибкой несколько раз подряд, а затем успешно выполняться, даже если маршрут не менялся. Самое простое решение — добавить в конец prompt подобную фразу:
Если референсное изображение содержит четко читаемый текст или стороннюю маркировку (например, надпись бренда на подошве обуви), модель с большей вероятностью сначала начнет анализировать этот материал. В том же тесте размытие этой надписи также привело к результату 0/36.

Разные настройки responseModalities — разные симптомы

Один и тот же запрос с неясным намерением генерации изображения завершается с ошибкой по-разному в зависимости от responseModalities: Совет по устранению неполадок: отправьте сбойный запрос повторно несколько раз без responseModalities и прочитайте, что пишет модель, когда она не возвращает изображение:
  • Предложение, анализ или prompt для изображения → намерение генерации изображения неясно; исправьте prompt, как описано на этой странице
  • Отказ вроде «Я не могу это сгенерировать» → сработала политика безопасности контента; см. сбои генерации изображений Nano Banana

Пример GEO-промпта

Вы можете переписать исходный промпт следующим образом:
«Сгенерировать изображение» — это лишь подсказка о действии. Она не заменяет описание визуального результата. Чем яснее вы опишете тип изображения, объект, композицию и стиль, тем легче модели определить, что запрос относится к генерации изображений.

Как устранить ошибку NO_IMAGE

1

Шаг 1: Определите, в каком поле содержится ошибка

Если candidates[0].finishReason имеет значение NO_IMAGE, данная страница вам подходит. Если candidates отсутствуют и promptFeedback.blockReason имеет значение, входные данные были заблокированы до генерации; см. Устранение неполадок с blockReason: OTHER.
2

Шаг 2: Проверьте, содержит ли ответ данные изображения

Проверьте parts, inlineData, image или аналогичное поле изображения в ответе. Если parts имеет значение null, ответ обычно не содержит данных изображения.
3

Шаг 3: Убедитесь, что prompt явно запрашивает изображение

Убедитесь, что prompt содержит четкую инструкцию, например «сгенерируй изображение», «создай постер» или «создай изображение». Не отправляйте только текстовый вопрос, например «Что такое…» или «Объясни…». Также проверьте наличие предложений, требующих текстового ответа, например «подготовь предложение», «проанализируй подробно» или «объясни свой замысел». Удалите их или добавьте «выведи только изображение» в конец prompt.
4

Шаг 4: Затем проверьте факторы безопасности контента

Если prompt явно запрашивает изображение, но все равно возвращается NO_IMAGE, проверьте запрос на наличие NSFW-контента, тем с несовершеннолетними, известных объектов интеллектуальной собственности, удаления водяных знаков, портретов реальных людей или других ограничений вышестоящих политик безопасности.
5

Шаг 5: Проверьте логи вызовов

Проверьте полный ответ, название модели, ID запроса и запись о тарификации в логах вызовов. usageMetadata показывает, что модель обработала запрос, но это не доказывает, что изображение было сгенерировано или произошла блокировка системой безопасности.

Чем NO_IMAGE отличается от блокировки безопасности?

finishReason: NO_IMAGE означает лишь то, что изображение не было возвращено. Само по себе это не доказывает, что prompt нарушил политику. Анализируйте полный текст ошибки, prompt и журналы вызовов в совокупности.

Часто задаваемые вопросы

Нет. Это лишь делает базовое намерение более понятным. Опишите также тип изображения, объект, композицию, стиль и требования к результату. Для абстрактных понятий явно запрашивайте инфографику, плакат или блок-схему.
Сама по себе концепция GEO, судя по всему, не содержит явных рисков для безопасности. Однако одно лишь NO_IMAGE не позволяет полностью исключить решение политик вышестоящего провайдера. В этом случае prompt больше похож на объяснение информации, поэтому в первую очередь целесообразно проверить неясность намерения сгенерировать изображение.
В большинстве случаев маршрут не менялся. NO_IMAGE из-за неясного намерения носит вероятностный характер: при каждом запросе модель выбирает между генерацией изображения и предварительным написанием текста. В наших тестах один и тот же запрос завершался ошибкой примерно в 21% случаев, часто несколько раз подряд. Настройте в своем клиенте автоматический повтор 1–2 раза для ответов NO_IMAGE и скорректируйте prompt, чтобы устранить первопричину.
usageMetadata лишь показывает, что модель обработала входные данные и сгенерировала tokens рассуждения или текста. Это не означает, что ответ содержит изображение. Проверьте поля данных изображения в ответе.
Не определяйте тарификацию только по NO_IMAGE. Проверьте логи вызовов APIYI, чтобы подтвердить, создана ли запись о списании за этот запрос.

Всё ещё не удаётся решить проблему? Обратитесь в поддержку

Если после явного указания назначения изображения запрос по-прежнему возвращает NO_IMAGE, обратитесь в поддержку APIYI и укажите:
  • Название модели и группу token;
  • Полное сообщение об ошибке и request ID;
  • Промпт с удалёнными конфиденциальными данными;
  • Время возникновения;
  • Запись тарификации из журналов вызовов.
Никогда не отправляйте полный API-ключ. Удалите ключ перед отправкой скриншотов или журналов.

Поддержка WeCom

QR-код поддержки WeComОтсканируйте QR-код или нажмите на эту карточку, чтобы напрямую связаться с поддержкой.

Поддержка по электронной почте

Поддержка: [email protected]Рекомендуем указать «NO_IMAGE» и название модели в теме письма.

Связанная документация

Почему Gemini Image возвращает blockReason: OTHER?

Как найти заблокированное входное изображение и предварительно обработать референсные изображения

Сбои генерации изображений Nano Banana

Распространенные причины, включая безопасность, удаление водяных знаков, известную интеллектуальную собственность и несовершеннолетних

Как устранять ошибки API моделей?

Общие рекомендации по ошибкам 401, 429, 503, 504, таймаутам и проблемам с группами

Как читать суммы тарификации в логах?

Используйте логи вызовов, чтобы подтвердить, был ли запрос успешным и была ли списана плата