AI身份披露工程化:从提示词到系统层溯源实践
最近在 Hacker News 上有一个讨论挺有意思:AI 应不应该主动告诉你“我是 AI”? 初看这是个偏向伦理和产品体验的问题,但真正做过 AI 应用工程落地后你会发现,它更像是一个具体的技术设计问题:在哪个环节披露、用什么方式披露、披露之后如何防绕过、如何验证披露是否生效。本文不打算只停留在观点争论上,而是以一个 AI 应用开发者的视角,把“AI 身份披露”从概念到实现完整拆开,覆盖智能客服、AI Agent、AIGC 内容平台这几个典型场景,并给出可复制的代码和工程建议。
如果你最近正在做 AI 应用开发、AI 智能体或大模型工程化落地,应该能在本文里找到不少可以直接参考的细节。
1. 为什么“AI 要不要表明身份”会成为一个技术问题
1.1 从一个日常场景说起
假设你打开一个购物网站,点开客服聊天窗口,对面解答热情、语气自然,还知道你的历史订单。聊到最后你问:“你是真人还是机器人?” 对方回:“我是人工客服,很高兴为您服务。”
如果这句话来自一个 AI 助手,那么从用户角度来看,这是一种误导。短期也许能让客户服务数据更好看,长期却会透支用户对产品甚至整个 AI 行业的信任。
再比如你刷短视频时看到一段既有画面又有解说词的新闻,但实际是 AI 生成的内容,却没有标注“AI 生成”。用户很难判断真实性,容易引发误解。随着 AI 生成能力越来越强,这类问题已经从“个别现象”变成了“平台级的风险”。
所以,“AI 要不要告诉用户自己是 AI”这件事,不只是道德选择题,而是产品合规、用户体验、内容溯源都必须回答的问题。
1.2 什么是 AI 身份披露
AI 身份披露,通常指:当用户与 AI 系统交互,或消费 AI 生成内容时,系统需要通过某种方式明确告知用户输出内容的 AI 属性。
它有几个常见英文关键词:AI Disclosure、AI Transparency、AI Provenance。翻译过来分别是“AI 披露”“AI 透明”“AI 溯源”。
这套动作可以发生在多个层面:
- 交互层:比如聊天机器人开场提示“我是 AI 助手”,或者在页面上展示“AI 生成”标签。
- 内容层:比如图片右下角加一个“AI 生成”水印,文本开头声明“以下内容由大模型生成”。
- 系统层:比如在 API 返回结构中携带
is_ai: true字段,在文件元数据中写入生成工具信息。
注意,AI 身份披露和 AI 检测不是同一个概念。AI 检测是事后判断一段内容是不是 AI 生成的,而 AI 身份披露是生成时主动声明。实际项目里两者会配合使用:披露负责事前透明,检测负责事后审计。
1.3 为什么不能只靠“自觉”披露
有些开发者会想:我只要在系统提示词里写一句“请告诉用户你是 AI 助手”,不就可以了吗?
很多情况下,这样做确实能满足最低要求,但并不可靠。原因主要有三个:
- 提示词可能被忽略。大模型生成的回复具有随机性,某些模型在上下文中没有强制约束时,可能不会严格按照提示词执行。
- 提示词可能被绕过。用户可以诱导模型说“不要提你是 AI”,或者用越狱式提问让系统忽略提示词。
- 二次加工后披露信息会丢失。AI 生成的文章被复制、图片被截图、视频被重新上传后,原本的内容层披露很容易消失。
所以,工程上要做的是把“AI 身份披露”设计成一套可校验、可追溯、不容易被绕过的机制,而不是靠模型自觉。
2. AI 身份披露的三种实现层级
在真实产品中,我们可以把 AI 身份披露分成三层来实现。理解这三层,是后续设计技术方案的前提。
2.1 内容层:通过提示词让 AI 自我介绍
内容层是最容易实现的一层。比如在调用大模型 API 时,在 system 提示词中显式声明:
这种方式的优点是改动成本低,几乎任何基于大模型接口的应用都能用。缺点是不具备强约束力,模型可能偶尔忘记,用户也可以通过多轮对话诱导模型改变身份认知。
内容层适合作为“第一道防线”,但不能作为唯一防线。
2.2 交互层:前端 UI 展示 AI 标识
交互层是用户最容易感知到的一层。聊天机器人头像旁边标注“AI”,视频播放页角落显示“AI 生成”,文章底部给出内容出处说明,这些都是交互层披露。
交互层的最大优势是确定性高。前端 UI 是产品自己控制的,不会像大模型回复一样飘忽不定。即使模型在文本里没有提到“我是 AI”,界面上仍然固定展示 AI 标识。
所以,我一般建议:把身份披露的重点放在交互层,把内容层作为辅助说明,系统层作为审计兜底。
2.3 系统层:元数据与溯源信息
系统层更多是给机器和审计人员看的信息。典型做法包括:
- API 返回 JSON 中增加
is_ai、model、provider、generated_at等字段。 - 生成图片/视频时,在文件元数据中写入“AI 生成”标识。
- 将生成日志写入独立的审计系统,记录每次 AI 输出的完整上下文。
系统层披露对普通用户不可见,但它在合规审查、内容溯源、自动化检测中非常重要。如果某一天平台被要求出示“哪些内容由 AI 生成”,系统层数据就是最直接的证据。
2.4 三种层级的优劣对比
| 实现层级 | 优点 | 缺点 | 典型使用场景 |
|---|---|---|---|
| 内容层 | 成本低,几乎适用所有大模型应用 | 不强制,可能被绕过 | 智能客服、聊天机器人 |
| 交互层 | 用户可见、确定性强 | 需产品设计支持 | 聊天窗口、内容平台、AIGC 作品展示 |
| 系统层 | 可审计、可追溯 | 对用户不可见 | 合规审查、日志平台、AI Agent 工作流 |
实际项目建议三层同时考虑,形成互补。
3. 实战:给智能客服系统加上“AI 声明”
下面进入可运行的实战环节。我们以一个简单的智能客服系统为例,演示如何在内容层、交互层、系统层同时加入 AI 身份披露。
3.1 场景与需求拆解
假设你正在做一个电商智能客服,用户通过网页对话窗口提问,后端调用大模型 API 生成回复。
需求要求:
- 用户发起对话后,AI 在第一次回复中必须主动声明自己是 AI。
- 对话窗口顶部或者消息气泡旁边,固定显示“AI 客服”标识。
- 后端接口在返回内容时,必须携带
is_ai: true字段,方便日志审计和后续升级。
3.2 后端实现:Flask 封装大模型接口
我们使用 Python + Flask,调用一个兼容 OpenAI 协议的大模型接口。你可以根据自己的实际模型服务商替换 base_url 和 model。
这段代码有几点需要解释:
system_prompt中把“先声明自己是 AI”放在了规则首句,这样模型更容易遵循。- 返回结构中的
is_ai字段不是从模型内容里推断的,而是后端根据调用来源直接写死的,这是系统层披露的关键思路。 model和generated_at可以用于审计,方便定位某次回复使用的是哪个模型。
3.3 前端实现:对话窗口固定展示 AI 标识
前端我们用一个最小页面来演示。核心思路是:AI 标识属于页面固定元素,不依赖模型是否在文本中声明。
这里的重点是:
- 每条 AI 消息旁边固定显示
AI标签。 - 页面底部也有一行提示,告诉用户本对话由 AI 生成。
is_ai字段在代码中没有直接展示,但可以打开浏览器的 Network 面板看到后端返回,这就实现了系统层审计。
3.4 运行与验证
本地运行步骤:
然后访问 http://127.0.0.1:5000 打开页面,在输入框里发送一条消息。正常情况下应该能看到:
- AI 消息气泡带有
AI标签。 - 模型回复的第一句话包含“我是AI智能客服”之类的内容。
- 浏览器开发者工具的网络请求响应中包含
"is_ai": true。
如果出现模型没有按照提示词声明自己是 AI,不要慌。可以先检查 system_prompt 是否放在了 messages 列表第一条,再看模型版本和温度参数。必要时可以在后端增加一层校验:如果模型回复中不包含关键词,就自动追加一句“以上内容由 AI 生成”。
4. 实战:AI Agent 运行时的身份溯源
AI Agent 是比单轮客服更复杂的场景。Agent 会调用工具、读取数据、执行多步推理,最终将结果返回给用户。在 Agent 场景里,身份披露和溯源难度会大很多。
4.1 Agent 场景对身份披露的要求
一个典型的 AI Agent 流程可能是:
用户提问 → 规划任务 → 调用搜索工具 → 读取知识库 → 大模型总结 → 返回回复。
这个过程中,用户看到的最终回复可能混合了外部数据、模型推理和工具输出。我们至少需要做到两点:
- 最终回复必须显式声明是 AI 生成。
- 每次 Agent 运行都要记录运行 ID、模型、工具调用、时间戳,以便事后溯源。
4.2 实现一个带审计信息的 Agent 输出
下面用一个简化版示例,展示如何在 Agent 最终输出时加入身份声明和审计日志。
运行后,控制台会输出类似:
同时会在同目录下生成一个 ai_agent_audit.log 文件,记录完整的执行过程。
4.3 如何把披露信息接入日志系统
如果项目里已经使用了 ELK、Splunk、云原生日志服务等系统,标准做法是把 audit_item 发送到日志平台,并建立索引。
在代码结构上,可以把审计逻辑单独封装成一个函数或者中间件,避免每次写 Agent 逻辑时重复处理。
这样,Agent 代码只关心业务逻辑,身份溯源由工具函数统一处理。
5. 实战:给 AIGC 图片和视频打上“AI 生成”标记
聊天和 Agent 之外,AIGC 内容平台是另一个必须考虑身份披露的领域。AI 生成的图片、视频、音频如果流入公开平台,需要具备至少一种溯源能力。
5.1 为什么要做到媒体层溯源
文本内容可以靠提示词声明,但图片和视频一旦脱离原始页面,比如被下载、转发、二次上传,页面上的“AI 生成”标签就会丢失。这时需要在文件本身携带元数据。
常见的两种思路:
- 可见水印:用户一眼能看到,但容易被裁剪。
- 不可见元数据:写入文件内部,用户不易感知,但可以用于溯源。
更完善的方案会同时使用两种思路。
5.2 图片元数据写入示例
下面用 Python Pillow 给 PNG 图片写入一段 AI 生成标记。
这段代码给 PNG 图片增加了自定义文本信息。读取元数据可以用 Pillow:
需要注意的是,PNG 元数据在图片被截图、压缩、转格式后可能丢失。如果平台对溯源要求更高,应该使用专门的溯源协议或服务,例如国际内容溯源联盟提出的 C2PA 规范,这里不做展开。
5.3 视频元数据写入示例
视频文件的元数据写入通常使用 FFmpeg 完成。下面命令通过 -metadata 参数为视频添加 AI 生成标记,并保持原始编码不变:
这里使用 -codec copy 表示不重新编码视频,只修改元数据,速度很快,适合生产环境批量处理。
5.4 溯源标记的局限性
媒体元数据在面对截图、录屏、二次压缩时会变得不可靠。这是目前 AIGC 溯源面临的真实挑战。
工程上的缓解手段包括:
- 同时加入可见水印,至少让普通用户能注意到“AI 生成”。
- 在平台上建立内容指纹库,检测已发布的图片视频是否和 AI 生成原图一致。
- 对高价值、高风险内容采用更严格的数字签名方案。
6. 常见问题与排查思路
在 AI 身份披露落地过程中,团队最容易遇到的几个问题如下:
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| 模型偶尔忘记主动声明 | 仅依赖系统提示词,提示词约束不够强 | 在提示词首句做强制约束,并在后端增加关键词校验兜底 |
| 模型声明内容被用户诱导删除 | 提示词可被多轮对话覆盖或越狱 | 交互层固定展示 AI 标识,不依赖模型自觉 |
| 前端 AI 标签被用户或爬虫隐藏 | 标签只存在于前端代码 | 后端接口固定返回 is_ai 字段,保证数据层可溯源 |
| 图片/视频导出后无法确认来源 | 缺少元数据或元数据被清掉 | 配合可见水印、平台指纹、数字签名 |
| 审计日志找不到历史生成记录 | 未在生成接口中记录结构化日志 | 统一封装审计工具,按运行 ID 检索 |
| 测试环境持续报“未声明 AI” | 校验规则写得太死,模型同义表述被判为失败 | 用语义相似度模型或更宽泛的正则规则 |
排查 AI 身份披露问题时,建议按“用户可见 -> 系统可查 -> 日志可追”的顺序检查:
- 先在界面上看是否能看到 AI 标识。
- 再抓取接口响应,看
is_ai字段是否存在。 - 最后查后端日志,看那次回复对应的模型、提示词和参数。
7. AI 身份披露的工程化最佳实践
7.1 把身份披露当作接口契约
很多团队把“AI 声明”只当作一句提示词,这是不对的。我建议在项目初期就把身份披露纳入接口契约。
例如,所有 AI 生成接口统一返回:
这样无论前端如何变化,下游系统至少可以从接口层面判断内容是否由 AI 生成。
7.2 自动化测试与 AI 测试
身份披露必须纳入自动化测试,不能靠人工抽查。常见做法是写一个测试用例,向智能客服接口发送若干条典型消息,然后断言响应中是否包含预期标识。
这只是最简单的校验。更完善的方案会使用语义相似度模型判断模型是否表达了“我是 AI”的意思,而不是简单匹配关键词。
7.3 安全与合规边界
做 AI 身份披露时,必须清楚两个边界:
- 不能为了披露而泄露敏感数据。日志里不要记录用户的身份证号、手机号、支付信息等。
- 生成记录要遵循最小权限原则。只有运维、安全、合规相关人员才能访问审计日志,普通开发者按需申请权限。
涉及内容删除或日志清理时,要提前确认保留周期,并做好备份。生产环境修改披露逻辑时,先在小流量灰度验证,再全量上线。
7.4 灰度发布与体验平衡
身份披露会影响用户对产品的感知,因此上线时最好配合灰度策略。可以先在 5% 流量中开启完整的 AI 标识,观察用户是否出现大量投诉、误操作或跳出率上升,再逐步放量。
并不是所有场景都需要高调展示“AI 生成”。比如内部效率工具,用户是公司员工,他们本来就知道内容来自 AI,这时就不用每次弹出水印。而在面向公众的社交平台、新闻平台,披露强度就需要更高。
8. 总结:做一个诚实的 AI 产品
回到开头那个问题:AI 应不应该告诉你它是 AI?
答案是肯定的。但更重要的是,这不是一句“应该”就能解决的问题,而是一套需要设计、实现、测试、审计的工程能力。从内容层提示词,到交互层 UI 标识,再到系统层元数据和日志,每一环都需要沉淀成代码和规范。
做 AI 应用开发的同学,可以把身份披露当成一个必选的“隐藏功能”来做。它不像推荐算法那样能提升点击率,也不像 Agent 调度那样能节省 token,但它决定了用户是否信任你的产品。
如果你正在做智能客服、AI Agent、AI 内容平台,建议先把这套披露机制补上,哪怕暂时没有监管要求,也比等到信任危机出现再补救要划算得多。下一步可以继续往 AI 应用开发、AI Agent 开发、AI 模型部署和 AI 测试这几个方向深入,把透明度和稳健性一起纳入你的 AI 工程体系。