确认 gpt-image-2 在当前 Provider 上是否能在 300 秒内完成同步 OpenAI-compatible 图片生成,区分“超过 120 秒的正常/排队响应”和“网关持续挂起或协议不兼容”。
gpt-image-2
portal/config/settings.yml
provider.http_timeout_seconds=300
worker.lease_seconds=360
timeout_ms=300000
chorus-user
--config
本机 Provider 特定数值和一次验证结果只进入任务归档,无长期核心文档影响;Portal YAML 的通用规则已由 #56 记录。
succeeded
retryable=false
阶段更新为:待验收。
Task-58-图片生成-300-秒受控复验
e99ef4969f116029a76c5a9c8cb6733652538c8a
python dev_scripts/harness.py sync --check
docs/task/
config/local-services.yml
admin/config/settings.yml
extra_body
latency_ms=300014
retryable=true
upstream_timeout
max_failover=0
route_unavailable
upstream request failed
/v1/images/generations
model
prompt
n=1
response_format=b64_json
size
quality
/images/edits
/images/generations
response_format
补充对照结论(2026-08-25,已按用户更正核对 D:\chengma\cmhub,未执行真实上游调用):
D:\chengma\cmhub
images_edits
/v1/images/edits
api_type=auto
/v1
chat
/v1/chat/completions
upstream_timeout/upstream_error
结论:用户观察到 cmhub 多数 150 秒内成功,不能据此判断 Chorus 本地处理慢。当前首要差异是 API 类型/请求体,其次是重试和超时策略。由于本机无法连接 cmhub 当前数据库,尚不能只读确认其线上该模型的实际 api_type;后续诊断需先确认这一字段并对齐一次脱敏请求元数据,禁止记录 URL、密钥、prompt、图片或 Provider 原始响应。
api_type
用户于 2026-08-25 确认:cmhub 中该模型的实际 api_type=auto。结合配置使用的是仅到 /v1 的基础地址,cmhub 的 detect_api_type() 会将其解析为 chat,最终通过 ChatCompletionsProvider.generate_image() 调用 /v1/chat/completions。因此已确认 cmhub 与 Chorus 当前 /v1/images/generations + response_format=b64_json 的调用协议不同,这是两边耗时和成功率不可直接比较的首要原因。
detect_api_type()
ChatCompletionsProvider.generate_image()
更正上一条判断:用户确认 cmhub 的模型 URL 路径已经包含 /v1/images/edits(此处不记录具体主机)。因此 api_type=auto 会在 detect_api_type() 中优先解析为 images_edits,不会解析为 chat。
已确认的实际差异:
POST /v1/images/edits
POST /v1/images/generations
因此 cmhub 多数 150 秒内成功与 Chorus 本次 300 秒超时并非同一种上游请求;首要诊断结论仍是协议/输入形态不一致,而不是 Chorus 本地排队慢。上一条关于 cmhub 实际走 chat/completions 的结论作废。
chat/completions
No dependencies set.
The note is not visible to the blocked user.
基本信息
原始需求
目标
确认
gpt-image-2在当前 Provider 上是否能在 300 秒内完成同步 OpenAI-compatible 图片生成,区分“超过 120 秒的正常/排队响应”和“网关持续挂起或协议不兼容”。非目标
已确认方案
portal/config/settings.yml:provider.http_timeout_seconds=300、worker.lease_seconds=360,端口和其他参数不变。gpt-image-2:timeout_ms=300000,其他字段不变。chorus-user并确认--config、登录页和进程稳定。风险与回退
验收标准
文档影响
本机 Provider 特定数值和一次验证结果只进入任务归档,无长期核心文档影响;Portal YAML 的通用规则已由 #56 记录。
实施与验证结果(2026-08-25)
chorus-user;进程确认携带--config,Portal 登录页 HTTP 200。succeeded;数据库审计显示 1 次 Provider 调用,准确上游耗时 70331 ms,retryable=false;受保护输出数量 1。阶段更新为:待验收。
归档与一致性
Task-58-图片生成-300-秒受控复验e99ef4969f116029a76c5a9c8cb6733652538c8apython dev_scripts/harness.py sync --check:通过,全部核心 Wiki 镜像一致。docs/task/;需由用户明确提出才导出任务归档。config/local-services.yml和admin/config/settings.yml保持不处理。重启后 generation #9 失败诊断(2026-08-25)
--config,实际 YAML 仍为 Provider HTTP 300 秒、worker lease 360 秒;ProviderModel #4 仍为 300000 ms。extra_body为空。latency_ms=300014、retryable=true、底层错误upstream_timeout,无输出。max_failover=0,所以超时后没有第二家可切换,生成最终错误被汇总为route_unavailable;页面显示通用upstream request failed。补充对比结论(2026-08-25)
/v1/images/generations,JSON 字段为model、prompt、n=1、response_format=b64_json;当前模型没有size、quality等 extra_body。/images/edits图片编辑端点且默认 600 秒超时,不能作为同条件对照。本机未找到另一个使用当前主机和/images/generations的实现。response_format、size/quality、代理和并发都可能改变耗时。现有安全审计没有 DNS/连接/TTFB/响应体分段,因此精确定位需要先增加不记录凭据或正文的 HTTP 阶段计时,再由用户授权一次同请求 A/B。补充对照结论(2026-08-25,已按用户更正核对
D:\chengma\cmhub,未执行真实上游调用):gpt-image-2配置为images_edits,调用/v1/images/edits,使用 multipart 并要求原图;Chorus 当前任务调用/v1/images/generations,JSON 请求且固定response_format=b64_json。两者不是同一种生成请求。api_type=auto且 URL 仅到/v1,其代码会将其解析为chat并调用/v1/chat/completions,同样不会走 Chorus 当前的 images generations 路径。upstream_timeout/upstream_error默认最多重试 2 次(最多 3 次调用,退避 10/30 秒);Chorus 当前 route 只有一个成员且max_failover=0,本次只调用一次。upstream_timeout,因此不是本地队列或 Portal HTTP 超时导致,时间几乎全部消耗在上游响应等待。结论:用户观察到 cmhub 多数 150 秒内成功,不能据此判断 Chorus 本地处理慢。当前首要差异是 API 类型/请求体,其次是重试和超时策略。由于本机无法连接 cmhub 当前数据库,尚不能只读确认其线上该模型的实际
api_type;后续诊断需先确认这一字段并对齐一次脱敏请求元数据,禁止记录 URL、密钥、prompt、图片或 Provider 原始响应。用户于 2026-08-25 确认:cmhub 中该模型的实际
api_type=auto。结合配置使用的是仅到/v1的基础地址,cmhub 的detect_api_type()会将其解析为chat,最终通过ChatCompletionsProvider.generate_image()调用/v1/chat/completions。因此已确认 cmhub 与 Chorus 当前/v1/images/generations+response_format=b64_json的调用协议不同,这是两边耗时和成功率不可直接比较的首要原因。更正上一条判断:用户确认 cmhub 的模型 URL 路径已经包含
/v1/images/edits(此处不记录具体主机)。因此api_type=auto会在detect_api_type()中优先解析为images_edits,不会解析为chat。已确认的实际差异:
POST /v1/images/edits,multipart,包含原图、prompt、model、n、size。POST /v1/images/generations,JSON,当前任务无原图,包含 model、prompt、n、response_format=b64_json。因此 cmhub 多数 150 秒内成功与 Chorus 本次 300 秒超时并非同一种上游请求;首要诊断结论仍是协议/输入形态不一致,而不是 Chorus 本地排队慢。上一条关于 cmhub 实际走
chat/completions的结论作废。用户验收通过