3.3 KiB
3.3 KiB
角色主形象 IP 审核失败兜底修复(2026-04-25)
1. 问题
自动生成草稿素材时,角色「艾瑞克」主形象连续 3 次失败,供应商返回:
{
"code": "IPInfringementSuspect",
"message": "Input data is suspected of being involved in IP infringement."
}
这类失败不是网络抖动。原样重试会把同一份包含角色姓名、长设定和可能触发审核的专名继续提交给 DashScope,容易稳定失败。
2. 参考日志与文档
- 用户提供的失败日志:
request_id=a18fb05d-d3be-9b9c-8d37-e0427397789e,task_id=cb768c95-13b7-4790-9f18-35a8a8761b31,task_status=FAILED,code=IPInfringementSuspect。该日志确认失败源于供应商 IP/内容审核,而不是 OSS、SpacetimeDB 或下载链路。 docs/audits/CHARACTER_ASSET_PROMPT_CHAIN_AUDIT_2026-04-20.md:确认角色主形象正式模型 prompt 层由后端 prompt builder 编译,不能只改前端默认描述文本。docs/technical/CUSTOM_WORLD_ASSET_PROMPT_DEFAULTS_2026-04-24.md:确认当前主链已迁到server-rs/crates/api-server/src/custom_world_asset_prompts.rs与server-rs/crates/api-server/src/custom_world_ai.rs,不再修改旧server-node。docs/technical/ASSET_EXTERNAL_GENERATION_MANUAL_VERIFICATION_RUNBOOK_2026-04-23.md:确认角色主形象真实生成入口走 Rustapi-server、DashScope、OSS 与资产绑定链路。server-rs/crates/api-server/src/character_animation_assets.rs现有日志/代码经验:动作生成已经有审核失败时的安全兜底 prompt 策略,本次沿用到角色主形象。
3. 修复方案
- 在角色主图 prompt 层新增安全兜底 prompt:
- 不携带角色姓名、作品名、长设定原文。
- 保留职业原型,如原创近战剑士、原创法术职业冒险者。
- 明确要求不参考现有动漫、游戏、影视、小说角色,不使用可识别 IP 元素。
- 在 DashScope 角色主形象请求层识别审核类错误:
IPInfringementSuspectinappropriatesensitiverisk- 中文内容审核、疑似侵权、知识产权等关键词。
- 首次提交遇到上述错误时,后端自动用安全兜底 prompt 再提交一次。
- 非审核类错误仍按原错误返回,不隐藏模型、网络、OSS、超时等真实问题。
- 错误映射保留
raw字段,便于后续从日志直接看到供应商原始code/message/task_id。
4. 落地文件
server-rs/crates/api-server/src/prompt/character_visual.rs- 新增
build_fallback_moderation_safe_character_visual_prompt。
- 新增
server-rs/crates/api-server/src/custom_world_asset_prompts.rs- 导出角色主图审核兜底 prompt builder。
server-rs/crates/api-server/src/character_visual_assets.rs- 角色主形象 DashScope 请求增加审核兜底提交。
RequestModel阶段结构化日志增加moderationFallbackApplied。- DashScope 上游错误保留
raw。
5. 验收口径
- 用户不需要手动改「艾瑞克」这个名字;后端遇到
IPInfringementSuspect会自动切换到原创安全 prompt 再试一次。 - 若兜底 prompt 生成成功,后续 OSS 草稿、发布和资产绑定链路保持原样。
- 若兜底 prompt 仍失败,错误中仍能看到 DashScope 原始失败内容,方便继续定位具体触发项。