作者以亲身经历解析EU AI Act聊天机器人透明度规则的适用范围、豁免条件和合规实现方式,附具体代码改动。
我做了一个 WordPress 聊天机器人插件。它的默认欢迎语是:
Hello! How can I help you today?
2026 年 8 月 2 日,欧盟《人工智能法案》——Regulation (EU) 2024/1689——第 50 条开始生效。它要求在与 AI 系统交互之前或交互刚开始时,告知自然人他们正在与 AI 系统交互。
"Hello! How can I help you today?" 不会让任何人知道任何事。我晚了五天推送修复,这已经比我因为另一个原因阅读该法规所能做到的要好五天了。
以下是该条款的实际内容、每个人都会第一时间想到的豁免条款,以及没有人提及的部分。
条文很短。直接与自然人交互的 AI 系统提供商,必须将其设计并开发为可以让这些自然人知晓他们正在与 AI 系统交互——除非对于一个合理知情、观察仔细且审慎的人而言,这一点显而易见。
这句话中有两点容易被人一扫而过。
这是一项设计义务,而非披露表格。义务是让系统构建成这样,使人们能够知情。这与"在某处放个通知"是不同指令。对于向他人提供软件以供部署的任何人来说,这意味着指向默认值而非设置页面。
义务落在提供商身上。在从模型供应商到插件再到网站所有者的链条中,谁被视为 AI 系统的提供商,是一个有真实答案的真实问题,我无法为你的情况给出答案。我能说的是工程层面的后果,这与答案无关:如果该义务落在链条的任何地方,满足它最便宜的地方是发货时的默认值。
第 50 条第 5 款补充道,信息必须以清晰且可区分的方式提供,最迟在首次交互时提供。不是在服务条款里。不是在两轮对话之后。
透明度义务的罚款可达 1500 万欧元或全球年营业额的 3%,取其较高者。
"除非显而易见"在这里起了很大作用,这是大多数人会停止阅读的地方。
测试的不是你认为它是否显而易见。 而是对于一个合理知情、观察仔细且审慎的人来说是否显而易见——这个标准假定的是普通注意力,而非专业水平。标题中标注了"AI Assistant"的小部件可能符合。商店角落里一个紫色圆气泡,知道你的名字、用流畅的散文回答你,可能不符合:把它做好的目的有一半是让它感觉不像机器人。
我在插件中保留了这个豁免选项,因为它是真实存在的,而且由网站所有者来判断。但我在设置页面上写明了犯错要付出的代价,我没有把它作为与颜色选择器并列的普通偏好来呈现。
第 50 条第 5 款还规定,信息必须符合适用的可访问性要求。
所以告知某人他们正在与 AI 交谈的通知,本身必须对该人可感知。灰底灰字的对比度为 3:1,或者一个没有无障碍名称的视觉徽章,从技术上披露了但实际上没有。
我还做了一个可访问性扫描器,这是我注意到这一点的唯一原因。我测量了自己披露信息的对比度,而不是凭肉眼判断:与面板的对比度为 6.92:1,而要求是 4.5:1。这只花了 2 分钟,而在这个背景下跳过的正是那种令人尴尬的事情。
披露本身是四行标记。围绕它的决策才是工作,其中三个是你只能通过先犯错才能发现的事情。
它渲染在消息日志之外。我的第一反应是让它成为第一个聊天气泡。两个原因说明这是错误的。消息区域带有 role="log" 和 aria-live,所以里面的任何内容都会被宣布为对话——披露会作为机器人说的话到达,这恰恰是使其不成为披露的框架。而且日志会滚动,所以四次交互之后通知就消失了。它现在位于标题和日志之间:不在实时区域内,不在滚动区域内。
启动器也承载了它。屏幕阅读器用户先遇到按钮,aria-label="Open chat" 无法告诉他们将要打开的是什么。它现在读作"Open chat with the AI assistant"。如果披露被关闭,这个措辞也会被关闭——两者不应该不一致。
对于只是更新的网站,它是默认开启的。这是我差点推送出错的一个。更新 WordPress 插件不会触发激活钩子,所以种子默认选项的例程永远不会为现有安装运行。一个新选项会是缺失的,被读取为 falsy,披露将对每个现有客户静默关闭——这正是最有可能在真实欧盟商店中运行该插件的人群。两个访问器现在都默认为显示它,空的自定义文本会回退而不是什么都不渲染。我通过删除两个选项并重新加载前端来验证它。
开关是一个 <select>,而不是 checkbox。 未选中的 checkbox 在 POST body 中完全不存在。register_setting 永远不会看到该键,所以存储的选项保持其先前的值:关闭披露看起来会起作用,但实际上会静默无效。该屏幕上其他每个布尔值已经是 select,正是因为这个原因,而我忘记了原因。
本周值得检查的四件事,都不需要你信任我对法规的解读。
以访客身份打开你自己的聊天小部件。阅读它说的第一句话。如果它没有告诉你它是 AI,你设置中的其他任何地方也不会。
检查打开它的按钮,而不仅仅是面板。这是屏幕阅读器用户做出决定的地方。
检查通知是否在对话中保留下来。如果它随着前几条消息滚动走了,它满足"在开始时"的要求,仅此而已——这可能就足够了,但要深思熟虑地决定。
检查它的对比度。第 50 条第 5 款对可访问性有明确说明,这是义务中附有数字的部分。
该义务是否适用于你。这取决于你的运营地点、你的访问者是谁,以及你在从模型到对话的链条中所处的位置。我是一个因为法规破坏了我的产品而阅读它的开发者;我不是律师,这不是法律建议。
我相当有信心的是范围更窄的内容:一,默认问候语说"Hello! How can I help you today?"不会让任何人知道他们在与机器交谈,而且对第 50 条的任何解读都不会使那句话足够。
在我的产品中,该规则生效后它说了两天。你的可能现在还在说。
这是由构建该插件的人编写的。这是明明白白陈述的,而不是埋藏起来的,这样你就可以权衡它。
AI Customer Support Chatbot & Lead Automator
最初发布于 groundedwp.com。