Lenny's Newsletter

Advanced evals: How to find (and fix) hidden AI failures in your product

8.5内容质量
Advanced evals: How to find (and fix) hidden AI failures in your product

TL;DR · AI 摘要

AI产品评估(evals)是AI产品经理的核心技能,能系统性提升产品效果,Shopify等公司通过evals实现效率和成本的显著优化。

核心要点

  • Shopify用evals使AI工作流构建速度提升2.2倍,成本降低68%。
  • Cursor通过evals优化路由性能,用户满意度提升且成本下降41%。
  • Ramp使用on-device模型后,交易匹配精度从35%提升至83%。

结构提纲

按章节快速跳转。

  1. AI产品评估(evals)已成为AI产品经理的核心技能,直接影响产品效果。

  2. 超过50家AI公司发现,跳过评估系统会导致测量错误指标。

  3. Shopify、Cursor等公司通过evals实现效率与成本的双重优化。

  4. Evals将产品判断转化为可重复测试,生产错误可转化为优化数据。

  5. 免费插件可让代码代理完成大部分评估工作。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • AI产品评估(evals)
    • 行业价值
      • 成为AI产品经理核心技能
      • Y Combinator称其为AI初创护城河
    • 实施方法
      • 构建可重复测试系统
      • 生产错误转化为优化数据
    • 成功案例
      • Shopify效率/成本优化
      • Cursor用户满意度提升

金句 / Highlights

值得收藏与分享的关键句。

#AI产品#评估系统#工程实践#AI优化
打开原文

高级评估:如何发现并修复产品中的隐藏AI故障

为什么你永远不应该跳过错误发现

Hamel Husain

和

Shreya Shankar

2026年9月22日

👋 你好,我是Lenny。每周,我会分享经过深入研究的产品、增长和职业建议。更多信息:Lenny’s Jobs | Lennybot | 成为AI原生构建者及其他AI/PM课程

P.S. 通过成为Insider订阅者(数量有限),你可以免费获得一年的Cursor、Notion、Lovable、Replit、Wispr Flow、Linear、Factory、ElevenLabs、PostHog、Granola、Brain.fm、Waking Up等服务。了解更多。

在与播客嘉宾和产品经理的对话中,评估(evals)的话题越来越频繁地出现。上周我在社交媒体上分享的25个优秀产品经理职位中,近一半明确要求具备编写评估的经验。这项技能的价值只会越来越高。因此,我邀请Hamel和Shreya撰写他们去年广受欢迎的“构建改进AI产品的评估系统”一文的进阶版。基于他们与50多家AI公司的合作经验,他们发现大多数团队直接跳到编写指标,结果却测量了错误的事物。下面,他们将分享大多数团队跳过的流程关键部分、哪些步骤可以(和不可以)自动化,以及一个免费插件,该插件可以让编码代理为你完成大部分繁重工作。尽情阅读吧!

如需深入了解,参加他们即将推出的《面向工程师与产品经理的AI评估》课程,并在结账时使用折扣码LENNYSLIST,可享受25%的折扣。

到目前为止,你可能已经听说过评估是AI产品经理的核心技能。Anthropic前首席产品官Mike Krieger(现任Labs负责人)曾表示:“如果我们能教产品人员一件事,那就是编写评估现在可能已成为最重要的事情。” Y Combinator首席执行官Garry Tan表示:“评估正在成为AI初创公司的真正护城河。” Lenny播客的多位嘉宾认为“评估就是新的PRD(产品需求文档)”,越来越多的领先公司也在讨论投资评估带来的回报:

  • Shopify通过评估指导开发了一个AI工作流构建器,其速度是原有前沿模型系统的2.2倍,成本降低了68%。
  • Cursor通过评估开发了Auto Balance路由性能,显著提高了用户满意度,同时将成本降低了41%。
  • Ramp通过投资评估,将使用设备端模型在收据照片中找到匹配交易的精确度从35%提升至83%。
  • Harvey通过评估重建了AI合同审查工具,使产品内部质量评分几乎翻倍。

Rippling、Glean、Abridge、ElevenLabs和Robinhood也分享了他们如何利用评估系统性地改进AI产品。

AI产品易于更改但难以预测。一个提示、模型或代码的更改可能会改善一个行为,同时破坏另一个行为。评估将你对“良好”表现的判断转化为团队在发布前可以重复运行的测试。评估发现的生产错误可以转化为改进AI的额外测试用例,从而形成随时间推移而增强的竞争优势。

如今,AI生成更改的速度已超过人类审查的速度,评估通过自动检查产品是否仍按预期运行,帮助团队快速发布。

在我们之前的帖子中,我们详细介绍了构建评估(evals)的完整流程:发现并分析错误、创建定制化指标、建立持续改进循环。不幸的是,我们发现大多数团队会跳过错误发现这一初始阶段,直接进入编写指标的环节。

这很容易理解。通过大量用户会话记录寻找失败案例的过程显得缓慢且难以扩展,而指标则具体且易于自动化。但如果你过早编写指标,最终会做出过多关于重要性的假设——甚至可能测量了错误的事物,或以错误的方式测量了正确的事物。

这就是为什么错误发现相当于评估中的产品探索。正如产品探索能揭示哪些问题值得解决,错误发现则能揭示哪些AI失败值得测量。没有它,团队可能会围绕通用指标构建仪表板,浪费时间并引导产品走向错误的方向。

我们认为错误发现如此重要,如果你只能投入评估流程中的一部分时间,应优先处理这一环节。

在本文中,我们将向你展示如何使用Codex或Claude等编码代理进行有效的错误发现,具体分为三个步骤。我们已将此流程应用于50多家公司,每次工具都发现了严重影响客户体验的重大产品缺陷。一旦掌握基础,整个工作流程只需约30分钟即可完成。

注意:自上次帖子以来,错误发现的流程发生了很大变化。我们之前的帖子将此过程称为“错误分析”,现在我们将其称为“错误发现”,因为目标是识别值得测量的失败案例。继续阅读以了解新方法。

找出对你的产品至关重要的错误

当你构建AI产品时,需要通过评估了解其出错的位置。但维护评估需要时间和金钱;显然不可能测量一切。优秀的错误发现能识别出哪些失败值得测量并长期跟踪。即使你清楚需要进行错误发现阶段,也可能会被诱惑直接给代理一个包含用户会话完整记录的文件夹(这些记录包含你AI产品的用户交互数据),并要求其找出问题。代理在发现明显问题时通常比人类更快,也能发现我们可能忽略的模式。但当失败的定义依赖于你对优质产品体验的界定时,代理的可靠性会大幅下降。你可以向代理解释这些标准,但你通常只有通过审查数据才能首次发现这些标准。这种通过审查示例改变对“优质”定义的过程,称为标准漂移。

例如,以下是我们与Nurture Boss(一个帮助房产经理处理潜在租客对话的AI租赁助手)合作时的一次交互:

潜在租客:“这超出了我的预算。感谢你的业务。”

租赁助手:“谢谢!如果你的情况发生变化,或未来有任何其他问题,请随时联系。祝你有美好的一天!”

这次交互的完整对话将在下文关于追踪的讨论中提供。

在一项更广泛的研究中,我们针对同一公寓租赁助手的100条生产轨迹,运行了自动化评估工具和编码代理。我们发现了以下情况:

  • 代理忽略了需要产品判断和轨迹之外上下文的问题,例如文本消息中的Markdown格式以及未处理的人工交接(除了处理异议之外)。
  • 代理擅长发现轨迹内部明显的问题,例如与工具输出相矛盾的回答。
  • 代理还能发现人类容易忽略的问题,但它们会通过将良好响应标记为失败而引入噪声。

显然,自动化方法在发现某些类型的错误方面仍然很有用,尤其是在与人类判断结合使用时效果特别显著。那么,如何在利用代理的自动化优势的同时保持人类参与?答案是一种利用主动学习的方法,这是一种在时间有限的情况下选择最有信息量的示例进行审查的策略。首先从轨迹的多样化样本开始,以覆盖数据的范围。当你发现一个失败案例时,在决定自己理解它之前,先查看几个类似的实例。在审查足够多的示例后,让代理标注你随后可以接受或拒绝的轨迹。

所有这些记录和抽样工作手动完成会非常困难。但编码代理在这些任务上表现优异。本文的其余部分将逐步指导你如何与代理合作,通过我们为你准备的评估技能插件,进行有意义的错误发现。

第一步:从你的轨迹开始

错误发现需要轨迹。每个轨迹包括用户的输入和系统提示、系统在中间执行的操作(检索、工具调用、中间模型调用)以及产品的最终输出。每个轨迹应包含足够的信息,使审查者能够重建发生的情况并判断其是否良好。你可以选择将这些数据记录到数据库、评估供应商或甚至本地文件夹中。为简化起见,本文假设使用本地文件夹。

以下是租赁助手的轨迹可能的样子。请注意,这是其原始形式,通常你希望将其渲染为可读形式(我们稍后会讨论):

如果你没有轨迹,可以要求编码代理对你的应用程序进行插桩,使其记录这些数据。以下是一个此类提示的示例:

为该应用程序添加追踪功能,使每个用户与AI的会话都记录为一个完整的追踪。一个追踪对应一个用户会话。需包含用户输入、系统提示、所有工具调用及其结果、任何检索到的上下文、所有中间模型调用以及最终面向用户的输出。如果该应用程序已将追踪数据发送给供应商(如LangSmith、Arize、Phoenix、Langfuse等),请继续使用现有方案。同时生成本地副本:每个会话对应一个JSON对象,追加到traces/traces.jsonl文件中。若没有使用供应商服务,JSONL文件即可满足需求。

在完成产品追踪功能配置后,需要等待用户活动以收集追踪数据。如果尚未上线,可通过用LLM模拟用户查询生成合成追踪数据。虽然合成数据无法替代真实数据,但在某些情况下胜过没有数据。

专业建议:如何模拟用户查询

模拟用户查询的有效方法是定义少量维度,这些维度是您认为产品可能失败的方面。例如,租赁助手的维度可能包括任务类型(安排看房、询问价格、询问养宠政策)、提问者类型以及请求的清晰度(明确、模糊或超出范围)。然后让模型利用这些维度,将每个组合转化为自然语言用户查询。使用这种维度划分方式有助于引导AI生成更多样化的输出。

定义维度后,您的开发代理可以将各维度的值组合成不同场景。每个场景包含每个维度的一个取值。代理可以为每个场景单独调用模型。以下是一个生成合成数据的示例提示:

创建一个脚本,为AI租赁助手生成合成用户查询。使用下方的维度和取值作为固定输入,不得增删修改。任务类型:安排看房、询问价格、询问养宠政策;租客类型:首次租房者、搬迁家庭、学生;请求类型:明确、模糊、超出范围。通过组合每个维度的一个取值生成结构化测试场景列表。遍历所有场景,为每个场景单独调用模型。每次调用仅传入一个场景。强制输出结构化格式,包含单个user_query字段,然后将查询与场景信息一并保存到synthetic_queries.jsonl文件中。

上述提示建议为每个场景单独调用模型,因为我们的实践表明要求代理一次性生成所有场景往往会降低多样性。以下是一个合成用户查询的示例:

{ "user_query": "我们有两只狗,可能下个月要搬家。这可行吗?" }

生成合成数据后,需审查示例并删除不现实的内容。如果发现维度未覆盖的场景,请更新维度并生成覆盖这些空白的新示例。

生成高质量合成数据(尤其是复杂多轮对话)超出本文范围。我们建议尽可能获取真实用户数据而非依赖合成数据。如果必须使用合成数据,附录中提供相关技能可助您完成。

第2步:审查并标注您的数据

现在我们已经准备好帮助您查找产品中的错误了!我们开发了一个 evals 插件来引导您完成这个过程,该插件基于我们培训超过 4,500 名产品经理和 AI 工程师、并为 50 多家公司提供咨询服务的经验。通过以下命令安装插件:

bash
npx skills add https://github.com/ai-evals-course/evals-skills

然后将您的编码代理指向 /evals-start 技能或告知它数据所在位置:

“使用 evals-start 技能。我的追踪数据在 traces/traces.jsonl,我想查找 AI 产品中出现的问题。”

evals-start 是 evals 技能插件的入口点。它会分析您的情况并引导您进入合适的流程。在我们的情况下,我们有尚未分析的追踪数据,因此它会将我们导向错误发现流程。

自定义应用界面

error-discovery 首先会读取您记录的样本以学习其结构。然后它会为您数据创建一个小型的定制化评审应用并本地运行。以下是插件为租赁助理追踪数据生成的应用界面示例:

该界面以消息线程形式呈现对话,工具调用及其输出并排显示。您可以在自由文本框中输入注释内容。

界面定制是插件价值的重要组成部分。不同类型的界面最适合评审不同类型的数据。例如,写作助理的注释界面可能如下所示:

在此应用中,写作内容以文本块形式显示,旁边显示标志,这使其非常适合评审写作内容。

该技能中嵌入了若干设计原则,这些原则指导着界面的渲染方式。其中最重要的两个原则是:

  • 以用户实际看到的方式显示用户面向的输出。例如,电子邮件应看起来像电子邮件,PDF 应渲染为 PDF 等。
  • 暴露可能对导航或过滤有帮助的重要元数据。在租赁示例中,用户使用的渠道(如短信、语音、网页聊天等)可能是重要的过滤条件。

该技能还会指导您的代理对追踪数据进行聚类,以便构建多样化的初始样本。它会将聚类代表与随机选择的样本混合。这种方法并不完美,但经过验证比查看数据的简单方法更适合作为起点。以下是您的编码代理可能为写作助理展示聚类的示例:

在上述示例中,写作助理的注释应用允许您悬停查看聚类以评审代表性文档。如果您需要对聚类、界面或其他内容进行修改,只需与 AI 对话即可。

使用编码代理的最大优势在于能够实时更改界面。如果您发现缺少字段、想要过滤到特定追踪切片或以不同方式呈现数据,只需提出要求即可。例如,如果您如上一节所述生成了合成追踪数据,可以要求编码代理根据您定义的维度(如角色或任务类型)创建过滤器。这使您能够检查失败是否集中在某一类场景中。

在应用中标注追踪数据

应用运行后,该技能会要求你先审查10条追踪记录,然后再建议你查看潜在错误。这是为了防止自动化偏见而刻意设置的保护机制。你的任务是就任何让你困扰的问题留下自由文本的注释。注释可能包括:"助手放弃了而不是提供替代方案"、"未能渲染日程小部件,而是提供了一个时间列表"、"语气对这个角色来说过于正式"。

制作注释时的一些经验法则:

  • 描述问题时要让同事(或代理)能够理解你的意思。"糟糕的响应"是一个糟糕的注释。"助手说设备可用,但工具输出显示设备已被租出"这样的描述才是可操作的。
  • 不要尝试进行根本原因分析。你要关注的是从用户视角看哪里出了问题,而不是系统内部为何失败。例如,不要试图诊断检索问题。
  • 停留在第一个上游错误处。如果一条追踪存在多个问题,只需标注你首先注意到的那个。这个启发式方法能帮你节省时间,专注于影响最大的问题,因为代理轨迹中的上游故障通常比下游故障更重要。当你在这个练习中变得更高效时,可以放宽这个限制。
  • 初期只需标注失败案例。标注让追踪变得良好的因素可能会增强代理的理解,但如果时间紧张也可以跳过。

在标注至少10条追踪后,AI将从你的初始注释中学习,并尝试在数据中发现你可接受或拒绝的其他问题。重要的是不要盲目接受代理的早期建议。请仔细审查这些建议,并利用分歧来修正代理的工作理解。你可能需要多次人机交互迭代,直到建议变得有用。我们鼓励你继续标注超过前10条追踪,直到你自己的学习达到平台期。经验法则建议目标是100条追踪,以确保你不会过早放弃。更多的追踪记录也会为AI提供更多信息,从而改进它的建议。

在你为写作助手审查建议时,界面可能如下所示(你的具体界面会有所不同,因为AI会根据你的使用场景进行定制):

这是另一个按失败模式分类建议的视图:

如果AI的建议不正确,你可以让编码代理进行修复——就像你可以更改界面一样。你的注释不需要完美。目标是找到日志中的可操作问题,而不是进行彻底搜索。现在你已经通过人工与AI混合标注追踪数据打下了基础,现在可以开始寻找可采取行动的失败模式了。

第3步:将失败模式转化为产品优先级

当你收集到至少100条多样化的标注追踪后,下一步任务是将它们转化为优先级列表中的产品问题。AI将尝试将你的注释聚类为失败模式并进行计数,以便你发现模式。以下是我们的公寓租赁助手的示例:

本篇文章仅限付费订阅者

已经是付费订阅者?

上一篇

客座文章由

我是一名拥有20多年经验的机器学习工程师。更多关于我 @ https://hamel.dev

订阅 Hamel

订阅 Shreya