上游返回 400/422 时,providerUserFacingErrorMessage 只按状态码返回固定文案 「模型服务拒绝了请求,请检查模型和参数」,捕获到的 providerHTTPError.Body 从未参与判断。用户看到的原因与真实原因无关:内容审核、额度不足、模型无权限 都会被提示成参数问题,导致排查方向错误。 providerPayloadErrorMessage 已经实现了正确的归类逻辑,但只在 HTTP 成功后的 正文解析路径上生效,HTTP 失败路径取不到。 本次改动: - 抽出 providerPayloadErrorCategory,归类失败时返回 ok=false,调用方退回原有 通用文案,不因为归类失败而改变现有行为。 - providerUserFacingErrorMessage 仅对 400/422 解析正文。401/403/404/5xx 的正文 可能是网关 HTML、鉴权诊断或含密钥的内部信息,不参与归类,且这些状态码本身 已有更贴切的固定文案。 - 新增真人肖像类目:部分视频模型(如火山方舟 Seedance)会以 InputImageSensitiveContentDetected.PrivacyInformation 拒绝含真人的输入图片, 原先落到默认分支,提示为参数问题。该类目只匹配供应商错误码中的稳定标识 (privacyinformation / sensitivecontentdetected),不扫描自然语言:正文经常 回显用户提示词,按「肖像」「likeness」这类词判断会把普通参数错误误报。 归类结果始终是固定文案,正文只参与匹配,不会进入用户可见错误。请求分析仍按 既有方式记录经过脱敏的响应正文,本次改动没有新增日志路径。 验证:backend gofmt 无输出;go test ./... 除 TestAutoDLPluginArtifact、 TestPluginRuntimeDropsRemovedBundledProtocol、 TestAutoDLPluginPackageInstallsThroughUploadRuntime 外全部通过,这三项在未改动 的 upstream/main 上同样失败。
166 KiB
166 KiB