PROC-02-015 供应商URL与Base64混合素材真实验证20261022
13个真实图片渠道的已有素材签名URL与混合输入验证,区分供应能力、统一字段兼容及图参有效性
后续设计说明:用户已选择图片/视频统一URL,画布本地预览后自动后台入库,详见当前方案。本文保留测试时的请求、结果和当时建议;Base64及混合能力结论仍有效,但不再是目标输入策略。此次没有测试同请求多URL,不能将混合成功作为多URL验收。
1. 结论
2026-10-22 02:00:23—02:04:27(Asia/Shanghai),绕过媒体网关直接请求当前配置的13个图片渠道,每个渠道选择一个配置模型。执行26次统一字段基线测试和10次显式补充字段诊断,共36次POST;取得36个HTTP响应,其中32次200并保存32张可解码图片,另有2次400、2次503。逐张检查内容后,21张通过参考图核验、11张未通过。HTTP成功不等于素材生效。
| 统计口径 | 单张已有素材URL | 同次URL+Base64混合 |
|---|---|---|
| 包含补充字段测试的能力结论 | 11个渠道确认;1个未通过图参核验;1个无法判断 | 10个渠道确认;2个未通过图参核验;1个无法判断 |
| 仅方案选定的统一字段基线 | 9个通过;1个400拒绝;2个200内容未通过;1个503无法判断 | 8个通过;1个400拒绝;3个200内容未通过;1个503无法判断 |
8个渠道在统一字段下两项都通过:Origin-gemini、Origin-GPT、Origin-gpt-4k、两个tuba GPT渠道、vakv Gemini、vakv-gpt-cc、zdapi GPT Image 2。CookingAI GPT/Grok在补充字段下证明两种能力存在,但不能算作现定统一字段已经兼容。
结果支持“已有素材使用URL,本地新图用于图片任务可内联,视频任务统一URL”的设计方向。本次未调用视频模型,也未修改网关按渠道适配、启停或选路策略;不把这份单样本测试当作全模型生产认证。
2. 素材与测试方法
- A:512×512 PNG,标记Q7M4,红圆、蓝方块、绿三角、橙X。只上传一次到现有TOS私有临时桶中的随机测试对象,模拟已经存储的素材;模型请求只包含其HTTPS签名URL,不附A的Base64或内容描述。
- B:512×512 PNG,标记K9R2,紫菱形、青十字、黄圆环、三条黑竖线。未上传对象存储,仅在混合请求中作为Base64输入。
- 单URL提示要求保留输入图并在中心增加黑色星形;混合提示要求第一张在左、第二张在右,保留各自文字、图形及颜色。提示不透露Q7M4、K9R2或具体图形内容,不能仅凭提示猜中标记。
- 签名有效期3600秒,每次请求派发前签发。预检签名GET为200且SHA256匹配;去掉签名后的GET为403。没有开放桶ACL,也不需要供应商携带站内登录Cookie或额外授权头。
- 模型请求直达渠道配置的base_url,使用实际model_mapping与真实凭据;不经过媒体网关、Platform或Runtime生成入口。渠道数据库通过只读连接读取,凭据只在进程内解密。
- 请求不自动重试;补充字段是收到明确响应后的独立诊断,不是产品自动降级。保留独立client request ID、协议形状、时间、HTTP状态、响应摘要、输出尺寸与SHA256。
| 输入 | SHA256 |
|---|---|
| A / URL | ea25afe20feb2e27a8f8b9e80a6e7e6a146f0b5685e3cb5e820021744313c47b |
| B / Base64 | feef5cb9758ef4f70f04b8d10977f4bbdc33a31f5b96ac2a56547115dc3764b3 |


3. 统一字段基线矩阵
表中“通过”表示输入内容生效,不表示输出像素与原图一致或质量完全无损。“失败”仅指本次明确请求形状未通过,不推断供应商其它模型/协议都不支持。
| 渠道 | 实际模型 | 单URL | URL+Base64混合 |
|---|---|---|---|
| CookingAI · Gemini | gemini-3.1-flash-image-preview | 200,通过 | 200,失败;只复现B,遗漏A |
| CookingAI · GPT | gpt-image-2 | 400,image is required | 400,image is required |
| CookingAI · Grok | grok-imagine-image | 200,失败;无关色块文字 | 200,失败;无关流程图/抽象画 |
| Origin-gemini | gemini-3.1-flash-image-preview | 200,通过 | 200,通过 |
| Origin-GPT | gpt-image-2 | 200,通过 | 200,通过 |
| Origin-gpt-4k | gpt-image-2-4k | 200,通过 | 200,通过 |
| Origin-grok | grok-imagine-image | 200,失败;无关风景 | 200,失败;无关风景 |
| tuba · GPT Adobe | gpt-image-2 | 200,通过 | 200,通过 |
| tuba-gpt-adobe | gpt-image-2 | 200,通过 | 200,通过 |
| vakv · Gemini | gemini-3.1-flash-image-preview | 200,通过 | 200,通过 |
| vakv-gpt-cc | gpt-image-2-cc | 200,通过 | 200,通过 |
| zdapi · GPT Image 2 | gpt-image-2 | 200,通过 | 200,通过 |
| zdapi · GPT Image 2.5 | gpt-image-2.5-flare | 503 model_not_found,无法判断 | 503 model_not_found,无法判断 |
统一字段基线:Gemini通过generateContent发送fileData.fileUri,混合时同一parts数组追加inlineData;其余配置为openai-image的渠道通过/v1/images/edits的images[].image_url分别携带HTTPS URL和data URL。这是新方案字段基线测试,不是现有网关生成接口的端到端测试。Grok的原生字段另外测试,不用OpenAI字段失败代替其全部能力判断。
Origin-gpt-4k本次两张输出均为1024×1024,模型名称不代表4K验收通过。此前两个tuba及zdapi GPT Image 2的未知结论属于2026-10-21内联测试;本次URL/混合成功不能改写历史回执,也不等于已补做纯Base64重测。
4. 补充字段诊断(10次)
| 渠道 | 单URL补充请求 | 混合补充请求 | 解释 |
|---|---|---|---|
| CookingAI · GPT | image为URL字符串:200,通过 | image为两项字符串数组,URL+data URL:200,通过 | 具备能力;当前不兼容选定的images[].image_url基线 |
| CookingAI · Grok | image为URL字符串:200,通过;xAI image.url对象:200,内容未通过 | image字符串数组:200,通过;xAI images[].url对象数组:200,内容未通过 | 具备能力;不能因为同称Grok就认为原生字段在此渠道有效 |
| Origin-grok | image URL字符串与xAI image.url对象:均200,内容未通过 | image字符串数组与xAI images[].url对象数组:均200,内容未通过 | 加上统一基线共6次均返回无关图,当前未证实图参能力;不继续盲目生成 |
这些形式用于确定供给真实边界,没有写入网关配置或实现渠道分支。若保持统一字段合同,CookingAI GPT/Grok须由供应方对齐字段或作为未兼容项处理;不能在产品运行时逐渠道猜字段、同时填多套字段,或在未知提交后换格式重发。
5. 内容证据:200仍可能漏用素材
Origin-gemini混合结果:左侧Q7M4及A的四个图形,右侧K9R2及B的四个图形,两个来源均实际生效。

CookingAI Gemini混合结果:两面板都出现K9R2和B的图形,缺少Q7M4和A的图形。单URL测试通过,仍不能推导混合请求可靠。该结果仅证明本次混合输出未通过,不足以定位是取图、输入转换还是模型执行阶段丢失A。

所有32张返回图片都进行了直接视觉检查,记录在visual-checks.json;未以HTTP 200、图片可解码或仅出现一张参考图的标记代替双素材验收。
6. 对方案与验收的影响
- 保持已有素材URL、本地新图Base64的统一规则;不必将已有图片读回再编码,也不必为图片生成先把全部本地素材上传为长期资产。
- 同一请求必须验证所有引用生效;测试至少包含不同独立标记、引用顺序和角色。CookingAI Gemini的本次失败不能作为混合输入通过交付。
- 供应能力、协议合同兼容、当前可用与管理员启用是四个不同结论。8个基线双项通过渠道也不自动启用;2个补充字段通过渠道也不自动形成渠道特例。
- 供应可访问的URL必须在取图期间有效。本次证明一种TOS签名URL可被多个真实供应链消费;不代表所有CDN、重定向、签名参数、过期窗口或区域访问都已验证。
- 本次只验证模型侧输入传输,未验证产品file_id鉴权、文件绑定、原件晋升、浏览器草稿恢复及完整生成链。因此不能把上传一张测试对象描述为统一Files服务已经实现。
7. 证据保存、清理与限制
本机原始证据目录:/Users/wangzihao/.codex/visualizations/2026/10/21/01a15ce9-52a1-7131-a3b6-da75259ef02f/upstream-url-mixed/。包含probe.py、逐请求started/最终JSON、inventory.json、fixture.json、summary.json、visual-checks.json、32张原始输出、输入样本、日志和cleanup.json;完整签名URL与凭据不落盘。文档中的4张图片是原字节复制,未重新编码。
所有请求结束后,只删除本次创建的唯一TOS测试对象,并通过HEAD 404核验;现有素材、桶权限及生命周期未修改。渠道ID、状态、协议族、模型映射读取前后相同;未写渠道数据库、健康状态或启用配置。文本证据对真实渠道凭据与存储配置秘密精确扫描匹配0次,签名URL扫描0次。
本次为真实供应调用,可能产生供应费用,未做账单对账,不声称失败请求免费。没有自动重试或未取得HTTP响应的请求;503模型不可用不归类为“不支持URL/Base64”。每个组合只有单次样本,不给出稳定成功率;未覆盖大图、多于两张、蒙版、长期排队或容量压力。请求耗时保留为诊断,不据异构模型、不同输入数量和不同时段对比宣称性能提升。
协议构造参考:OpenAI图片编辑JSON输入、xAI图片编辑、xAI多图编辑。官方规范只说明字段设计依据,当前第三方渠道是否符合以上述真实回执和图像核验为准。