做图功能一上线,最容易出问题的不是出图质量,而是账单——同一个按钮,有人按张扣、有人按步扣,缓存没做、重试没限,月底一看用量翻了好几倍。这篇不讲玄学,只给一套能落地的设置顺序:先确认口径,再定按量阶梯,最后配好限流与监控。文中不写死任何数字,具体单价与额度请到站内对应页面按当时数据核对。
做图功能一上线,最容易出问题的往往不是出图质量,而是账单。同一个按钮,有人按张扣、有人按步扣,缓存没做、重试没限,月底一看用量翻了好几倍,还说不清钱花哪了。这篇只给一套能落地的设置顺序:先确认口径,再定按量阶梯,然后配缓存与限流,最后留好对账的口子。
提醒一句:文中不写死任何数字,单价、额度、速率这些都会变,一切以站内页面当时的数据为准。你要做的是把设置流程固定下来,数字每次去核对一遍即可。
第一步:先把计费口径问清楚,再谈设置
口径不清,后面所有阶梯都是白设。同一张图,按张、按步、按分辨率档位、按订阅额度折算,成本可能差出好几倍。先到 /official-api 把候选供应商的口径列出来,需要细看某家的说明就去 /official-api/providers/openai 这类单页对照当时的描述。
- 按张计费
- 每出一张有效图算一次,适合流程固定、单张成本可预期的场景
- 按步计费
- 按生成步数累加,抽卡次数多或参数高时费用涨得快,必须配合重抽限制
- 按分辨率档位
- 同一提示词换个尺寸就换价,前端别把尺寸做成用户随便调
- 订阅额度折算
- 额度内看似免费,超出后单价可能更高,要单独算超量那一档
还有三个容易漏的点必须问清:失败重试算不算钱、审核拦截或超时未出图算不算钱、并发与速率限制是挂在账号上还是挂在 Key 上。这三点直接决定你的重试策略能放多宽、多个人共用一个账号时阶梯怎么拆。
第二步:按量阶梯怎么设才不失控
- 先拿两个数跑一周真实用量,记录日均张数与峰值张数。没有真实数据就先用灰度流量估算,别拍脑袋。
- 定档位位置阶梯卡在峰值之上、日均的两三倍处,留出增长空间,不要一上来就顶格。
- 按业务线拆免费试用、内部测试、正式客户各自独立上限,按 Key 或子账号拆,而不是全站一刀切。
- 定超限动作每个档位配一个硬动作:到线就降分辨率、进队列还是直接拒绝,提前写进产品逻辑。
- 定期回看阶梯值会过时,隔段时间回 /price-watch 和用量页看趋势再调。
| 档位对象 | 建议上限依据 | 到线动作 |
|---|---|---|
| 内部测试 Key | 接近真实峰值即可 | 直接拒绝并通知负责人 |
| 免费试用用户 | 按人均少量张数 | 降级到低分辨率档 |
| 正式客户 | 按合同或套餐额度 | 进队列,超时再拒绝 |
| 批量任务账号 | 按批次总量 | 暂停批次,等人工放行 |
判断标准很简单:如果你说不出某个 Key 到线后会发生什么,那这个档位就是没设完。这不是技术问题,是产品决策,必须提前定。
第三步:缓存与去重,比砍单价省得多
砍单价要谈判,做缓存只要写代码,而且不伤用户体验。同一提示词加同一参数的重复请求直接命中缓存返回,这是性价比最高的一招。注意缓存键要归一化:把提示词做去空格、统一大小写处理,参数里凡是有随机性的字段(比如随机种子)都不能进键,否则命中率会掉到接近零。
- 相同提示词加相同参数的请求走结果缓存,命中即返回,不触发新的调用
- 批量场景先合并再拆分,减少每次调用的固定开销,单次能传多少看接口说明页
- 用户反复重抽同一个需求时,考虑一次多出几张让其挑选,通常比反复调用更省
- 缓存要设过期时间与容量上限,否则命中率上去了、存储和一致性又出问题
- 付费用户的个性化结果如果依赖随机性,可以给一个「不缓存」的开关,别一刀切
什么情况下缓存不适用:强实时、强随机、每次都必须有差异的出图场景,缓存命中等于给用户看重复内容,这时候宁可关掉缓存或只缓存中间结果。
第四步:限流、标注与对账三件套
限流防的是失控,标注防的是扯皮,对账防的是漏单。三件都要做,缺一件都会在月底变成麻烦。限流按 Key 设日额度与分钟速率,超限返回明确错误码,前端给友好提示,别让用户以为是自己的网慢。
- 每次调用记录用量字段(张数、步数或折算值)与请求 ID,出问题能定位到具体一笔
- 每周对一次账:平台后台用量与自己的记录对不上时,先查时区,再查失败请求,最后查是否有人用了别的 Key
- 中转或第三方通道要额外核对计费口径是否与官方一致,不能只看单价
- 给审核拦截、超时、失败重试单独打标,这些往往是账单异常的来源
- 预留一条告警线,日用量突然翻倍时先通知再放量,而不是等月底看账
核对通道可信度时,可以参考 /tools/verify 的实测思路,再到 /sites 目录里看对应记录。注意这些页面上的信息也会变,判断时以你当次实测为准,不要拿旧截图当结论。
什么情况下这套设置不适用
不是所有项目都值得配复杂阶梯。用量极小、每天几十张的个人项目,搭阶梯加监控的维护成本可能比省下的钱更高,直接设一个日上限就够,简单可靠。
| 场景 | 是否适用 | 替代做法 |
|---|---|---|
| 个人小项目,用量极低 | 不适用 | 只设一个日上限 |
| 强实时交互,必须立刻出图 | 部分不适用 | 阶梯放宽,不做排队降级 |
| 口径不明的第三方通道 | 不适用 | 小额度跑通再放量 |
| 多业务线共用一个账号 | 适用 | 按 Key 拆档位独立限流 |
判断标准:如果一套设置的维护动作需要专人每周花大量时间去调,而节省下来的钱远低于这个人力,那就该简化。技术方案要为业务服务,不是反过来。
下一步把候选供应商的计费口径、费率与速率限制逐个核对一遍,把口径写成一行备注再定阶梯。去站内的官方 API 资料页看当时的数字。→常见问题
按张和按步到底差在哪,设置上要注意什么?
按张是你拿到几张图就算几次,按步是生成过程走了多少步就算多少,同一个需求在按步口径下可能因为重试或多轮采样明显变贵。设置时前者重点控张数与重试次数,后者还要控步数与迭代轮次,具体口径差别可以到 /official-api 按当时说明核对。
阶梯上限设多少合适?我怕设小了用户投诉,设大了账单爆。
没有通用数字,正确做法是先跑一段真实用量再定:把日上限设在正常峰值的合理倍数处,同时保证到线后的行为是明确且可解释的。分 Key 分业务线设,比全站一个总数更安全,因为出问题时影响面可控。具体额度参考站内 /usage 里当时的真实用量分布。
能不能靠中转站把图片单价压下来?
可以比,但别只比单价。要一起看计费口径是否与官方一致、失败请求怎么算、有没有额外限速,以及出问题时能不能查到用量明细。通道的在线情况与可信度可以到 /sites 和 /tools/verify 看记录,先小额跑通再放量,别一次性把生产流量切过去。