构建不会超支的批量图像生成流水线
通过自己的持久队列运行 GPT Image 2、Flare 或 Sunburst。每项任务设置 n=1,限制 worker 与尝试次数,重试结果不明的请求前先核对 usage。
·
每个任务排队生成一张图片
GPT Image 2、GPT Image 2.5 Flare 与 GPT Image 2.5 Sunburst 使用相同的 OpenAI Images 接口、密钥和预付余额。Flare 适合较快的日常任务,Sunburst 侧重更精细的编辑。请按通过验收的结果比较模型。三者的已发布 token 费率相同。
每个队列任务使用 n=1,以便追踪图片和费用。Images 请求接受 n=1..10,并执行顺序原生调用,这不是异步批处理服务。队列顺序、并发、重试与预算由应用控制。
另见: 图像生成 API 的真实计价方式
每个资产一个持久任务,而不是每个提示词
- 01入队前先创建稳定 asset ID 与不可变 brief——提示词、参考图、受保护特征。
- 02在任务 payload 中固定模型、协议、输出尺寸与最大尝试次数,让重试复现同一决策而不是新决策。
- 03给每个 worker 分配有界的队列切片,一次提供商请求只对应一个候选项;绝不要求模型内部批量。
- 04把 request ID、终态 usage、输出 checksum 与验证结论随资产版本原子保存。
- 05只有存储与下游发布确认同一资产版本后,任务才算完成。
按实测 token 用量制定预算
| 每百万 token 用量 | 官方 | 普通 B2C · 五折 |
|---|---|---|
| 文本输入 | $5 | $2.50 |
| 缓存文本输入 | $1.25 | $0.625 |
| 图像输入 | $8 | $4 |
| 缓存图像输入 | $2 | $1 |
| 图像输出 | $30 | $15 |
例如,一次编辑使用 900 个新文本输入 token、1,200 个新图像输入 token 和 4,000 个图像输出 token,官方费用为 $0.1341,普通 B2C 为 $0.06705。这些 token 数仅为示例,并非每张图片的保证值。请用实际终态 usage 和对应请求扣费进行测量。
目录或批量任务的成本应为全部结算费用除以通过验收的图片数,也要计入未通过审核的付费输出。GPT Image 没有免费的 countTokens 估算器,请先付费测量少量样本,并在启动队列前设置消费上限。
限制每一个倍增因素,而不只是单价
| 倍增因素 | 保护措施 |
|---|---|
| 资产数 | 明确队列长度与 campaign 预算 |
| 变体 | 每个资产最大候选数 |
| 重试 | 仅明确未开始的尝试;总 deadline |
| 分辨率 | 检查返回尺寸;size 引导宽高比 |
| 参考图 | 只发送 brief 必需文件 |
| 并发 | 小型 worker 上限与 429 cooling |
密钥的终身消费上限是所有应用层保护措施失效后的最后一道资金边界。把它设为 campaign 预算加实测安全余量,而不是账户余额。
重试、冷却与可观测性规则
- 图像字节或完整提供商响应交付后绝不重试——这种重试是第二次付费候选项,而不是恢复。
- 歧义超时属于核对工作:先按 request ID 对照仪表板扣费,再判断没有发生可计费生成。
- 遇到 429 时遵守 Retry-After、provider cooling 与 jitter,并受总 deadline 约束;立即扇出会放大容量事件。
- 统计尝试次数、验收资产、结算 nanoUSD 与验证失败原因;提示词和密钥不进入 metrics。
- 对每个验收资产成本与失败占比告警,而不只看 HTTP 成功率——全绿的批次也可能很昂贵。
每个验收资产的结算成本才是批次真实的单位经济性:它把 token 价格、分辨率、重试与质量拒绝折进业务真正购买的那个数字。
用独立密钥与预算隔离批量通道
让批量 worker 使用带终身消费上限和过期时间的独立密钥:队列出 bug 时最多耗尽 campaign 预算,而不会动到账户。 预付余额永不过期,也没有需要按量选择的订阅。
- 每个工作负载一把密钥:批量生成绝不与交互或编辑流量共用密钥。
- campaign 结束前,把每笔结算扣费与其 request ID 逐一对账。
- 每个新 campaign 开始前重新检查终身消费上限,而不是只在初始化时设置一次。
常见问题
一次 API 请求能生成整个批次吗?
Images 请求接受 n=1..10 并顺序执行原生调用。大型任务请每个队列项使用 n=1,由应用控制并发和预算。没有异步 Images batch 接口。
如何阻止失控的图像批处理?
组合使用:带终身消费上限的独立密钥、明确队列长度、有界 worker、每资产最大尝试次数与总 campaign 预算。各层独立失效,而密钥级上限是即使其他全部失灵仍然成立的边界。
429 应该立即重试吗?
不应该。遵守 Retry-After 与 provider cooling,加入 jitter,并为每个任务保留总 deadline。容量事件中的立即扇出会把减速变成你自己花钱造成的故障。
流水线应存 base64 还是 URL?
API 响应是传输层而不是存储层。base64 只解码一次,计算 checksum 后把字节存入自有对象存储,再发布优化过的 WebP/AVIF 衍生品;绝不能把原始 API payload 直接当店面资产。
五折适用于批次中的每次调用吗?
普通 B2C 适用:每次准入调用的官方 usage(生成或编辑)都按五折计。B2B 按协商策略,OpenKeys 按官方价格 1:1。折扣从不证明某个模型当前对特定密钥可用。