Настройка инструментов

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

  1. 01Создайте stable asset ID и immutable brief — prompt, references, protected traits — до того, как что-либо попадёт в queue.
  2. 02Зафиксируйте в job payload model, protocol, output size и maximum attempts, чтобы retry воспроизводил то же решение, а не принимал новое.
  3. 03Дайте каждому worker ограниченный срез queue и резервируйте один provider request на один candidate; не просите модель о внутреннем batch.
  4. 04Атомарно сохраняйте request ID, terminal usage, output checksum и validation verdict вместе с версией ассета.
  5. 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
VariantsMaximum 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.