СТАТТЯ

OpenAI Decisions API (preview): класифікація і роутинг у bulk-зображеннях Bubble через BIAIG

Де в async-пайплайні поставити gate перед записом у каталог, як не перезапускати весь generation batch при retry, і чому сьогодні Batch + Moderation — документований fallback, а Decisions — гіпотеза до офіційної специфікації.

Контекст

На DevDay (29.09.2026) OpenAI оголосила Decisions API у обмеженому preview (не GA). За recap у OpenAI Developer Community сервіс на базі Luna класифікує вхід, маршрутизує запит або обирає дію з заданого розробником скінченного списку відповідей. TechCrunch (30.09.2026) цитує ідею фіксованого набору опцій (зокрема категорії для зображень) і заявлену низьку затримку при збереженні image understanding; публічної hands-on валідації на старті не було.

Для high-volume batch між генерацією і публікацією в каталозі це потенційний шар: policy, NSFW, brand drift — до commit. Ця нота доповнює лінію async batch + public URL результатів; не дублює статті про Batch API vs Flare чи vendor-risk Midjourney/Qwen. Схожий розбір: Qwen-Image-2.1 vs closed models: vendor. Про це окремо: SenseNova U1 Pro і 8K.

Чесно про джерела: публічного API reference для Decisions на момент Scout-pass не знайдено. Затримки (~150 ms у вторинних explainers проти ~1.6 s Luna у пресі), семантика confidence і batch-підтримка — не верифіковані, доки OpenAI не опублікує docs, pricing і список batch endpoints.

Bubble + BIAIG: що можна стверджувати

Публічно biiaImagine™ описує масштабований візуальний контент для каталогів; єдиного публічного spec «Bubble.io ↔ BIAIG» (контракт запису в каталог, idempotency, ідентифікатори bulk-route) Scout не знайшов. Нижче — архітектурна гіпотеза для валідації по внутрішніх BIAIG/Bubble docs, не опис shipped продукту. Про це окремо: Mixboard offline 28.09: експорт промптів. Поруч із цим: Фрагментована ніша bulk-tools: Apify spreadsheet.

Куди вставити класифікацію в пайплайні

Типовий async ланцюг (редакційна модель):

  1. Bulk generate (Batch /v1/images/generations або ваш bulk-route у BIAIG) → assets на стабільних public URL (OpenAI для moderation batch рекомендує remote image_url).
  2. Classify / moderate — окремий batch або sync gate.
  3. Catalog write лише для рядків зі статусом approved; quarantine / review — без publish.
  4. Retry regenerate — лише rejected на інший bulk-route (інша модель/профіль промпту), без другого повного job по всьому JSONL. Про це окремо: Китай ВПС і downstream liability. Про це окремо: FLUX 3 Image −50% до.

OpenAI Community (batch multi-step): запити в одному batch незалежні; багатокрокові flows (generate → classify) — послідовні batches у коді оркестратора (Bubble backend, workflow engine, BIAIG worker).

Місце для Decisions (preview), коли з’явиться batch

Якщо /v1/decisions (або еквівалент) потрапить у список batch endpoints з підтримкою image context:

  • Питання з вашим label set: approve_catalog | nsfw_block | policy_violation | brand_drift_retry_alt_route | human_review.
  • Вхід: image_url + опційно metadata (SKU, custom_id, route id).
  • Вихід (очікувано з анонсів, не контракт): обрана відповідь + confidence — пороги задаєте ви.

Brand drift і кастомна policy не покриваються фіксованими категоріями Moderation — тут Decisions (або Structured Outputs / Luna) логічніші, якщо preview стабілізується.

Документований fallback сьогодні: Batch + Moderation

Batch API підтримує /v1/moderations з omni-moderation-latest, multimodal image_url, custom_id на рядок. Moderation docs: flagged, categories, category_scores; sync endpoint позиціонують як безкоштовний — зручно для high-volume harm/safety gate.

Обмеження: категорії OpenAI-defined, не ваш brand checklist. Для drift лишаються окремі кроки (інший batch, інший API) або людський review.

Роутинг retry без другого повного generation job

Патерн, узгоджений з batch-семантикою:

Крок Дія
G1 Generation batch; кожен рядок: custom_id = стабільний ключ каталогу (рядок/SKU).
C1 Classification/moderation batch; той самий custom_id; URL з G1.
Merge У Bubble/BIAIG state: approved, retry_route_B, quarantine.
G2 Новий JSONL лише з custom_id, де retry_route_B; інший bulk-route id у тілі запиту.
C2 Повторна класифікація лише для G2.

Idempotency: успішні assets з G1 не дублюйте в G2. Catalog write — один раз на custom_id після фінального approved.

Операційні ризики (з Scout): TTL/private URL ламають classify batch; помилкові пороги → off-brand publish; preview API — breaking changes; sequential batches — складніший cost accounting.

Практичний чеклист для Bubble-розробника

  1. Зафіксуйте контракт до catalog commit (internal BIAIG): які поля блокують publish.
  2. Зберігайте custom_id end-to-end (generate → classify → retry).
  3. Документуйте bulk-route як tuple (provider, model, prompt profile) — retry = зміна route, не новий «повний» job по всьому каталогу.
  4. Production gate зараз: Batch moderations для NSFW/harm; custom labels — окремий шар + human queue для preview-моделей.
  5. Decisions — pilot на підмножині traffic, поки немає official schema, pricing і batch support.

Відкриті питання (не вирішуйте в статті як факт)

  • Чи Decisions у Batch, ліміти image JSONL, abstain/unknown.
  • Pricing vs безкоштовні batch moderations.
  • Перетин «safety protections» Decisions з Moderation для кастомних labels.
  • Пороги false positive/negative для catalog scale і обов’язковість human review у preview.

Відкриті питання (не вирішуйте в статті як факт)


Джерела: DevDay community recap, TechCrunch, OpenAI Batch/Moderation docs, OpenAI Community (multi-step batch), вторинні explainers (The New Stack, Vercel) — latency/confidence з останніх трактувати як неперевірені.

← Усі статті