当 AI 生成的内容越来越多地出现在新闻、社交平台和办公文档中,"这段文字/图片到底是不是 AI 写的"已经不再是个好奇心问题,而是合规与信任的底线。OpenAI 近期公开表态支持欧盟《AI 内容透明度实践准则》(EU Code of Practice on AI Content Transparency),并推进内容溯源(provenance)标准与工具。这件事不只是政策表态——背后有一套正在成形的技术栈,值得每个在欧盟市场部署 AI 产品的开发者关注。
溯源的核心诉求:让 AI 内容"自带身份证"
欧盟准则的核心要求并不复杂:AI 生成的内容应当可识别、可追溯。具体来说有两层含义:
- 机器可读标记——内容在传输、存储时携带结构化元数据,平台和工具能自动检测出"这是 AI 生成的"。
- 人类可感知提示——最终呈现给用户时,有视觉或文本层面的提示(水印、标签、声明等)。
这两层并不冲突,而是互补:机器标记处理大规模自动化审核,人类提示处理终端用户的知情权。
OpenAI 目前推进的方向主要围绕 C2PA(Coalition for Content Provenance and Authenticity)标准——一个由 Adobe、Microsoft、Google 等共同制定的媒体内容溯源规范。C2PA 的思路是在图片、视频等文件的元数据中嵌入"绑定链"(binding chain),每一步操作(生成、编辑、发布)都留下加密签名的断言(assertion),类似内容版本的 git log。
C2PA 元数据长什么样
一张由 DALL·E 生成的图片,如果携带 C2PA 元数据,其内部结构大致如下:
C2PA Manifest
├─ Claim (签名断言)
│ ├─ Actions: "created" → AI生成
│ ├─ Software: DALL·E 3
│ ├─ Parameters: prompt, seed
│ └─ Digital Signature (X.509证书)
├─ Thumbnail (缩略图哈希绑定)
└─ Ingredient (输入素材溯源,如有)
关键点:每个 Manifest 都有 X.509 证书签名,篡改元数据会破坏签名验证。这意味着溯源信息不是"贴个标签就行",而是有密码学保障的。
实践:给 AI 生成图片嵌入 C2PA 溯源元数据
下面用一个可运行的 Python 示例演示如何为一张 AI 生成的图片创建 C2PA Manifest。这里使用 c2pa-python 库(微软开源的 C2PA 参考实现的 Python 绑定)。
前提:你需要一个 X.509 签名证书。测试阶段可以用自签名证书,生产环境需要从受信 CA 获取。
# 安装 c2pa-python
pip install c2pa-python
# 生成测试用自签名证书和私钥(仅用于开发测试)
openssl req -x509 -newkey rsa:2048 -keyout test_key.pem \
-out test_cert.pem -days 365 -nodes \
-subj "/CN=Test AI Provenance/O=Dev Lab"
import json
from c2pa_python import Builder, Signer, create_signer
# 1. 配置签名器 —— 用刚才生成的测试证书
signer_info = {
"sign_cert": "test_cert.pem", # X.509 证书路径
"private_key": "test_key.pem", # 私钥路径
"ta_url": "http://timestamp.digicert.com", # 时间戳权威(生产环境必填)
}
signer = create_signer(
cert_path=signer_info["sign_cert"],
key_path=signer_info["private_key"],
ta_url=signer_info["ta_url"],
)
# 2. 构建 Manifest —— 声明"这是 AI 生成的图片"
manifest_json = {
"claim_generator": "org.devlab.ai_tool:v1.0",
"actions": [
{
"action": "c2pa.created",
"parameters": {
"ai": "DALL-E-3",
"prompt": "A cat sitting on a stack of EU regulation documents",
},
}
],
"assertions": [
{
"label": "c2pa.ai.generative-training",
"data": {
"generator": "DALL-E-3",
"model_version": "2024-01",
},
}
],
}
# 3. 将 Manifest 嵌入图片
builder = Builder(manifest_json)
# source_path: 原始 AI 生成图片, output_path: 嵌入溯源后的输出
builder.sign(
signer=signer,
source_path="ai_cat.png",
output_path="ai_cat_provenance.png",
)
print("✅ 溯源元数据已嵌入 ai_cat_provenance.png")
嵌入后,任何支持 C2PA 的工具(如 Adobe Content Authenticity Inspector、在线验证器 contentauth.org)都能读取这张图片的生成来源、使用的 AI 模型、甚至原始 prompt——且元数据经过签名,无法被无声篡改。
验证:读取并校验 C2PA 元数据
from c2pa_python import Reader
reader = Reader("ai_cat_provenance.png")
manifest_store = reader.read()
# 打印所有断言
for manifest in manifest_store.get("manifests", []):
print(f"Claim Generator: {manifest.get('claim_generator')}")
for action in manifest.get("actions", []):
print(f" Action: {action['action']}")
if "parameters" in action:
print(f" Params: {json.dumps(action['parameters'], indent=2)}")
# 校验签名有效性
validation = manifest_store.get("validation_status", "unknown")
print(f"签名验证状态: {validation}")
如果签名验证通过,说明元数据未被篡改;如果失败,则该图片的溯源信息不可信。
文本溯源的现状与挑战
C2PA 目前主要覆盖图片和视频。文本溯源的技术路径仍在演进,几个方向值得关注:
| 方案 | 原理 | 优势 | 局限 |
|---|---|---|---|
| 隐形水印 | 在文本中嵌入统计可检测的标记模式 | 不影响阅读 | 对翻译、改写鲁棒性差 |
| 元数据标签 | API 返回时附带 model_id、generation_id 字段 |
结构化、可追溯 | 依赖下游平台保留元数据 |
| 外部注册表 | 生成内容哈希注册到第三方溯源服务 | 独立验证 | 需要生态协作 |
OpenAI 的 API 已经在部分响应中返回 system_fingerprint 字段,这是文本溯源的一个起点。实际项目中可以这样利用:
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "总结欧盟AI法案的核心要求"}],
)
# 记录溯源信息
provenance_record = {
"model": response.model,
"system_fingerprint": response.system_fingerprint,
"id": response.id,
"created": response.created,
"content_hash": hash(response.choices[0].message.content), # 简化示例
}
print(json.dumps(provenance_record, indent=2))
注意:
system_fingerprint主要标识模型配置版本,不是完整的内容溯源方案。生产环境需要配合内容哈希注册和前端展示标签。
合规落地清单
如果你的产品面向欧盟市场并涉及 AI 生成内容,以下事项需要纳入开发计划:
- 图片/视频输出:优先采用 C2PA 标准嵌入溯源 Manifest,确保签名证书来自受信 CA。
- 文本输出:在 API 层面保留
model、system_fingerprint、id等字段;在前端展示层添加"AI 生成"标签。 - 平台对接:与分发平台(社交媒体、新闻站点)确认它们是否保留并展示 C2PA 元数据——目前 Adobe、Leica、Microsoft 等已支持读取。
- 用户告知:欧盟准则要求人类可感知的提示,不只是机器标记。UI 层需要设计清晰的来源标识。
- 篡改防护:C2PA 的密码学签名能检测篡改,但不能阻止删除元数据。结合隐形水印作为冗余防线是更稳妥的策略。
欧盟的实践准则不是一次性合规动作,而是持续演进的标准。OpenAI 的参与意味着主流 AI 提供商正在把溯源从"可选功能"推向"默认行为"。对于开发者来说,现在开始理解 C2PA 结构、在 API 调用中保留溯源字段、在 UI 中预留来源标签位置,是成本最低的起步方式。