Batch pipeline генерации изображений, который не выйдет за бюджет
Запускайте GPT Image 2, Flare или Sunburst через свою очередь задач. Задайте n=1, ограничьте число воркеров и попыток, сверяйте usage перед повтором запроса с неизвестным результатом.
·
Очередь с одним изображением на задачу
GPT Image 2, GPT Image 2.5 Flare и GPT Image 2.5 Sunburst используют одни маршруты OpenAI Images, ключ и предоплаченный баланс. Flare подходит для быстрой повседневной работы, Sunburst — для более точного редактирования. Сравнивайте модели по результатам, которые прошли вашу проверку. У всех трёх одинаковые опубликованные ставки за токены.
Используйте n=1 для каждой задачи очереди, чтобы отслеживать изображение и его стоимость. Images принимает n=1..10 и выполняет последовательные нативные вызовы; это не асинхронный batch-сервис. Порядок очереди, параллелизм, повторы и бюджет контролирует ваше приложение.
Читайте также: Как на самом деле устроена цена API генерации изображений
Один durable job на ассет, а не на prompt
- 01Создайте stable asset ID и immutable brief — prompt, references, protected traits — до того, как что-либо попадёт в queue.
- 02Зафиксируйте в job payload model, protocol, output size и maximum attempts, чтобы retry воспроизводил то же решение, а не принимал новое.
- 03Дайте каждому worker ограниченный срез queue и резервируйте один provider request на один candidate; не просите модель о внутреннем batch.
- 04Атомарно сохраняйте request ID, terminal usage, output checksum и validation verdict вместе с версией ассета.
- 05Завершайте job только после того, как storage и downstream publication подтвердили одну и ту же версию ассета.
Бюджет по измеренному расходу токенов
| Расход за 1 млн токенов | Официально | Обычный B2C · скидка 50% |
|---|---|---|
| Входной текст | $5 | $2.50 |
| Кешированный текст | $1.25 | $0.625 |
| Входные изображения | $8 | $4 |
| Кешированные изображения | $2 | $1 |
| Выходные изображения | $30 | $15 |
Например, редактирование с 900 свежими текстовыми входными токенами, 1 200 входными токенами изображения и 4 000 выходными токенами изображения стоит $0.1341 официально, или $0.06705 для обычного B2C. Число токенов в примере не гарантируется для каждой картинки. Для своих расчётов используйте итоговый usage и списание по соответствующему запросу.
Для каталога или пакетной обработки разделите все списания на число принятых изображений. Включайте оплаченные результаты, которые не прошли проверку. У GPT Image нет бесплатного countTokens: измерьте небольшую оплачиваемую выборку и задайте лимит расхода до запуска очереди.
Ограничьте каждый множитель, а не только цену
| Множитель | Guardrail |
|---|---|
| Assets | Явная queue length и campaign budget |
| Variants | Maximum candidates per asset |
| Retries | Только proven not-started; total deadline |
| Resolution | Проверяйте размеры результата; size задаёт пропорции |
| References | Только нужные brief файлы |
| Concurrency | Небольшой worker ceiling с 429 cooling |
Lifetime spending limit ключа — последняя денежная граница, если откажут все application-level guardrails. Ставьте его равным бюджету кампании плюс измеренный запас, а не балансу аккаунта.
Правила retry, cooling и observability
- Никогда не делайте retry после доставки image bytes или complete provider response — такой retry оплачивает второй candidate, а не восстановление.
- Ambiguous timeout — это reconciliation: сверьте request ID с charge в дашборде, прежде чем решить, что billable generation не было.
- На 429 соблюдайте Retry-After, provider cooling и jitter в пределах total deadline; немедленный fan-out усиливает capacity event.
- Считайте attempts, accepted assets, settled nanoUSD и причины validation failures; не допускайте prompts и keys в metrics.
- Алертьте на cost per accepted asset и failure share, а не только на HTTP success rate — полностью зелёный batch может оказаться дорогим.
Settled cost per accepted asset — реальная unit economics batch: она складывает token price, resolution, retries и quality rejects в единственное число, которое бизнес действительно покупает.
Изолируйте batch lane отдельным ключом и бюджетом
Запускайте batch worker на dedicated key с lifetime spending limit и expiration date: тогда баг в queue потратит максимум бюджет кампании, но не аккаунт. Prepaid balance не сгорает, а подписки, которую нужно подбирать по объёму, нет.
- Один ключ на workload: batch generation никогда не делит ключ с interactive или editing трафиком.
- Сверяйте каждый settled charge с его request ID до закрытия кампании.
- Перепроверяйте lifetime spending limit перед каждой новой кампанией, а не один раз при настройке.
Prepaid-тарифы без сгорания: вносите ровно бюджет кампании →
Частые вопросы
Можно ли создать всю партию одним запросом?
Images принимает n=1..10 и выполняет последовательные нативные вызовы. Для больших партий используйте n=1 на задачу очереди и контролируйте параллелизм и бюджет в приложении. Асинхронного batch-маршрута Images нет.
Как остановить runaway image batch?
Скомбинируйте dedicated key с lifetime spending limit, явную queue length, bounded workers, per-asset maximum attempts и total campaign budget. Каждый слой отказывает независимо, а key-level limit — граница, которая держится, даже если все остальные сломались.
Нужно ли немедленно retry 429?
Нет. Соблюдайте Retry-After и provider cooling, добавляйте jitter и держите total deadline на job. Немедленный fan-out во время capacity event превращает замедление в outage, который вы сами оплатили.
Хранить base64 payload или URL?
Ответ API — это транспорт, а не хранилище. Декодируйте base64 один раз, посчитайте checksum и сохраните байты в собственном object storage, затем публикуйте оптимизированные WebP/AVIF derivatives; сырый payload API нельзя отдавать как storefront asset.
Скидка 50% действует на каждый call в batch?
Для обычных B2C — да, на official usage каждого admitted call, generation или edit. У B2B действует согласованная политика, а OpenKeys тарифицируются 1:1 по официальной цене. Скидка никогда не доказывает, что модель сейчас доступна конкретному ключу.
Создайте аккаунт, пополните баланс и выпустите API-ключ для поддерживаемых моделей Claude, GPT и Gemini.