跳到主要内容

潜伏在 Few-Shot 提示词模板中的客户记录

· 阅读需 12 分钟
Tian Pan
Software Engineer

隐私审计员在 SOC 2 续期前两天提出了一个问题:“为什么你入门引导提示词示例中的电子邮件字段是一个真实客户的地址?”产品团队在脑海中回溯了整个流程。一年前,当他们发布 AI 摘要功能时,有人需要为 few-shot 模板找一个“看看它是如何工作的”示例。他们从预发布环境(staging)中选取了一条具有代表性的客户记录,清理了明显的字段——姓名、账户 ID、电话——并提交了文件。该客户在六个月后流失了。根据数据保留政策,他们的记录已从数据库中删除。但该记录并没有从提示词模板中删除,而该模板已发布到了生产环境中的每一个租户。

团队曾像大多数团队一样,认为隐私边界就是数据库。提示词模板是代码。代码要经过评审。评审并不会标记 PII(个人身份信息),因为评审人员不会在标记为 example_input: 的 YAML 字符串中寻找它。能在 Slack 消息和邮件附件中捕捉 PII 的 DLP(数据泄露防护)扫描器不会扫描提交的代码,即使扫描,它也不会将部分清理过的客户记录识别为个人数据,因为它知道要查找的字段已被移除。剩下的所有内容——公司规模、行业、稀有的职位名称、特定的城市——都是扫描器没有规则去处理的数据。

这就是“演示数据即真实数据”的陷阱,大多数 AI 功能在发布时至少带有一个这样的实例。从“我们需要一个 few-shot 示例”到“投入生产”的最短路径,往往经过预发布数据、经过 15 分钟的清理,再经过一个没人负责隐私审查的代码评审。这个陷阱并不是因为有人怀有恶意。陷阱在于,提示词模板是一个数据处理界面,而团队中没人将其视为数据处理界面,现有的数据控制措施也无法延伸到它。

为什么提示词模板能逃过所有现有的控制措施

传统的数据泄露防护(DLP)工具是为个人数据存在于数据库、文件、电子邮件和网络流量中的世界而构建的。它们扫描 SaaS 上传、邮件附件和云存储。它们不会扫描你单体仓库(monorepo)中的 YAML 文件、编译进容器镜像的系统提示词,或者是请求时从配置中组装的 few-shot 代码块。DLP 中隐含的架构假设是:个人数据是在网络中流动的“内容”,而不是作为应用程序二进制文件一部分发布的字符串模板中的“参数”。

关于提示词级别数据泄露的数字凸显了这一差距。2026 年的行业调查报告称,发送给生成式 AI 工具的提示词中有 46% 包含敏感客户信息,77% 的员工曾将公司信息粘贴到大语言模型(LLM)服务中。这些遥测数据大多关于运行时(runtime)提示词——即用户在聊天框中输入的内容——即便在运行时,现有的控制措施也会遗漏大部分内容。而躺在你提示词模板中的已提交示例甚至从未进入运行时流程,因为它们本身就是运行时流程。它们在任何 DLP 边界看到它们之前,就已经被写进了应用程序中。

第二个失效的控制措施是代码评审。评审人员阅读提示词模板的方式就像阅读配置一样:他们检查示例是否符合 schema、JSON 是否有效、输出格式是否正确。他们不会像评审数据库查询那样评审提示词示例。代码评审中出现的 SELECT * FROM customers WHERE id = 12345 会立即引起质疑;但一个标题为“示例发票”且包含相同客户购买历史的 few-shot 代码块则不会,因为对“few-shot 示例”的认知框架是“文档”,而不是“对生产数据的查询”。

第三个失效的控制措施是数据保留管道。当客户流失或行使删除权时,工程团队会在数据库中运行删除脚本。该脚本知道用户表、事件表、审计日志。它不知道 prompts/onboarding/v3.yaml。客户被从记录系统中删除了,但仍保留在推理系统中,在那里,他们的数据在每次提示词组装时继续被处理,发送给模型提供商,并可能记录在模型提供商的请求日志中。

匿名化剧场:为什么仅清理明显字段是不够的

在将记录用作示例之前进行“清理”的标准心理模型是删除直接标识符——姓名、电子邮件、电话、账户 ID。剩余字段被认为是安全的,因为它们不直接识别任何人。这种直觉是完全错误的,而且这个领域在二十年前就知道它是错误的。

马萨诸塞州州政府雇员案例是一个经典引用:该州的保险委员会发布了删除了姓名和地址的“匿名”健康记录,而一名研究人员通过将剩余字段与公开可用的选民名单进行关联,重新识别出了该州州长的医疗记录。发挥作用的字段是出生日期、邮政编码和性别。随后的分析显示,仅这三个字段就能唯一识别大约 87% 的美国人口。匿名化失败并不是实现过程中的 bug。它源于对什么是标识数据的错误模型。

提示词示例中使用的客户记录比马萨诸塞州的数据集要丰富得多。一个典型的经过清理的示例通常保留:行业、公司规模、地理区域、职位名称、产品配置、交易模式以及代表性交互的实际内容——支持工单、电子邮件、发票、通话录音。这些字段中的每一个都是准标识符(quasi-identifier)。这种组合不仅能识别出某个人,还能识别出他们所在的公司,这在企业合同中具有法律分量,因为这些合同通常禁止在未经明确同意的情况下披露任何客户特定的运营数据。

一个有用的练习:看看你最常用的提示词中当前的 few-shot 示例,问问如果有人能访问 LinkedIn、客户的公司网站以及你产品典型工作流的副本,能否将该示例缩小到一两个真实客户。对于大多数 B2B AI 产品来说,答案是肯定的,特别是如果示例包含稀有角色(“多伦多一家 50–200 人金融科技公司的营收运营副总裁”)、特定事件(“B 轮融资后的入职引导”)或独特的产品配置。“但是我们删除了姓名”这种辩解,与马萨诸塞州委员会给出的辩解如出一辙,只不过它是被应用到了一个维度更高的数据集上。

当表面是模板时,“数据处理”意味着什么

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