跳到主要内容

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

· 阅读需 12 分钟
Tian Pan
Software Engineer

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

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

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

“发现的能力”的解剖

“发现的能力”具有三个传统功能所不具备的属性。首先,它在拥有负责人之前就已经有了用户——采用行为先于任何团队对该行为存在的察觉。其次,它的边界是由底层模型而非你的代码定义的:该功能是“模型今天在处理这类输入时碰巧表现良好的任何行为”,这是一个移动的目标。第三,它的存在对你的评估套件(eval suite)是不可见的:你针对决定上线的功能编写了评估脚本,因此模型可能会在回归过程中完全失去这项能力,而你的 CI 却依然显示绿色。

例子层出不穷。ChatGPT 用户经常将助手当作律师;关于如果法律建议出错 OpenAI 是否应该承担责任的诉讼正在进行中。客服机器人被用户指示“同意所有请求”,然后因做出荒唐的承诺而被当作权威引述。代码助手被强行推上岗位,充当安全扫描器、重构规划器、依赖审核器和文档生成器。这些都不在路线图上,但它们都有用户。

这种情况之所以与“影子 IT”(shadow IT)相似,是因为它们的失效模式是相同的:需求存在,官方产品未覆盖,用户于是利用手头现有的任何工具来绕过缺口。不同之处在于,影子 IT 的工具来自你的防御边界之外;而对于“发现的能力”,工具 就是 你的产品。你无法推卸责任。

洞察意图而非仅是 Token 的遥测技术

大多数生产环境中的 AI 系统在这个问题上记录了错误的信息。它们记录延迟、Token 计数、提示词和补全文本、拒绝率以及工具调用追踪。这些是调试单个请求的正确原语,但对于察觉上周 8% 的流量现在是你的 CRM 智能助手被要求起草合同来说,它们的观察高度不对。

你需要的信号是意图漂移(intent drift):即用户实际要求系统执行的操作的 分布 发生了变化。意图漂移在单个请求级别是不可见的,但在群体级别却显而易见。揭示它意味着将每个请求视为具有一个潜在的意图标签,随着时间的推移对这些标签进行聚类,并观察那些在团队没有发布任何相关功能的情况下却不断增长的聚类。

在实践中,这看起来像是几个活动部件协同工作:一个运行在采样流量上的轻量级意图分类器(通常一个小巧、便宜的模型就足够了),一个能将你设定的意图与兜底的“其他”类别区分开来的稳定分类法,以及一个旨在让“其他”类别变得无法被忽视的仪表盘。当“其他”类别在一个季度内从 3% 攀升到 15% 时,这就是你的信号。没有那个仪表盘的团队只能通过流失面谈来了解其“发现的能力”。

第二层防线很有帮助:对输入措辞和输出结构进行异常检测。如果模型以前生成散文,现在开始生成 JSON,或者开始用一种你从未测试过的语言回答,这种结构性的转变会在意图转变之前显现出来。标准的 AI 可观测性工具可以通过统计学检测到这些;这门学科的关键在于将这些告警发送给一个有权询问“我们现在是否应该有意识地上线这个功能?”的人。

分流决策:提升、弃用或容忍

一旦发现的能力变得可见,你有三个选择,而假装只有两个选择是大多数团队都会陷入的陷阱。你可以提升(promote)它——将其纳入评估套件,在 UX 中命名,指派负责人,将其视为一份契约。你可以弃用(deprecate)它——在提示词或护栏层拒绝该意图,向受影响的用户告知这一变化,并接受用户流失。或者你可以容忍(tolerate)它——明确表示不支持但也不封禁,同时接受下一次模型升级可能会移除它的事实。

“容忍”是一个真实且通常正确的选项。提升每一个发现的能力会将你的路线图变成积压他人意外行为的待办列表。弃用每一个发现的能力等同于免费允许竞争对手接管这些工作流。错误在于含糊地做出选择。一个在没有人决定容忍的情况下被“容忍”的能力,等同于偶然间不被支持的能力——这意味着下一个问“我们支持这个吗?”的人,会根据他们询问的对象不同而得到不同的答案。

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