Image Guard 参数生成器

生成要直接填进 sub2api 渠道的 base_url,功能参数会编码进路径里。

地址

这里只填代理地址和真实上游 base_url。图片接口路径由客户端请求和 sub2api 自己带过来,不在这里填。

sub2api 在 Docker 容器里时不要填 127.0.0.1,那会指向容器自己。生产按当前固定 Docker gateway 填 http://192.168.112.1:58173
原来 sub2api 渠道里真实上游怎么填能用,这里就照原样填;不需要为了 Image Guard 额外补 /v1。
不要手动补 /images/edits。生成结果里的 /ig/... 是给代理识别的渠道功能参数,真实上游不会收到这些参数。

size 检测和修正

这是一个整体功能:比例接近就直接拉回请求尺寸;比例差太大才重试上游,重试后仍不对就强行改尺寸。

只在返回图宽高比明显偏离请求 size 时触发;次数用完后仍会强行拉回请求尺寸。
例:请求 1520x640,上游给 1932x814 这种比例接近的图,直接拉回 1520x640;请求 1024x1024,上游给 1254x1254 也直接拉回。上游给正方形但请求是 7:3 这类比例差太大的情况,才按上面的次数重新请求上游。

URL 和 base64

这几个开关作用在不同方向:输入、发给上游、上游响应、返回客户端。

三种策略互斥。真实 URL 只处理明确请求 response_format=url 的请求;请求 base64 时不上传 R2。
  • 支持真实 URL:客户端明确请求 URL 时,把尺寸处理后的最终图片上传 R2,再返回自有域名 HTTP URL;base64 请求保持原样。
  • 只返回 base64:客户端 URL 策略选“直接拒绝”,并开启“上游响应去除/转换 URL”。客户端要 URL 会立即报错,上游偶尔给 URL 仍会兜底转成 base64。
  • 兼容旧客户端:客户端 URL 策略选“兼容转换”。客户端要 URL 时不会报错,而是在 url 字段收到 base64 data URL。
  • 只限制 quality:关闭 size 功能,并关闭 URL/base64 开关。这样代理只改/拦截请求体里的 quality
  • 只想保留上游 URL:关闭“上游响应去除/转换 URL”。但上游只给 URL 时,代理无法对那张 URL-only 图片做 size 修正。

上游超时暂停

全部留空就不生成超时参数;填写任意一项,就启用当前渠道的超时记录和后续暂停。

当前请求只记录,不截断。 达到累计次数后,暂停期内的后续新请求才会直接返回 503。
生成 ig_timeout_s。超过这个时间还没拿到上游响应,就记一次超时。
生成 ig_timeout_count。窗口内达到这个次数后暂停该真实上游。
生成 ig_timeout_cooldown_s。暂停期内新请求直接返回 503 纯文本。
生成 ig_timeout_window_s。0 表示不按时间清理累计窗口。

quality 策略

这是独立功能,只处理图片请求体里的 quality 字段,不影响 size、prompt、model。

  • 不处理:不生成 ig_quality_mode,请求里的 quality 原样交给上游。
  • deny + high:只拦截 quality=high,没传 quality 或传 medium/low/auto 都放行。
  • force + medium:不管用户传什么,都改成 quality=medium 后再发给上游。
  • only + medium:只允许 medium;没传会补 medium,传 high/low/auto 会返回 400。