跳到主要内容

40 篇博文 含有标签「governance」

查看所有标签

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

· 阅读需 12 分钟
Tian Pan
Software Engineer

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

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

两个 PM 的难题:当提示词所有权与产品所有权发生偏离时

· 阅读需 12 分钟
Tian Pan
Software Engineer

周二早上收到了一张支持工单:一名客户收到了关于退款期限的、言之凿凿的错误回答。工程团队调取了追踪记录,发现模型识别错了意图。产品 PM 查看仪表板,发现上个迭代发布的“极速退款”入口触发了一个 Prompt 从未针对其进行过调优的意图。平台 PM 指着评估套件(eval suite)说,测试全是绿色的。两人在技术层面都是正确的。但客户得到的回答依然是错的。

这就是“两个 PM 问题”,大多数 AI 团队都存在这个问题,只是没有给它命名。产品 PM 负责面向用户的界面——意图、成功指标、支持升级路径。平台或 ML PM 负责 Prompt、模型选择、评估套件和成本上限。两者的路线图在季度规划层面是协调的,但在每周发布层面却在背道而驰,因为两个 PM 在不同的仪表板上针对不同的指标进行优化,且有着不同的变更控制流程。

这种有趣的失效模式并不是因为两个 PM 意见不合,而是因为他们都在各自的职责范围内正确地完成了发布,却共同导致了一个无人负责的退化(regression)。

AI 网络保险:你的智能体会首先发现的保障缺口

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个编程智能体在凌晨 2 点合并了一项变更,导致客户的生产数据库下线了 90 分钟。一个客户服务智能体在循环被终止前,向外发送了 1.4 万封措辞错误的退款拒绝邮件。一个自主对账工作流对 2800 张卡进行了重复扣款。损失是真实的,审计追踪指向了你的公司,你的财务团队针对六周前续签的网络保险保单提出了理赔。保险公司的回复是一封礼貌的信函,解释说该保单涵盖的是“恶意第三方的未经授权访问”和“对员工的社交工程攻击”——而该智能体是经过身份验证的,其行为是经过授权的,且没有员工被欺骗。理赔被拒。损失只能由你的资产负债表承担。

这并非假设性的极端案例。它是未来 18 个月内最典型的理赔画像,保险业深知这一点。网络保险(Cyber)、职业责任险(E&O)和董事高管责任险(D&O)的保单条款是根据一种威胁模型校准的,在该模型中,泄露的严重程度取决于记录外泄的数量,而事故响应则取决于计费的取证小时数。智能体 AI(Agentic AI)产生的事故并非这种形态。它产生的是一种精算师没有任何基准数据可参考的形态,而保险公司在缺乏精算基准时的第一反应,就是将这种风险敞口完全排除在保单之外。

你的智能体有两条发布流水线,而非一条

· 阅读需 12 分钟
Tian Pan
Software Engineer

我合作过的一个团队在周三下午发布了一个“微小的提示词调整”。同一个 PR 还向智能体注册中心添加了一个新工具——一个对内部管理 API 的便利封装,提示词现在偶尔会调用它。评估套件通过了。金丝雀发布看起来也很正常。到周四早上,由于智能体处理了一个包含提示词注入攻击的支持工单,一名客户的计费记录被修改了。审计追踪显示,管理工具完全按照设计运行。值班工程师的第一反应——回滚提示词——毫无用处,因为凭证已经使用,数据行已经写入。

复盘报告将其定性为安全审查失败。其实不是。这是发布流水线的失败。团队通过相同的审查、相同的关卡和相同的回滚逻辑,发布了两个完全不同的资产类别——对模型的行为引导和授予智能体的新权限,就好像它们是同一种变更一样。它们并不是。一旦你将它们视为两个流水线,大多数关于“智能体治理”的争论就会变得清晰得多。

评估作者的单一文化:为什么你的基准测试会变成一张自画像

· 阅读需 12 分钟
Tian Pan
Software Engineer

绿色 CI 并不意味着“这个提示词有效”。绿色 CI 的本质是“编写评测的工程师想不出这个提示词会如何出错”。这是两个截然不同的断言,而它们之间的差距正是生产事故的温床。一个评测套件并不是对模型的测量——它是对编写者的冰冷写照。他们的方言、领域知识、资历、偏好的失败模式,以及他们在编写测试用例时恰好使用的模型。根据构造,工程师没想到的测试内容统统未经测试。更糟糕的是:他们会从同一个视角不断扩展套件,因此随着套件的增长,盲点并不会缩小,反而会变得根深蒂固。

这就是评测作者单一化(eval-author monoculture)问题,也是当今 AI 工程中讨论最少、风险最高的可靠性问题。团队痴迷于裁判偏差、位置偏差、冗长偏差、泄漏和污染——但上游偏差其实是最初决定测试用例的人的偏见。其他任何评测误差来源都会被它放大。如果你的套件是由一个人编写的,那么你就拥有了一个带有性格的基准测试,而这种性格正是你的 CI 能够捕获风险的无形天花板。

你的评估准则是真正的产品规格书 —— 且没有产品经理签过字

· 阅读需 13 分钟
Tian Pan
Software Engineer

一位产品经理写下了一段话:“助手应当乐于助人、准确且简洁,绝不能让客户感到匆忙。”一位工程师读了这段话,打开一个 YAML 文件,编写了 47 个加权标准,以便 LLM-as-judge 能够为每一个追踪(trace)生成一个分数。六个月后,那个 YAML 文件成了产品的实际规范。每一次发布都受其把关。每一次回归警报都基于它触发。每一个“达到发布质量”的决策都通过它来路由。而产品经理从未读过它。

这是当今 AI 工程中最为常见的、无意间发生的产品所有权转移。评估准则(rubric)不是对规范的衡量 —— 它就是规范,就像编译器不是对语言的描述,而是它的运行真相。就像编译器一样,评估准则也有决定语义的实现细节。哪种失败模式得 0 分而不是 0.5 分?哪个标准的权重是 0.3 而不是 0.05?哪些行为在评估准则中缺失,从而完全未被计算?每一个都是产品决策。而它们都没有出现在最初的任务书中。

发现的能力:当用户上线了你团队从未规划的功能

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个客户给客服发邮件,询问为什么你的 CRM 智能助手停止起草他们的 NDA 了。你根本不知道你的 CRM 智能助手竟然在起草 NDA。一位资深用户抱怨说,你的客服机器人的他加禄语(Tagalog)翻译质量自上周以来有所下降。你根本不知道你的客服机器人还会他加禄语。一个论坛帖子传播了一个提示词,能将你的代码审查助手变成一个还算凑合的安全扫描器,不到一个季度,你就收到了针对该助手生成结果提交的 CVE 报告。其中的每一项都是一个拥有用户群、业务影响力,但完全没有组织归属的功能——没有评估(eval)、没有 SLA、没有在 UX 中体现、没有列入路线图,而且还有一个隐蔽的、仅为 1 的公交因子(bus factor):那个摸索出这种用法的客户。

当你的产品封装了一个能力范围(capability surface)远超你设定范围的模型时,就会发生这种情况。用户会探索更广阔的能力范围,寻找能解决他们问题的行为,并在这些行为之上构建工作流。然后,当你进行下一次模型升级时,即便你的路线图上没有任何变动,他们也会将其视为一种退化(regression)。你与用户之间的契约不再是你书面写下的那份。它包含了模型碰巧为他们做到的、且你碰巧没有破坏掉的所有事情。

将此视为工程上的意外——“我们会强化提示词,增加护栏,下次我们会捕获到它”——这是一种范畴错误(category error)。“发现的能力”(Found capabilities)是一个产品管理问题。这门学科的核心不在于防止它们发生,而在于检测它们、决定如何处理它们,并记住你曾做出的决定。

内部 LLM 网关是新一代 Service Mesh

· 阅读需 11 分钟
Tian Pan
Software Engineer

走进任何一家有五十名工程师在生产环境编写 LLM 代码的公司,你都会发现七个网关形态的产物。推荐团队造了一个用于在 OpenAI 和 Anthropic 之间路由。支持机器人团队写了一个用来挂载他们的 Prompt 注册表。平台团队有一个半成品代理,处理鉴权但不处理限流。增长团队有一个 Lambda,在数据发出时进行 PII 脱敏。数据科学团队直接调用供应商 SDK,而且没人告诉他们停止这样做。没有共享网关。只有七个共同的问题,每个都被孤立且拙劣地解决了,而首席财务官 (CFO) 正准备询问为什么 AI 账单环比增长了 40%,却没有任何明确的负责人。

这与行业在 2016 年和 2017 年遇到微服务时的架构节奏完全相同。成千上万的外部依赖,每个团队都有相同的共同关注点——鉴权、重试、可观测性、策略——以及在“解决一次”或“随处重新发明”之间做出选择。当时的答案是服务网格 (Service Mesh)。现在的答案是内部 LLM 网关,而大多数公司仍处于“随处重新发明”的阶段。

Prompt-Eligibility:数据分类中缺失的那一列

· 阅读需 13 分钟
Tian Pan
Software Engineer

调出你公司的数据分类政策。公开、内部、机密、受限——四个整齐的层级,每一个都映射到一组访问控制和一份批准的存储位置清单。现在问一个该政策从未准备回答的问题:这些层级中,哪些允许以发送给第三方模型 API 的 Token 序列的形式离开公司边界?

答案几乎总是沉默。这并非因为政策本身有误,而是因为它是不完整的。当今使用的每种分类方案都是为一种访问向量设计的,即询问“该员工是否被允许读取这一行?”Prompt 层引入了一个完全不同的向量:一个获得授权的服务读取了该行,将其转换为 Prompt,并将其跨网络传输给一个供应商,而该供应商可能会记录它、在其上进行训练,或将其以明文形式保存三十天。这些都不属于读取权限范畴。这些都不在覆盖范围内。

这就是缺失的一列。在你添加这一列之前,你的数据分类文档只是在自信地宣称一种你实际上并不具备的控制态势。

影子 MCP:你的安全团队从未听说过的工具服务器已经在工程师的笔记本电脑上运行了

· 阅读需 14 分钟
Tian Pan
Software Engineer

你的安全团队拥有公司信用卡上每一项 SaaS 订阅的完整清单、每一个获得管理员授权的 OAuth 应用,以及连接到公司 Wi-Fi 的每一台设备。然而,对于你的高级工程师笔记本电脑上当前绑定到 127.0.0.1 的七个进程,他们却完全视而不见——一个带有长期 Staging API 令牌的“部署助手”,一个订阅了包含客户数据的 Slack 频道的“工单分类器”,以及一个拥有生产分析数据仓库读取权限的“发布说明生成器”。这些都不在供应商名单上。它们不会出现在 SSO 日志中。所有这些都在利用工程师现有的凭据运行,执行着从未经过审批的操作。

这就是影子 MCP(Shadow MCP),它是企业中增长最快的未管理授权面。模型上下文协议(Model Context Protocol)使得将任何工具接入任何 LLM 的成本变得极低,而工程师们——天性使然——首先接入了那些最显而易见的工具。Saviynt 的 CISO AI 风险报告指出,75% 的 CISO 已经发现其生产环境中运行着未经授权的 AI 工具。GitHub MCP 服务器在 2026 年初的周安装量突破了 200 万次。Postgres MCP 服务器允许 LLM 对开发者能接触到的任何数据库执行 SQL 提示词,其周安装量已超过 80 万次。这些数字中没有一个代表企业的 IT 决策。

共享提示词的“夺旗日”:当一次修改引发三十个团队的性能回归

· 阅读需 12 分钟
Tian Pan
Software Engineer

对共享系统提示词的第一次修改感觉就像是优秀的工程实践。三个团队都在各自智能体的顶部粘贴了相同的 18 行安全前导指令,有人注意到了这一点,内部平台团队说了一个显而易见的提议:让我们把它中心化吧。于是 prompts.common.safety_preamble@v1 出现在了注册仓库中。由于这是阻力最小的路径,加上安全团队很高兴能由一个团队统一负责措辞,30 个团队在短短一个季度内就采用了它。在接下来的两个季度里,这看起来就像是一个完美的 DRY (Don't Repeat Yourself) 胜利。

随后,安全团队需要对措辞进行微调。可能是新的合规条例收紧了助手可以主动提供的用户信息范围,也可能是红队发现需要向拒绝条款中增加一句话。平台团队完成了修改,发布了 v2 版本。不到一天,支持队列就充满了消费团队的消息:我们的评估 (eval) 下降了、我们的格式崩了、我们的工具调用率减半了、我们的语气变了、延迟增加了(因为模型开始进行更多推理)。每个团队都希望回退修改。而安全团队需要发布它。没有人能在不进行重新评估的情况下升级,但又没有人负责重新评估。欢迎来到共享提示词的“旗帜日 (flag day)”。

Token 预算是新一代的内部 IAM

· 阅读需 12 分钟
Tian Pan
Software Engineer

当你的 AI 账单月额度首次突破七位数时,预算会议的形式就会发生变化。在那之前,问题是“我们能否负担得起”。在那之后,问题变成了“谁能分到多少”——而大多数工程团队会实时发现,他们根本没有应对这一问题的政策框架。那个发布了最响亮演示的团队会意外地获得最高配额。财务部门则在推行扁平的人均上限,这让那些从事最高杠杆工作的团队陷入困境。安全部门则完全被排除在对话之外,直到有人发现评估团队过去六个月一直在通过个人 Token 额度拉取生产流量。

这种对话之所以总是感觉像是在争论云成本,是因为它确实接近云成本,但不完全是。在云端,浪费的单位是一个被遗忘的 EC2 实例,最坏的情况是账单翻三倍。而对于 Token 配额,浪费的单位是一个失控的 Agent 循环,而准入的单位则是面向用户的功能:谁掌握了预算,谁就能发布功能。后一种特性使得 Token 分配更接近基于能力的安全性(Capability-based security),而不是云 FinOps。配额不仅仅是一个支出上限。它是执行一类推理的权利。