进阶 AI 评测:如何发现并修复产品中的隐性失败
👋 你好,我是Lenny。每周我都会分享经过深入研究的产品、成长和职业建议。更多内容:伦尼的职业|伦尼机器人|成为一名AI原生建造者以及其他最爱人工智能/项目管理课程
附言:免费获得一整年Cursor、Notion、Lovable、Replit、Wispr Flow、Linear、Factory、ElevenLabs、PostHog、Granola,Brain.fm《觉醒》等,通过成为Insider订阅者(送完即止)。
了解更多.
在我与播客嘉宾和PM的对话中,评估越来越频繁地被提及。而且近一半的25 太棒的PM我上周在社交媒体上分享的职位空缺要求有写评估的经验。
这项技能只会越来越有价值。所以我问了哈梅尔以及施蕾娅为他们非常受欢迎的作品写一部高级续集“构建提升AI产品的评估系统”去年的帖子。
他们从与50多家AI公司合作的经验中发现,大多数团队直接跳到编写指标,结果测量错误。下面,他们分享了大多数团队跳过的关键环节、哪些步骤可以(或不能)自动化,以及一个免费插件,让编码代理帮你完成大部分繁重工作。
祝你玩得开心!
想深入了解,欢迎关注他们即将发布的内容工程师和项目经理的AI评估课程结账时使用折扣码LENNYSLIST享85折优惠。
到现在为止,你可能已经听说过评估是AI项目经理的一项决定性技能。Anthropic前首席营销官、现任实验室负责人Mike Krieger曾说:“如果我们能教给产品人员一件事,那就是写评估报告现在可能是最重要的事情。”Y Combinator的首席执行官Garry Tan分享说:“评估正逐渐成为AI初创企业的真正护城河。”Lenny's Podcast的多位嘉宾曾认为“评估是新的PRD”,而且越来越多的领先公司也在谈论投资评估带来了回报:
- Shopify利用评估指导开发一个AI工作流程构建器,其速度是它所取代的Frontier模型系统的2.2倍,成本低68%。
- 光标通过评估提升了自动平衡路由性能,提升了用户满意度,同时降低了41%的成本。
- 坡道投资评估后,自动收据收集产品的准确率从35%提升至83%。
- 哈维通过评估重建了其AI合同审核员,几乎将产品内部质量评分翻倍。
波纹,格林,桥梁,十一实验室, 和罗宾汉他们还分享了如何利用评估系统性地改进他们的人工智能产品。
AI产品易于更改,但难以预测。提示词、模型或代码的变更可能改善一种行为,同时破坏另一种行为。评估将你对“良好”的判断转化为团队可在发布前进行的可重复测试。
评估标记的生产错误可以成为额外的测试用例,提升你的人工智能,创造随时间积累的优势。
现在,AI能比人们审核更快做出变更,评估通过自动检查产品是否仍按预期运行,帮助团队快速出货。
在我们的前任职务我们详细阐述了评估构建的完整流程:发现和分析错误,创建定制指标,并建立持续改进循环。不幸的是,我们发现大多数团队跳过错误发现的第一阶段,直接进入编写指标。
原因很容易理解。查看冗长的用户会话记录以寻找失败感觉缓慢且难以扩展,而指标则具体且易于自动化。但如果过早编写指标,你最终会对重要性做出过多假设——可能导致测量错误,或测量错误。
这就是为什么错误发现在评估上相当于产品发现。正如产品发现显示哪些问题值得解决,错误发现揭示哪些AI失败值得衡量。没有它,团队就有可能围绕通用指标构建仪表盘,浪费时间并引导产品走向错误的结果。
我们认为错误发现非常重要,如果你只有评估过程的某一部分时间,就应该优先考虑它。
在这篇文章中,我们将向你展示使用像Codex或Claude这样的编码代理进行有效错误发现的三个步骤。我们已经为50多家公司使用过这个流程,每次这些工具都能发现严重的产品缺陷,这些缺陷正在损害客户体验。
一旦掌握了基础,整个工作流程只需大约30分钟即可完成。
注意:错误发现自我们上次文章以来发生了很大变化。我们之前的帖子称这个过程为“错误分析”。现在我们称之为“错误发现”,因为目标是识别值得衡量的故障。
继续阅读,了解这一新方法。
找出对你的产品重要的错误
当你构建人工智能产品时,你需要评估来了解它犯错的地方。但维护评估需要时间和金钱;衡量所有事情并不合理。良好的错误发现能识别哪些失败值得长期测量和跟踪。
即使你知道需要错误发现阶段,也很容易先给代理一个装满痕迹的文件夹——用户与你的AI产品会话的完整记录——让它找出问题。代理通常比人类更快发现明显问题,也能发现我们可能忽略的模式。
但当失败依赖于你对良好产品体验的定义时,代理的可靠性就低得多。你可以向代理解释这些标准,但通常只有通过审查数据才能发现它们。
这个过程,即审查示例改变你对“良好”定义的过程,称为标准漂移.
例如,下面是一个从养育老板我们合作的一款AI租赁助理,帮助物业管理者处理与潜在租户的对话:
潜力股:“这超出我的预算。感谢您的光顾。”租赁助理:“不客气!如果你的情况有变化,或者将来还有其他问题,随时联系我。祝你有美好的一天!”
本次互动的完整对话见下方关于痕迹的讨论。
对大多数经纪人来说,这看起来是成功的;他们不会发现这条线索中的错误。但产品的目标是促进销售,这包括为潜在客户的不同需求找到合适的物业匹配。
在这种情况下,经纪人应该探索更便宜的单元或同公司拥有的其他物业,并向潜在客户提供替代方案。
如果我们在给它跟踪时提前提示代理查找“异议处理”失败,代理会自动发现错误。但我们只知道要把“异议处理”加入我们的标准之后我们自己也看到了这种追踪。
这就是标准漂移的典型案例——也说明在派客服去找一堆跟踪错误之前,必须退一步审查失败并定义成功。
在更广泛的研究我们用自动评估工具和编码代理对同一公寓租赁助理的100条生产痕迹进行了测试。我们发现了以下情况:
- 代理人错过了需要产品判断的问题以及跟踪之外的上下文,如文本中的Markdown格式和未接的人工交接(除了异议处理外)。
- 特工擅长发现明显的失败在一个痕迹内,比如与工具输出相矛盾的答案。
- 特工还能发现人类忽视的问题但它们通过将良好响应标记为失败而引入噪声。
显然,自动化方法在发现某些错误方面仍然有用,尤其与人类判断结合效果显著。那么,如何在保持人工知情的同时,从客服的自动化中获益?
答案是一个能够借鉴的过程主动学习,一种在有限时间内选择最具信息量的示例进行复查的方法。从多样化的痕迹样本开始,以覆盖数据范围。
当你发现失败时,再观察几个实例,再决定理解它。当你审查了足够多的例子后,让代理标注你可以接受或拒绝的痕迹。
所有这些簿记和采样工作手动完成会很困难。但编码代理在这方面非常出色。本文的后面将一步步引导你了解如何与代理合作,借助评估技能插件我们为你做了准备。
第一步:从你的痕迹开始
错误发现需要跟踪。每个跟踪包含用户的输入和系统提示符、系统中间的操作(检索、工具调用、中间模型调用)以及产品的最终输出。
每个跟踪应包含足够信息,供审核者重建发生情况并判断其是否良好。您可以选择将这些数据记录到数据库、评估供应商,甚至本地文件夹。
本文为简化起见,我们将假设为本地文件夹。
以下是租赁助手的跟踪可能长什么样。注意,这是它原始形态的样子,通常你希望渲染得让人类可读(我们稍后会详细说明):
如果没有痕迹,你可以请求编码代理对应用进行仪器化,让它记录这些数据。以下是一个提示词可能的样子:
对该应用进行仪器化,确保每次与AI的会话都被记录为一次完整的追踪。跟踪是一个用户会话。包括用户输入、系统提示、每个工具调用及其结果、任何检索的上下文、每个中间模型调用以及最终面向用户的输出。如果这个应用已经向供应商(LangSmith、Arize、Phoenix、Langfuse 等)发送了追踪,继续使用。还要写一份本地副本:每个会话写一个 JSON 对象,附加到 traces/traces.jsonl。如果没有供应商,JSONL 文件就足够了。
一旦你的产品安装好仪器,你需要等待用户活动来收集痕迹。如果你还没启动,可以通过用大型语言模型模拟用户查询来生成合成痕迹。
虽然合成数据无法替代真实数据,但有时候总比没有好。
专业提示:如何模拟用户查询
模拟用户查询的有效方法是定义少量你预期产品可能失败的维度。例如,租赁助理的维度可能是任务(安排参观、询问价格、询问宠物政策)、提问者类型,以及请求是否明确、含糊或超出范围。
然后让模型使用这些维度,并将每个组合转化为自然语言用户查询。使用这样的维度有助于引导AI避免产出同质化输出。
一旦定义了维度,编码代理就可以将它们的值组合成不同的场景。每个场景包含每个维度的一个值。然后代理可以为每个场景单独调用模型。
这里有一个示例提示,将用这种方法生成合成数据:
创建一个脚本,生成合成用户查询,供AI租赁助手使用。将以下尺寸和数值作为固定输入。不要添加或更改它们。通过将每个维度中的一个值组合,创建一个结构化的测试场景列表。循环运行这些场景,并为每个场景单独调用模型。每个调用只传递一个场景。用一个user_query字段,然后将查询与其情景一同保存在synthetic_queries.jsonl.
- 任务:安排参观,询问价格,询问宠物政策
- 租客:首次租房,搬家家庭,学生
- 请求类型:清晰、模糊、超出范围
上述提示建议为每种场景分别调用模型,因为我们发现让代理一次性调用往往会产生更少的多样性。以下是一个合成用户查询可能的示例:
{ “user_query”:“我们有两只狗,可能下个月要搬家。这样可以吗?” }
生成合成数据后,复习示例并删除不切实际的。如果你发现维度未涵盖的情景,更新维度并生成新的示例来弥补这些空白。
产出高质量的综合数据(尤其是针对复杂、多回合的对话)超出了本文的范围。我们建议尽可能使用真实用户,而非依赖合成数据。如果你必须使用合成数据,我们附录里有一项技能可以帮助你。
第二步:审查并注释你的数据
现在我们准备好帮你发现产品中的错误!我们基于所学构建了一个评估插件来指导你完成这个过程教学超过4500名产品经理和人工智能工程师,以及与50多家公司的咨询服务。
安装NPX技能:
NPX技能添加https://github.com/ai-evals-course/evals-skills
然后把你的编码代理指向/evals-start 技能或者告诉它你的数据在哪里:
“使用evals-start技能。我的追踪在traces/traces.jsonl里,我想找出我的AI产品中出现的问题。”
evals-start是 的入口点评估技能插件.它会根据你的情况引导你到正确的工作流程。就我们而言,我们还有尚未分析的痕迹,所以它会引导我们到错误发现.
定制应用界面
第一件事错误发现DOS是读取你的记录样本以了解它们的结构。然后它会为你的数据创建一个小型审核应用,并本地提供给你。这是该插件为租赁助手创建的应用界面示例:
该界面将对话渲染为消息线程,工具调用及其输出会同时显示。你将注释输入自由文本框。
界面定制是插件价值的重要组成部分。不同类型的接口最适合审查不同类型的数据。例如,以下是写作助手的渲染注释界面可能的样子:
在该应用中,写作以文本块形式显示,旁边会显示标志,非常适合写作复习。
该技能中嵌入了若干设计原则,指导界面的渲染方式。其中最重要的两个原则是:
- 显示面向用户的输出,以用户看到的方式呈现。比如,邮件应该看起来像邮件,PDF应该渲染成PDF,等等。
- 展示可能有助于导航或过滤的重要元数据。在租赁的例子中,用户通过的渠道可能很重要,值得筛选:短信、语音、网络聊天等。
该技能还指示你的代理对你的痕迹进行聚类,以便构建多样化的初始样本。它将聚类代表与随机选择混合在一起。这种方法并非完美,但我们发现它比简单的数据分析方法更为良好。
以下是你的编码代理如何为你与写作助手一起审查的聚类示例:
在上面的例子中,写作助手的注释应用允许你将鼠标悬停在集群上以查看代表性文档。如果你需要修改集群、界面或其他任何内容,可以直接和AI聊天。
使用编码代理的最大优势是能够实时更改界面。如果你发现缺失字段,想过滤到某一部分痕迹,或者以不同方式渲染数据,只需询问即可。
例如,如果你生成了如上一节所述的合成痕迹,你可以让编码代理根据你定义的维度(如角色或任务类型)创建过滤器。这可以让你检查失败是否集中在某种场景中。
在应用中注释痕迹
应用运行后,技能会要求你审查10条痕迹,然后才建议错误复查。这是针对自动化偏见的刻意防护。你的任务是留下一个自由文本的笔记,说明你不满的事情。
注释可以是:“助理放弃了,而不是提供替代方案。”“未能渲染排程小部件,只提供了时间列表。”“语气对这个角色来说过于正式。”
做注释的一些经验法则:
- 描述问题,让同事(或经纪人)能理解你的意思。“错误响应”是错误的注释。“助理说设备可用,但工具输出显示是租赁的”是可诉的。
- 不要试图做根本原因分析。你要从用户角度了解问题出在哪里,而不是系统内部故障的原因。比如,不要试图诊断检索问题。
- 在第一个上游错误处停止。如果一条痕迹存在多个问题,就先标记你注意到的第一个问题。这种启发式方法帮助你节省时间,专注于最关键的问题,因为代理轨迹的上游失效往往比下游更重要。当你在这项工作上效率提升时,可以放松这个约束。
- 刚开始时只需要注释失败。标注什么让一条线路好,可能会增强你的经纪人的理解,但如果时间紧迫,也可以省略。
在注释至少10条痕迹后,AI会从你的初始笔记中学习,尝试在你的数据中发现你可以接受或拒绝的其他问题。重要的是不要盲目接受代理的早期提案。
仔细审查它们,并利用分歧来纠正代理的工作理解。你可能需要多次人工代理迭代,建议才会变得有用。我们鼓励你在前10条痕迹之后继续注释,直到你的学习达到瓶颈。
经验法则是目标标记100条,以确保你不会过早放弃。更多的痕迹也会给AI更多信号,提升其建议。
这是你在审核写作助手建议时界面可能的样子(你的具体界面会不同,因为AI会根据你的需求定制它):
这里有另一种按失败模式分组建议的观点:
如果AI的建议不正确,你可以告诉编码代理修正——就像你想更改界面一样。你的注释不必完美。目标是在日志中找到可操作的问题,而不是进行详尽搜索。
既然你已经用人类和AI混合注释你的痕迹打下基础,你就准备好寻找可以采取行动的失败模式了。
第三步:将故障模式转化为产品优先级
当你收集了至少100条不同的注释痕迹后,下一步任务是将它们整理成产品问题的优先级列表。AI会尝试将你的注释归类为故障模式并计数,以便你发现规律。
以下是我们公寓租赁助理的具体流程: