> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Почему Gemini Image возвращает IMAGE_OTHER?

> Когда модель изображений Gemini возвращает finishReason: IMAGE_OTHER, изображение было сгенерировано, но отфильтровано провайдером перед отправкой. Чем это отличается от NO_IMAGE и blockReason, как определить причину срабатывания и как это исправить.

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

Если API изображений Gemini возвращает HTTP 200 со значением `candidates[0].finishReason`, равным `IMAGE_OTHER`, а в `finishMessage` указано `Unable to show the generated image`, **модель действительно сгенерировала изображение, но проверка вывода провайдера отфильтровала его до возврата**.

* Это **носит вероятностный характер**: один и тот же запрос иногда выполняется успешно, а иногда завершается ошибкой, и частота сбоев может быть высокой
* Это **не связано с негативными prompt, параметрами или шлюзом**; проблема заключается в том, что именно оказывается на изображении
* Наиболее типичный выявленный нами триггер: **в prompt упоминается реальный человек**
* Провайдер указывает в `finishMessage`, что плата за такие запросы не взимается

Способ решения: **найдите часть prompt, из-за которой изображение становится похожим на конкретного реального человека или другой контент с ограничениями, и замените её описанием.**

## Как это распознать

Типичный ответ:

```json theme={null}
{
  "candidates": [
    {
      "finishReason": "IMAGE_OTHER",
      "finishMessage": "Unable to show the generated image. The model could not generate the image based on the prompt provided. You will not be charged for this request. Try rephrasing the prompt. ..."
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 1430,
    "candidatesTokenCount": 274,
    "thoughtsTokenCount": 274
  },
  "modelVersion": "gemini-3-pro-image",
  "responseId": "..."
}
```

Обратите внимание, что `candidatesTokenCount` не равно 0; оно равно `thoughtsTokenCount`. Модель завершила рассуждение, но итоговое изображение не было получено.

Три причины, по которым изображение может отсутствовать:

| Признак                      | IMAGE\_OTHER                                                                         | NO\_IMAGE                                                     | blockReason: OTHER                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Поле с информацией об ошибке | `candidates[0].finishReason`                                                         | `candidates[0].finishReason`                                  | `promptFeedback.blockReason`                                                      |
| Где это происходит           | Изображение сгенерировано, **отфильтровано на выходе**                               | Модель так и не нарисовала изображение                        | До генерации, **входные данные заблокированы**                                    |
| `finishMessage`              | `Unable to show the generated image`                                                 | Обычно отсутствует                                            | `candidates` отсутствует вовсе                                                    |
| Выходные tokens              | Только tokens рассуждения                                                            | 0 или только текст                                            | 0                                                                                 |
| Воспроизводится каждый раз?  | Вероятностно                                                                         | Вероятностно                                                  | Обычно да                                                                         |
| Частая причина               | Изображение напоминает конкретного реального человека или другой запрещенный контент | В prompt запрошен текстовый вывод                             | Референсное изображение заблокировано                                             |
| Что делать                   | Перефразируйте описание человека или запрещенную часть prompt                        | См. [Устранение неполадок NO\_IMAGE](/ru/faq/gemini-no-image) | См. [Устранение неполадок blockReason: OTHER](/ru/faq/gemini-image-input-blocked) |

<Info>
  В официальной документации по API `IMAGE_OTHER` относится к той же группе, что и `IMAGE_SAFETY`, `IMAGE_PROHIBITED_CONTENT` и `IMAGE_RECITATION`, и все они означают «генерация изображений была остановлена». `IMAGE_OTHER` охватывает причины, не относящиеся к другим категориям, и провайдер не раскрывает конкретные критерии.
</Info>

## Протестированный кейс

В сентябре 2026 года (UTC+8) клиент сообщил, что чистый text-to-image запрос на карточку игрока **не возвращал изображение примерно в 63% случаев** на gemini-3-pro-image. prompt содержал около 5500 символов:

* Вводное предложение с указанием имени реального спортсмена и требованием «1:1 replica» черт его лица
* Подробные инструкции по позе, кадрированию, цветам формы, художественному стилю и белому фону
* Два длинных блока negative-prompt (NEGATIVE) со списком множества названий брендов

Каждая воспроизведённая нами ошибка представляла собой `IMAGE_OTHER` и возвращалась примерно через 20 секунд. Затем мы поочерёдно удаляли по одному элементу, выполняя по 6 вызовов на группу:

| Изменение                                                                               | Нет изображения |
| --------------------------------------------------------------------------------------- | --------------- |
| Исходный prompt                                                                         | **5/6**         |
| **Удалено только предложение с именем реального человека**, всё остальное без изменений | **0/6**         |
| Имя сохранено, удалена только формулировка «1:1 replica»                                | 4/6             |
| Удалены оба блока negative-prompt                                                       | 3/6             |

Вывод очевиден: **триггером является само имя реального человека**. Модель распознаёт имя и стремится воспроизвести внешность этого человека; чем ближе сходство, тем выше вероятность, что результат будет отфильтрован. Попытки, давшие меньшее сходство, прошли фильтрацию, из-за чего сбой казался случайным. Причиной не была ни формулировка «1:1 replica», ни длинные negative-prompt.

После удаления имени описания причёски, формы лица и глаз, уже присутствовавшие в prompt, оказались достаточными для создания карточки игрока в том же стиле.

<Tip>
  Шести вызовов на группу достаточно для такого метода деления пополам: если исходный вариант завершается ошибкой в 5 из 6 случаев, вероятность того, что правильное исправление случайно пройдёт 6 раз подряд, составляет примерно 2 на 100 000. Всё исследование заняло 24 вызова.
</Tip>

## Как локализовать триггер

<Steps>
  <Step title="Шаг 1: Подтвердите тип сбоя">
    Отправьте один и тот же запрос повторно 5–6 раз, убедитесь, что сбои содержат `finishReason: IMAGE_OTHER`, и зафиксируйте частоту сбоев. Если вместо этого вы видите `NO_IMAGE` или `blockReason`, перейдите на соответствующую страницу устранения неполадок.
  </Step>

  <Step title="Шаг 2: Сначала проверьте имена и конкретные объекты">
    Проверьте prompt на наличие **имен реальных людей** (знаменитостей, спортсменов, инфлюенсеров, политиков и т. д.) или указаний выглядеть «в точности как» кто-то. Удалите их и запустите еще одну группу.
  </Step>

  <Step title="Шаг 3: Удаляйте фрагменты пополам">
    Если дело не в имени, удаляйте за раз по половине prompt (по 6 вызовов на группу) и продолжайте сужать область поиска только в той половине, где частота сбоев явно снижается.
  </Step>

  <Step title="Шаг 4: Перепишите вместо простого удаления">
    Как только вы найдете триггер, замените упоминание конкретного имени на **описание** внешности, одежды и стиля, сохранив действительно необходимые визуальные требования.
  </Step>
</Steps>

## Рекомендации

1. **Не указывайте имена реальных людей в prompt**: вместо этого описывайте их внешность, например «прямые светлые волосы с пробором сбоку, миндалевидные глаза, овальное лицо». В нашем случае это было единственным эффективным решением.
2. **Сокращение negative prompt допустимо, но причина не в них**: у моделей генерации изображений Gemini нет отдельного параметра negative-prompt, поэтому длинный список NEGATIVE считывается как обычный текст. Его сокращение делает prompt более понятным, но не снижает долю `IMAGE_OTHER`.
3. **Не полагайтесь на повторные попытки**: при доле сбоев выше 60% повторные попытки превращаются в лотерею и увеличивают задержку. Ваш клиент может повторить попытку один раз при `IMAGE_OTHER` в качестве резервного варианта, но истинное решение — исправление prompt.
4. **Исправьте шаблоны перед пакетной генерацией**: если вы выполняете генерацию по списку (например, по одной карточке на игрока), не вставляйте имена в prompt. Используйте их только для наименования собственных файлов или последующей вёрстки.
5. **Используйте референсное изображение, когда требуется устойчивое сходство**: если вам действительно необходимо изобразить конкретного человека, предоставьте референсное изображение с его разрешения и учитывайте ограничения в отношении реальных людей и несовершеннолетних, перечисленные в [Сбоях генерации изображений Nano Banana](/ru/faq/nano-banana-image-failure).

Различение трёх форм в коде:

```python theme={null}
def classify_no_image(resp: dict) -> str:
    if resp.get("promptFeedback", {}).get("blockReason"):
        return "input_blocked"        # see blockReason: OTHER troubleshooting
    cand = (resp.get("candidates") or [{}])[0]
    reason = cand.get("finishReason")
    if reason == "IMAGE_OTHER":
        return "output_filtered"      # rewrite names / restricted descriptions
    if reason == "NO_IMAGE":
        return "no_image_intent"      # see NO_IMAGE troubleshooting
    if reason in ("IMAGE_SAFETY", "IMAGE_PROHIBITED_CONTENT"):
        return "safety"               # explicit safety block, do not retry
    return "ok" if any("inlineData" in p for p in (cand.get("content") or {}).get("parts") or []) else "unknown"
```

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

<AccordionGroup>
  <Accordion title="Срабатывает ли это, если в prompt упоминается только имя, без запроса внешнего сходства?">
    Да. В наших тестах при удалении формулировки «1:1 replica» и сохранении только имени доля сбоев все равно составляла 4/6. Модель распознает имя и стремится изобразить этого человека.
  </Accordion>

  <Accordion title="Почему один и тот же запрос иногда выполняется успешно, а иногда завершается ошибкой?">
    Фильтр запускается после генерации изображения, поэтому результат зависит от того, что было сгенерировано на этот раз. Каждая генерация уникальна, поэтому один и тот же запрос может пройти проверку или быть заблокирован фильтром.
  </Accordion>

  <Accordion title="Почему после смены группы или канала все заработало?">
    Строгость проверки выходных данных может различаться между группами, поэтому один и тот же prompt может отклоняться с разной частотой. Однако маршрутизация между группами со временем меняется, поэтому эта разница не является постоянной. Надежный подход — исправить сам prompt.
  </Accordion>

  <Accordion title="Помогают ли негативные prompt (NEGATIVE)?">
    У моделей генерации изображений Gemini нет отдельного параметра negative-prompt; список NEGATIVE внутри prompt воспринимается как обычный текст. Он никак не влияет на `IMAGE_OTHER`, однако слишком длинный список может размыть основное описание. Оставьте только несколько действительно важных деталей и сформулируйте их утвердительно (например, «простой белый фон» вместо длинного списка «без стадиона, без травы...»).
  </Accordion>

  <Accordion title="Взимается ли плата за IMAGE_OTHER?">
    Провайдер заявляет в `finishMessage`, что за такие запросы плата не взимается. Чтобы проверить, был ли запрос тарифицирован, посмотрите журнал вызовов в консоли APIYI.
  </Accordion>
</AccordionGroup>

## Все еще нужна помощь? Свяжитесь со службой поддержки

Пожалуйста, укажите следующую информацию, чтобы мы могли помочь:

* Название модели и группа token;
* Полный ответ (как минимум `finishReason`, `finishMessage` и `responseId`), а также `request ID`;
* Время возникновения (с указанием часового пояса);
* Отредактированный prompt и наблюдаемую частоту ошибок.

<Warning>
  Никогда не отправляйте API-ключ полностью. Скройте ключ перед отправкой скриншотов или логов.
</Warning>

<CardGroup cols={2}>
  <Card title="Поддержка в WeCom" icon="message-circle" href="https://work.weixin.qq.com/kfid/kfc9adfd5810ece25ec">
    <img src="https://mintcdn.com/apiyillc/fpi567ydpk7adDt0/images/wecom-qrcode.png?fit=max&auto=format&n=fpi567ydpk7adDt0&q=85&s=7286b96e94110e3a48798b649df1b45b" alt="QR-код службы поддержки WeCom" style={{maxWidth: "180px"}} width="400" height="400" data-path="images/wecom-qrcode.png" />

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

  <Card title="Поддержка по электронной почте" icon="mail">
    **Поддержка**: [support@apiyi.com](mailto:support@apiyi.com)

    Рекомендуем указать «IMAGE\_OTHER» и название модели в теме письма.
  </Card>
</CardGroup>

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

<CardGroup cols={2}>
  <Card title="Почему Gemini Image API возвращает NO_IMAGE?" icon="image-off" href="/ru/faq/gemini-no-image">
    Отсутствие изображений из-за неясного намерения в prompt и способы решения проблемы
  </Card>

  <Card title="Почему Gemini Image возвращает blockReason: OTHER?" icon="shield-alert" href="/ru/faq/gemini-image-input-blocked">
    Определение референсного изображения, заблокированного до генерации, и рекомендации по предобработке
  </Card>

  <Card title="Ошибки генерации изображений Nano Banana" icon="image-off" href="/ru/faq/nano-banana-image-failure">
    Распространенные причины, включая безопасность, удаление водяных знаков, известные объекты интеллектуальной собственности и несовершеннолетних
  </Card>

  <Card title="Обработка ошибок Gemini Image API" icon="triangle-alert" href="/ru/api-capabilities/gemini-image-error-handling">
    Полный порядок проверки ответа и понятные пользователю сообщения об ошибках
  </Card>
</CardGroup>
