Вопрос клиента: почему API ограничивает длину 32K, если ChatGPT этого не делает?
Обезличенный обмен сообщениями:Клиент: Длина вашего prompt отличается от длины prompt в ChatGPT. Похоже, действует ограничение в 32K. Мы: Ограничение есть. У кого бывает задача с изображением и prompt на 32K? Клиент: У многих. Рекламные креативы, размеры упаковки… Тогда я просто сам вызову Codex CLI. Мы: Для уточнения: prompt на 32 000 tokens? Клиент: Да. 32 000 символов на английском — это совсем немного.Здесь перепутаны три разных понятия. Сначала разделим их:
Откуда берётся ограничение в 32K
Официальное ограничение OpenAI API изображений для поляprompt (то же ограничение действует для /v1/images/generations и /v1/images/edits):
developers.openai.com/api/reference/resources/images/methods/generate.
usage.input_tokens_details.text_tokens сообщает фактически использованные текстовые tokens для каждого вызова. Те же 32 000 символов — это около 8K tokens на английском языке и заметно больше на китайском, где каждый символ соответствует большему числу tokens и также несёт больше информации. Поэтому утверждения «32K английского текста — это мало» и «32K китайского текста — это много» могут быть одновременно верными.
Почему веб-приложение ChatGPT выглядит безлимитным
То же самое относится к разделам Как получать удовлетворяющие изображения и Отклонения по соображениям безопасности: веб-приложение — это агент, а API — один атомарный вызов.- Вставьте длинный документ в ChatGPT — и читать его будет чат-модель, а не модель изображений. Ознакомившись с ним, чат-модель сама создаст короткий промпт для изображения и вызовет инструмент изображений с этим промптом. Модель изображений никогда не видит исходный материал. Вставки длиной более 10 000 символов автоматически преобразуются во вложения (справочный центр OpenAI,
help.openai.com), что наглядно показывает: текст предназначен для чат-модели. - Через API вы обращаетесь напрямую к модели изображений. Между вами и моделью нет никого, кто бы прочитал материал и принял решения за вас. Ограничение относится к уровню модели изображений, а веб-приложение никогда не предоставляет ей доступ к исходному материалу.
- Прощальная фраза клиента — «я просто сам вызову codex cli» — отражает правильный подход: попросить текстовую модель прочитать материал и создать промпт для изображения. Именно это веб-приложение делает в фоновом режиме, а приведённый ниже двухэтапный конвейер позволяет запустить такой процесс.
Две составляющие стоимости длинного промпта
Сначала расходы, затем результаты. Деньги: текстовый ввод в семействе gpt-image тарифицируется за token ($5.00 за миллион token наgpt-image-2.5, см. таблицу цен в обзоре). Англоязычный промпт на 32 000 символов содержит около 8K token и стоит примерно $0.04 за один вызов; для китайского языка стоимость выше. Сама по себе сумма небольшая, но при умножении на количество изображений и повторных попыток каждый вызов снова оплачивается. Если 90% промпта — это исходный материал, а не описание сцены, большая часть этих расходов не приносит пользы.
Результаты: больше деталей не означает лучшее следование требованиям. Если одновременно предъявить модели изображений сотни требований, они начинают конкурировать между собой; именно важные жёсткие ограничения (логотип не искажён, текст на упаковке точен, количество людей) оказываются погребёнными под остальными. В собственных рекомендациях OpenAI для промптов генерации изображений советует начать с одного–трёх ясных предложений, а затем добавить необходимые композицию, освещение и жёсткие ограничения (openai.com/academy/image-generation). Модели изображений нужна высокая плотность информации с чёткими приоритетами, а не большое количество слов.
Таким образом, утверждение «в профессиональной рекламе много требований» верно, но подробный не означает длинный. Шесть элементов в разделе Расширенная генерация изображений и правило «не перегружайте промпт прилагательными» в навыке “Доктор промптов для изображений” говорят об одном и том же.
Два этапа: материалы в текстовую модель, промпт — в модель изображений
Когда за задачей генерации изображения действительно стоит 32K материалов, обычно это брендбук, спецификация упаковки, рекламный бриф или библия персонажа. Сначала эти материалы следует передать текстовой модели, которая сведёт их к одному ёмкому промпту для модели изображений:Передавайте материалы в текстовую модель как есть
Проверяйте промпт ограничителем длины
len(prompt); если его длина превышает 32 000 символов, попросите текстовую модель ещё раз выполнить сжатие. Сведённый промпт обычно занимает одну-две тысячи символов, поэтому этот шаг служит защитой.Сохраните промпт, затем вызовите модель изображений
При изменении материалов повторно выполняйте только первый этап
Когда действительно нужен длинный prompt
В некоторых случаях prompt действительно становится длиннее, но ни один из них даже близко не приближается к 32K:- Редактирование нескольких изображений: ссылайтесь на эталонные изображения как на «изображение 1 / изображение 2 / изображение 3» и указывайте, что именно нужно взять из каждого. Несколько сотен символов.
- Текст внутри изображения: надписи, плакаты и текст на упаковке необходимо указывать дословно, а не оставлять на усмотрение модели. От нескольких десятков до нескольких сотен символов.
- Общий префикс для серии: блок с описанием стиля, освещения и композиции, общий для пакета. Менее тысячи символов.
Краткая справка
- 32 000 символов — это официальный лимит API изображений OpenAI, подсчитываемый в символах, а не в token; он одинаков для
/generationsи/edits, и официальный релей APIYI его не ужесточает. - Символы, token и контекстное окно — это три разные вещи: 32 тыс. символов на английском — это примерно 8 тыс. token, для китайского текста — больше; контекстное окно текстовой модели никак не связано с лимитом промпта модели изображений.
- «Нет лимита» в веб-приложении — иллюзия: чат-модель читает материал и самостоятельно составляет короткий промпт для инструмента изображений; модель изображений никогда не сталкивается с ограничением в 32 тыс. символов.
- Подробный — не значит длинный: текстовый ввод тарифицируется по token, и каждая повторная попытка оплачивается снова; сотни конкурирующих требований скрывают жёсткие ограничения.
- Два этапа: сжать материал с помощью текстовой модели в структурированный промпт объёмом от 1 до 3 тыс. символов, разместив жёсткие ограничения в начале, сохранить его, а для генерации повторно отправлять только промпт.