跳到主要内容

你的智能体无法穿透推理的脱敏层

· 阅读需 10 分钟
Tian Pan
Software Engineer

一次隐私评审批准了你的脱敏层。姓名、邮箱、账号、电话——所有这些都在提示词送达模型之前被清理掉了。你的单轮分类器仍然能跑到 94% 的准确率。六周后,你的多步骤智能体开始对类似"Sarah 用于登录的邮箱和她账单记录里的邮箱是同一个吗?"这样的问题给出自信但错误的答案,而且没人能在开发环境里复现。

脱敏层做到了 infosec 团队要求它做到的一切。它同时也悄悄地摧毁了你的智能体推理所依赖的性质:在不同轮次中出现的两个实体指代是同一回事。这个智能体并没有产生幻觉,它读到的是一份转录文本,其中 Sarah 变成了三个不同的人,"同一个"邮箱地址变成了两个互不相同的占位符。

这就是隐私评审抓不到的失败模式,因为评审审计的是离开边界的内容,而不是边界保留下来的内容。占位符对审计者而言是不透明的——这正是它存在的意义——而对衡量智能体质量的团队同样不透明,他们看到一个回归却无法追踪,因为造成它的转换发生在他们保留的所有日志的上游。

脱敏保留了分类效用,却摧毁了推理效用

PII 占位符背后最初的直觉来自单轮任务。"将这条工单分类为账单/技术/其他"在 Sarah Chen 变成 [NAME_1] 之后依然能正常工作,因为分类器从来不需要知道她是 Sarah。这种替换在信息上有损,但这种损失对它要回答的问题无关紧要。

多步骤智能体在做一件不同性质的工作。它们在跨轮次追踪实体、对它们做比较、跨工具调用做连接、判断两个指称是否共指。一旦映射不稳定,分类器能容忍的占位符格式就会同时破坏上述三项操作。

三种常见的转换方式,三种不同的失败形态:

  • 逐句随机 token(第 1 轮里 [NAME_4f9a],第 3 轮里同一个人变成 [NAME_7b2c])——共指被摧毁了。用户写了同一个名字两次,智能体却读到了两个陌生人。
  • 按类型固定 token(每个人名都变成 [NAME])——共指被过度合并。智能体把"顾客和客服"读成了同一个人,因为两者都叫 [NAME]
  • 会话级稳定 token[PERSON_47] 在一次对话内始终指代同一个人)——共指被保留了,但前提是上游的 token 化器在一开始就正确地解析了哪些跨度是共指的。如果"Sarah"和"陈女士"因为基于规则的提取器没把它们链接起来而拿到不同的 token,智能体就继承了这个链接错误。

隐私评审衡量的是 Sarah Chen 是否曾经越过边界。推理 bug 则存在于你选择了上述三种机制的哪一种、以及你的 token 化器对共指的判断是否正确。

infosec 视角和推理视角不是同一个评审

当安全团队批准一个脱敏层时,他们在问:PII 是否会到达模型供应商?它是否会落在我们无法控制的日志里?审计轨迹是否能证明合规?这些都是真实的问题,脱敏层对它们都给出了很好的回答。

推理团队问的则是一个安全评审表格里没有这一列的问题:脱敏之后,智能体还能不能正确回答涉及实体关系的问题?"这个用户以前联系过我们吗?""这是不是档案里那张支付方式?""开过之前那张工单的是不是同一个账户?"每一个都是身份连续性问题,答案取决于脱敏是否保留了两个跨度之间的相等关系。

这两个视角并不矛盾,但它们也不能互相替代。infosec 评审可以批准一个通过它自己的测试但同时以任何隐私指标都测不出的方式损害智能体的层。两个团队通常都不会发现,因为评估套件跑在真实数据上(脱敏之前),而生产跑在脱敏后的数据上——所以评估测量的根本就不是生产里那个系统。

让两个团队都保持诚实的几种模式

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates