> ## 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.

# Длинные промпты и двухэтапная генерация: откуда берётся ограничение в 32K

> Клиент спросил, почему длина нашего промпта ограничена 32K, а у ChatGPT — нет. Ограничение официального API OpenAI для изображений составляет 32 000 символов и измеряется в символах, а не в token; веб-приложение принимает длинные материалы, поскольку сначала их обобщает чат-модель. В статье рассматриваются ограничение, стоимость, причины, по которым большая длина не означает лучшее следование промпту, а также двухэтапный конвейер: материал передаётся текстовой модели, а промпт — модели изображений.

«Длина вашего промпта отличается от длины промпта в ChatGPT, похоже, она ограничена 32K». Это ограничение 32K установлено не APIYI. Это официальный лимит API изображений OpenAI, и он измеряется в **символах**, а не в token. Но настоящий вопрос не в том, **можно ли отправить 32K**, а в том, **нужно ли вообще передавать модели изображений 32K исходного материала**. На этой странице объясняется, откуда берётся это ограничение, почему веб-приложение выглядит неограниченным, каковы две причины высокой стоимости длинного промпта и как организовать промпты для задач с большим количеством требований, например для рекламных креативов.

## Вопрос клиента: почему API ограничивает длину 32K, если ChatGPT этого не делает?

Обезличенный обмен сообщениями:

> Клиент: Длина вашего prompt отличается от длины prompt в ChatGPT. Похоже, действует ограничение в 32K.
> Мы: Ограничение есть. У кого бывает задача с изображением и prompt на 32K?
> Клиент: У многих. Рекламные креативы, размеры упаковки... Тогда я просто сам вызову Codex CLI.
> Мы: Для уточнения: prompt на 32 000 tokens?
> Клиент: Да. 32 000 символов на английском — это совсем немного.

Здесь перепутаны три разных понятия. Сначала разделим их:

| Понятие              | Что это                                                           | В данном случае                                                                                                                     |
| -------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Символы**          | Длина строки prompt                                               | Ограничение API изображений: **32 000 символов**                                                                                    |
| **tokens**           | Единица, в которой модель тарифицирует и считывает входные данные | 32 000 английских символов — это примерно 8K tokens; для китайского языка на один символ требуется больше tokens                    |
| **Контекстное окно** | Всё, что текстовая модель может удерживать в одном вызове         | Текстовые модели поддерживают от нескольких сотен тысяч до миллиона tokens; это не связано с ограничением prompt модели изображений |

Фраза «32 000 символов на английском — это совсем немного» относится к символам, и она справедлива. Однако веб-приложение ChatGPT, с которым сравнивает клиент, вообще использует другой путь.

## Откуда берётся ограничение в 32K

Официальное ограничение OpenAI API изображений для поля `prompt` (то же ограничение действует для `/v1/images/generations` и `/v1/images/edits`):

| Модель                                                                           | Ограничение промпта | Единица измерения |
| -------------------------------------------------------------------------------- | ------------------- | ----------------- |
| семейство gpt-image (включая `gpt-image-2.5-flare` / `sunburst` / `gpt-image-2`) | **32 000**          | символы           |
| DALL·E 3                                                                         | 4 000               | символы           |
| DALL·E 2                                                                         | 1 000               | символы           |

Источник: справочник OpenAI API, `developers.openai.com/api/reference/resources/images/methods/generate`.

<Info>
  Официальный релей APIYI не ужесточает это ограничение. При превышении 32 000 символов поставщик возвращает ошибку 400; точный текст ошибки принадлежит поставщику, а на этой странице граница не проверялась побайтно. Если вам нужно точное предельное значение, один вызов с вашим собственным ключом позволит его определить, а отклонённые запросы не тарифицируются.
</Info>

**Символы — это не tokens.** Тарификация и понимание моделью выполняются на основе tokens, а `usage.input_tokens_details.text_tokens` сообщает фактически использованные текстовые tokens для каждого вызова. Те же 32 000 символов — это около 8K tokens на английском языке и заметно больше на китайском, где каждый символ соответствует большему числу tokens и также несёт больше информации. Поэтому утверждения «32K английского текста — это мало» и «32K китайского текста — это много» могут быть одновременно верными.

## Почему веб-приложение ChatGPT выглядит безлимитным

То же самое относится к разделам [Как получать удовлетворяющие изображения](/ru/api-capabilities/image-generation-success-tips) и [Отклонения по соображениям безопасности](/ru/api-capabilities/image-safety-troubleshooting): **веб-приложение — это агент, а API — один атомарный вызов**.

* Вставьте длинный документ в ChatGPT — и читать его будет чат-модель, а не модель изображений. Ознакомившись с ним, чат-модель **сама создаст короткий промпт для изображения** и вызовет инструмент изображений с этим промптом. Модель изображений никогда не видит исходный материал. Вставки длиной более 10 000 символов автоматически преобразуются во вложения (справочный центр OpenAI, `help.openai.com`), что наглядно показывает: текст предназначен для чат-модели.
* Через API вы обращаетесь напрямую к модели изображений. Между вами и моделью нет никого, кто бы прочитал материал и принял решения за вас. Ограничение относится к уровню модели изображений, а веб-приложение никогда не предоставляет ей доступ к исходному материалу.
* Прощальная фраза клиента — «я просто сам вызову codex cli» — отражает правильный подход: попросить текстовую модель прочитать материал и создать промпт для изображения. Именно это веб-приложение делает в фоновом режиме, а приведённый ниже двухэтапный конвейер позволяет запустить такой процесс.

## Две составляющие стоимости длинного промпта

Сначала расходы, затем результаты.

**Деньги**: текстовый ввод в семействе gpt-image тарифицируется за token (\$5.00 за миллион token на `gpt-image-2.5`, см. [таблицу цен в обзоре](/ru/api-capabilities/gpt-image-2/overview)). Англоязычный промпт на 32 000 символов содержит около 8K token и стоит примерно \$0.04 за один вызов; для китайского языка стоимость выше. Сама по себе сумма небольшая, но при умножении на количество изображений и повторных попыток каждый вызов снова оплачивается. Если 90% промпта — это исходный материал, а не описание сцены, большая часть этих расходов не приносит пользы.

**Результаты**: больше деталей не означает лучшее следование требованиям. Если одновременно предъявить модели изображений сотни требований, они начинают конкурировать между собой; именно важные жёсткие ограничения (логотип не искажён, текст на упаковке точен, количество людей) оказываются погребёнными под остальными. В собственных рекомендациях OpenAI для промптов генерации изображений советует начать с одного–трёх ясных предложений, а затем добавить необходимые композицию, освещение и жёсткие ограничения (`openai.com/academy/image-generation`). Модели изображений нужна **высокая плотность информации с чёткими приоритетами**, а не большое количество слов.

Таким образом, утверждение «в профессиональной рекламе много требований» верно, но **подробный не означает длинный**. Шесть элементов в разделе [Расширенная генерация изображений](/ru/api-capabilities/image-advanced-workflow) и правило «не перегружайте промпт прилагательными» в [навыке “Доктор промптов для изображений”](/ru/api-capabilities/image-prompt-doctor) говорят об одном и том же.

## Два этапа: материалы в текстовую модель, промпт — в модель изображений

Когда за задачей генерации изображения действительно стоит 32K материалов, обычно это брендбук, спецификация упаковки, рекламный бриф или библия персонажа. Сначала эти материалы следует передать текстовой модели, которая сведёт их к одному ёмкому промпту для модели изображений:

| Этап        | Входные данные                                                | Модель                               | Результат                                                             |
| ----------- | ------------------------------------------------------------- | ------------------------------------ | --------------------------------------------------------------------- |
| ① Сведение  | Брендбук / спецификация упаковки / рекламный бриф любой длины | Текстовая модель, например `gpt-5.6` | Структурированный промпт для изображения объёмом от 1K до 3K символов |
| ② Генерация | Промпт с этапа ① (значительно меньше 32K)                     | `gpt-image-2.5-sunburst`             | Изображение                                                           |

Шаблон результата сведения добавляет три раздела, специфичных для рекламы, поверх шести элементов:

| Раздел                                   | Что указывать                                                                                                             |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Жёсткие ограничения (сначала)**        | Логотип не искажать, текст на упаковке воспроизводить дословно, количество людей, соотношение сторон, значение цвета фона |
| **Цель и размещение**                    | Что это за реклама, где она будет размещаться, какие эмоции должна вызывать у зрителя                                     |
| **Объект и обязательные элементы**       | Что представляет собой продукт, какие элементы упаковки должны присутствовать в точности                                  |
| **Композиция и негативное пространство** | Положение продукта, положение людей, кадрирование, пустая область, зарезервированная под текст                            |
| **Визуальная часть**                     | Обстановка, палитра, освещение, материалы, фотографический стиль                                                          |
| **Не делать**                            | Что нельзя добавлять и что нельзя изменять                                                                                |

<Steps>
  <Step title="Передавайте материалы в текстовую модель как есть">
    Брендбук, спецификация или бриф: предварительная обработка не требуется, контекстное окно текстовой модели достаточно велико. В системном промпте укажите шаблон результата, ограничение по количеству символов (хорошая цель — не более 2 500 символов) и правило «сначала жёсткие ограничения».
  </Step>

  <Step title="Проверяйте промпт ограничителем длины">
    Проверьте `len(prompt)`; если его длина превышает 32 000 символов, попросите текстовую модель ещё раз выполнить сжатие. Сведённый промпт обычно занимает одну-две тысячи символов, поэтому этот шаг служит защитой.
  </Step>

  <Step title="Сохраните промпт, затем вызовите модель изображений">
    Сохраните сведённый промпт и повторно используйте только его для генерации. Повторные попытки, изменения размера и замена модели больше не требуют повторного чтения материалов и повторной оплаты tokens.
  </Step>

  <Step title="При изменении материалов повторно выполняйте только первый этап">
    Редизайн упаковки или обновление брифа: выполните сведение заново. Код и параметры генерации остаются без изменений.
  </Step>
</Steps>

Минимальная реализация (OpenAI SDK, оба этапа используют один ключ):

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["APIYI_API_KEY"],
    base_url="https://api.apiyi.com/v1",
)

DISTILL_SYSTEM = """You are an ad-creative prompt engineer. Read all the material the user provides and output one prompt that can be sent directly to an image model.

Write in this order, one line per section:
1 Hard constraints: logo not distorted, packaging text verbatim, number of people, aspect ratio, background colour value
2 Purpose and placement
3 Subject and packaging elements that must be kept
4 Composition and negative space: product position, people position, framing, area reserved for copy
5 Visual: setting, palette, one identifiable key light, materials, photographic style
6 Do not

Rules:
- At most 2500 characters. Output only the prompt body, no explanation, no headings
- Do not invent anything absent from the material, especially brand names and packaging text
- Do not use vague quality words such as 8K, ultra HD, masterpiece, perfect
- Keep anything the material specifies explicitly, do not rewrite it"""

PROMPT_LIMIT = 32000  # OpenAI Images API prompt limit, in characters


def distill(brief: str, model: str = "gpt-5.6") -> str:
    resp = client.chat.completions.create(
        model=model,
        messages=[
            {"role": "system", "content": DISTILL_SYSTEM},
            {"role": "user", "content": brief},
        ],
    )
    prompt = resp.choices[0].message.content.strip()
    if len(prompt) > PROMPT_LIMIT:
        # rare; compress one more round if it happens
        prompt = distill(f"Compress the following prompt to under 2500 characters, keeping every hard constraint:\n\n{prompt}", model)
    return prompt


def generate(prompt: str, size: str = "1536x1024", quality: str = "high") -> bytes:
    import base64
    resp = client.images.generate(
        model="gpt-image-2.5-sunburst",
        prompt=prompt,
        size=size,
        quality=quality,
        timeout=600,
    )
    return base64.b64decode(resp.data[0].b64_json)


if __name__ == "__main__":
    brief = open("brief.md", encoding="utf-8").read()   # brand book + packaging spec + ad requirements, any length
    prompt = distill(brief)
    open("prompt.txt", "w", encoding="utf-8").write(prompt)   # persist; generation replays only this
    open("ad.png", "wb").write(generate(prompt))
```

<Tip>
  Архивирование сведённого промпта вместе с параметрами генерации — это **единственный надёжный способ воспроизведения** для этой линейки продуктов (семейство GPT-Image не предоставляет seed). См. раздел 5 документации [Расширенная генерация изображений](/ru/api-capabilities/image-advanced-workflow).
</Tip>

## Когда действительно нужен длинный prompt

В некоторых случаях prompt действительно становится длиннее, но ни один из них даже близко не приближается к 32K:

* **Редактирование нескольких изображений**: ссылайтесь на эталонные изображения как на «изображение 1 / изображение 2 / изображение 3» и указывайте, что именно нужно взять из каждого. Несколько сотен символов.
* **Текст внутри изображения**: надписи, плакаты и текст на упаковке необходимо указывать дословно, а не оставлять на усмотрение модели. От нескольких десятков до нескольких сотен символов.
* **Общий префикс для серии**: блок с описанием стиля, освещения и композиции, общий для пакета. Менее тысячи символов.

Вместе эти элементы обычно занимают от двух до трёх тысяч символов. Если prompt приближается к 32K, вероятно, в него были вставлены исходные материалы.

## Краткая справка

* **32 000 символов — это официальный лимит API изображений OpenAI**, подсчитываемый в символах, а не в token; он одинаков для `/generations` и `/edits`, и официальный релей APIYI его не ужесточает.
* **Символы, token и контекстное окно — это три разные вещи**: 32 тыс. символов на английском — это примерно 8 тыс. token, для китайского текста — больше; контекстное окно текстовой модели никак не связано с лимитом промпта модели изображений.
* **«Нет лимита» в веб-приложении — иллюзия**: чат-модель читает материал и самостоятельно составляет короткий промпт для инструмента изображений; модель изображений никогда не сталкивается с ограничением в 32 тыс. символов.
* **Подробный — не значит длинный**: текстовый ввод тарифицируется по token, и каждая повторная попытка оплачивается снова; сотни конкурирующих требований скрывают жёсткие ограничения.
* **Два этапа**: сжать материал с помощью текстовой модели в структурированный промпт объёмом от 1 до 3 тыс. символов, разместив жёсткие ограничения в начале, сохранить его, а для генерации повторно отправлять только промпт.

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

* [Как получать впечатляющие изображения](/ru/api-capabilities/image-generation-success-tips)
* [Отклонения по соображениям безопасности](/ru/api-capabilities/image-safety-troubleshooting)
* [Расширенная генерация изображений: рабочий процесс и реалистичность](/ru/api-capabilities/image-advanced-workflow)
* [Навык диагностики промптов для изображений](/ru/api-capabilities/image-prompt-doctor)
* [Справочник API для преобразования текста в изображения](/ru/api-capabilities/gpt-image-2/text-to-image)
