AIGC 内容审计:生成链路要能追到 Prompt 和模型版本
一、内容出问题时,不能只说是模型生成的
AIGC 产品上线后,内容审计是绕不开的。生成内容如果出现事实错误、版权风险或敏感表达,系统必须能追溯:谁发起、用了哪个 Prompt、哪个模型版本、检索了哪些材料、经过哪些审核。只说"模型生成的",等于没有责任链。
审计链路要在生成时就记录,不要事后补。内容一旦被编辑、发布、转发,证据链就会变复杂。早记录,后面才查得清。
一个真实场景:内容运营平台用 AI 批量生成产品描述,上线一周后法务发现有一篇描述里出现了竞品名称。排查时发现,Prompt 模板里有一条"参考同类产品",模型从训练数据里引入了外部知识。如果审计里记录了 Prompt 版本和模型版本,可以立刻定位受影响范围:同模板同模型生成的 120 篇都要复检。但如果只记录了"模型生成"四个字,只能全部人工重审。
二、把生成过程建成事件链
一次内容生成至少包含输入、上下文、模型调用、审核、人工编辑和发布。
flowchart TD A[用户输入] --> B[Prompt 模板] B --> C[检索上下文] C --> D[模型生成] D --> E[安全审核] E --> F[人工编辑] F --> G[发布] D --> H[审计事件] E --> H F --> H G --> H审计事件不是业务日志的附赠品。它应该能独立查询和长期保存。审计系统的存储应该和业务数据库隔离——至少是独立表空间或独立实例。业务数据库的高频读写、数据清理策略不应该影响审计记录的完整性和查询性能。
三、审计记录要包含关键版本
下面示例是一个生成审计结构。
type GenerationAudit struct { RequestID string UserID string PromptVersion string ModelVersion string ContextIDs []string ReviewResult string CreatedAt time.Time } func (a GenerationAudit) Validate() error { if a.RequestID == "" || a.PromptVersion == "" || a.ModelVersion == "" { return fmt.Errorf("missing audit identity") } return nil }Prompt 版本和模型版本必须记录。模板改一句话,生成风格和风险都可能变化。版本号要和 Git commit 或发布版本关联,不能是手动维护的字符串。代码分支里的 prompt 模板和线上跑的可能不一样,关联到 commit hash 才能确保可复现。
审计记录还需要包含审核策略版本。安全审核的规则、敏感词库、风控模型都在迭代。一条内容当时通过了审核,不代表新规则下依然安全。
四、审计数据也要保护隐私
审计不是把所有原文永久存起来。用户输入、检索材料和生成内容可能包含敏感信息。可以保存摘要、哈希、引用 ID 和必要片段,原文按数据分级保留。
还要防止审计被篡改。关键事件可以写入 append-only 存储,或者使用内容哈希串联。审计链路如果能被随便改,出了问题就没有证据价值。append-only 存储(如某些云厂商的审计日志服务)可以配置保留期和防篡改策略,确保审计记录在保留期内不可编辑、不可删除。
最后,审计要服务运营流程。发现违规内容后,能定位同模板、同模型、同上下文生成的其他内容,批量复查。审计不是只为了追责,也是为了快速止损。
人工编辑也要进入链路。很多 AIGC 内容不是模型原样发布,而是人工改过。审计里要区分模型原文、人工修改和最终发布版本。否则出了问题,无法判断风险来自生成阶段还是编辑阶段。可以在数据库里保存三个版本:raw(模型输出)、edited(人工编辑后)、published(最终发布),每层标注时间、操作人和变更类型。
最后,审计查询要有权限。不是所有人都应该看到用户输入和生成内容。审计系统本身也要做权限控制,否则它会变成新的敏感数据入口。审计查询应该记录查询人、查询原因,和查询结果一并写入审计日志——审计系统自己不审计,是最大的隐患。
审计事件要能关联业务对象。内容发布后可能进入文章、评论、商品描述或营销素材,不同业务对象的处理流程不同。审计里只保存 request_id 不够,还要能找到最终落地位置。
删除流程也要进入审计。内容下架、修订、重新审核都要有事件。否则只知道内容怎么生成,不知道后来怎么处理。完整审计链路应该覆盖生成前、生成中和发布后。
五、总结
AIGC 内容审计要从生成链路开始记录。用户输入、Prompt 版本、模型版本、检索上下文、审核和发布都要形成事件链。审计数据要保护隐私,也要防篡改。内容出问题时,系统必须能追到具体环节,而不是把锅丢给"模型生成"四个字。好的审计系统不是为了处理事故,而是让事故能被处理。