A mandala pattern created out of plain text characters.

关于 AI Explain 的反思:事后分析

作者头像MDN 团队阅读时间:10 分钟

我们最近推出了两项新的 AI 体验 - AI Explain 和 AI 助手。感谢我们社区的反馈,我们意识到 AI Explain 需要更多改进。我们已经将其禁用,并将努力使其成为更好的体验。

在这篇博客文章中,我们将深入探讨 AI Explain 背后的故事:其开发、发布以及导致我们按下暂停按钮的原因。我们非常重视我们社区的意见,这些意见在这个决定中发挥了重要作用。展望未来,我们计划在 2024 年恢复对该功能的开发,这将使我们有充足的时间解决收到的反馈,并以一种对所有希望使用它的人都有帮助的方式改进该功能。

推出 AI 功能

在 2022 年 3 月推出 MDN Plus 的准备工作中,我们 2021 年的大部分时间都花在了用户研究上,试图了解人们在 MDN 上遇到的主要痛点。一个经常被提到的主题是,对于软件开发新手来说,内容的发现能力非常重要。经验丰富的开发者可以通过有效地搜索他们需要的信息来提高工作效率,但新的开发者通常还需要培养这种技能。

我们从读者那里听到的一个反复出现的抱怨是,MDN 在你知道要查找什么时非常出色。如果你不知道,就很难发现你需要的的信息,也很难从相关的文档中提取有意义的知识。经验不足的开发者很难浏览 MDN,而且经常转向其他地方寻找他们需要的信息。更重要的是,我们对搜索引擎高度依赖,超过 90% 的流量来自搜索引擎。我们知道,改进网站搜索将有助于提高发现能力,并看到了将搜索改进与新颖的网站交互方式相结合的机会。

我们注意到,理解 MDN 上的代码示例并不总是那么容易,因为它们通常会结合多种功能,其中并非所有功能都在当前文章中解释。但是,全面解释每个细节 - 比如在每个包含 CSS 示例的页面上定义 CSS 选择器是什么 - 这是不切实际的。通过 AI Explain,我们可以让读者更好地理解 MDN 文档中嵌入的代码示例,而不会压倒核心内容。

使用生成式 AI 与文档进行交互

在 2023 年 1 月,我们开始尝试使用 OpenAI 的 GPT-3.5 API 来确定如何增强我们的文档平台,并使我们的网站更加用户友好。我们看到了其在以下方面的应用潜力:总结文档页面、解释现有的代码示例、为缺少示例的页面生成示例,以及根据用户查询生成结合不同技术的独特代码示例。

我们还看到,其他面向开发者的公司正在对这项技术进行大量投资,并在其之上构建产品。考虑到 MDN 的文档是在开放的知识共享许可下公开提供的,并且被认为是同类最佳,因此可以合理地假设大多数模型都已在我们的内容上训练过,并且开始宣布了一些明确允许使用我们文档的产品。这让我们明白,无论我们个人的感受如何,我们的用户已经通过生成式 AI 访问我们的内容。在社区的支持下,我们处于独特的位置,可以了解 AI 如何增强文档以及开发者如何使用它。我们丰富的经验、求知欲以及我们的贡献者和主题专家网络,使我们处于有利位置,可以通过迭代和反馈来改进此功能。

在 2023 年 3 月,我们专注于开发两项在当前技术水平下最具前景的功能。

  • AI Explain - 一种让读者探索和理解嵌入在 MDN 文档页面中的代码示例的方式,描述代码或示例部分的目的和行为。
  • AI 助手 - 一个对话式界面,使用与用户问题相关的 MDN 文章提供简洁的答案,以提供上下文帮助,并提供用于回答问题的 MDN 页面作为来源。这个原型是与 Supabase 合作构建的,目的是让响应针对 MDN 内容进行定制。我们决定将此功能保留在登录后,这将要求读者拥有 MDN Plus 帐户。

我们认识到,这些功能为我们提供了一个机会,可以更好地帮助经验不足的开发者,我们的意图是帮助他们,而不是与我们的参考文档的精确质量和准确性相匹配。初学者刚开始学习浏览参考文档,并且经常转向其他,可能不太准确的信息来源。学习不是直接跳到正确的结论,而是一个迭代的过程,在这个过程中,我们考虑不正确的信息,并在我们的理解变得更加清晰时将其舍弃。就像一个人(作为专家或学习社区中的同行)可能会给出错误的答案一样,它仍然最终是有用的,因为它可以打破僵局,给我们的用户提供想法,并指引他们找到相关内容。

推出 AI Explain

让我们深入了解 AI Explain 的发布。

测试解释的准确性

我们首先使用 OpenAI 模型 gpt-3.5-turbo-0301 对 AI Explain 进行了测试,随后使用了 gpt-3.5-turbo-0613,因为这是从 2023 年 6 月 27 日起开始使用的默认模型。由于新模型的容量减少,我们恢复使用 gpt-3.5-turbo-0301。我们针对 MDN 上的 25,820 个独特代码示例运行了 gpt-3.5-turbo-0301,并结合自动化和手动测试来验证解释的响应。

由于初学者是最有可能使用此功能的受众,因此我们选取了一些常见的编程概念和示例,读者会针对 AI Explain 运行这些示例,并单独核实了响应。与这个受众形成对比,我们还选取了一些边缘案例和新的 Web 技术,我们认为模型可能难以解释。

关于自动化测试,由于 LLM 的输出是非确定性的,因此很难为这种类型的功能构建测试套件。因此,我们尝试过的一种方法是对 MDN 上的 25,820 个独特代码示例生成的 gpt-3.5-turbo-0301 解释进行运行,并将输出与 GPT-4 进行验证。此实验对响应的总结将生成的解释标记为准确、有点不准确或不正确。我们随机抽取了那些未被认为是高质量的响应,并对它们进行了手动检查和评估。

我们通过这种方式进行测试得出的结论是,在足够多的情况下,响应对用户来说是有帮助的,因此让用户在测试版中试用是有益的。除了测试之外,从 2023 年 3 月开始,我们还进行了 Mozilla 内部演示,并向利益相关者和合作伙伴传达了正在进行的这些功能开发工作。

发布和反馈

6 月 28 日,我们在 MDN 上发布了 AI Explain。所有用户都可以通过嵌入式代码示例右上角的“AI Explain”按钮访问此功能。AI Explain 上线了 65 个小时,共有 24,132 个访客使用该功能生成了 44,229 个响应。3.34% 的响应通过答案旁的点赞/踩 UI 进行了投票。在这些响应中,68.9% 的投票将答案标记为有用,31.1% 的投票将答案标记为无用。为了从其他网站功能的角度了解这种反馈,我们通常会看到大约 70%-75% 的积极情绪来自对他们的体验进行评分的受众(例如,最近推出的侧边栏过滤器的积极情绪为 72%)。

6 月 30 日,社区成员在 GitHub 上创建了一个问题,表示对 AI Explain 生成的输出感到担忧,认为它不正确且具有误导性。该 GitHub 问题获得了 1,287 个赞,并收到了 115 条评论。

我们还在 Mastodon、Discord、Twitter 和 Matrix 上看到了社区成员分享他们对该功能的担忧。我们总共收到了 11 个在社交媒体上分享的独特示例,这些示例展示了 AI Explain 生成的输出,这些输出要么不准确,要么具有误导性。

  • 在四种情况下,代码示例包含了 GPT-3.5 不了解的较新的 Web 功能,因为它对信息的限制截止到 2021 年。
  • 在三种情况下(包括一个重复的示例),我们发现代码示例过于复杂,以至于许多开发者都很难解释它们。
  • 在两种情况下,解释忽略了重要的语法细节(斜杠、简写符号)。
  • 在一种情况下,解释大部分是正确的,但错误地标记了一个缺失的闭合标签,而该标签实际上存在于代码示例中。
  • 在一种情况下,没有发布响应的屏幕截图或文本,因此我们无法对其进行分析。

负面反馈的总体情绪是,AI Explain 尚未准备好发布,并且将生成式 AI 添加到 MDN 不是对平台的良好补充。

回滚和响应

我们承认,在全面发布 AI Explain 功能方面存在失误,而没有像最初计划的那样将访问权限限制在已登录的用户。这个错误被周末期间提交的 GitHub 问题所放大。为了解决这个问题,我们迅速停用了该功能,开始了一项全面的内部审查,并对用户反馈进行了彻底的分析(如上所述)。GitHub 问题是在 6 月 30 日 CEST 时间 22:00 提交的,我们在 7 月 1 日 CEST 时间 09:40 禁用了 AI Explain,并于 CEST 时间 10:20 部署了更改。考虑到问题报告者和团队之间的时区差异,这是我们可以采取行动的最早时间点。AI Explain 按钮已从 MDN 上的代码块中删除,AI Explain 现在对任何用户都不可用。

我们可以改进的地方

这次发布有两个重要的方面需要从中吸取教训

  1. AI Explain 最初是作为一项面向登录用户的实验性功能而设计的,类似于 AI Help。将它公开发布给所有用户,并且没有明确说明其实验性质,这是一个错误。
    • 我们已经承认并解决了团队内部的这个错误。我们还更新了开发流程,以防止将来出现类似的疏忽。
  2. 由于 GPT-3.5 在 2021 年的限制,提示它在没有上下文的情况下解释代码示例是不够的。我们应该对 AI Explain 使用与 AI Help 相似的做法,使用相关的 MDN 内容作为上下文。
  3. 就在发布之前,OpenAI 更新了他们的 API 以使用 gpt-3.5-turbo-0613。虽然我们的随机样本测试没有发现任何问题,但社区指出的 11 个不准确示例中有 4 个是由于这些更改造成的。
    • 展望未来,我们需要彻底验证模型之间的任何差异,因为这些差异会显著影响输出。这一点至关重要,尤其是考虑到我们大多数测试和开发都是使用与生产中部署的模型不同的模型进行的。

下一步

以下是我们正在实施的措施

  1. 在我们确信 AI Explain 能提供可靠且读者和贡献者都信任的信息之前,它将不会重新引入 MDN。我们预计这不会在 2023 年内发生,一旦我们认为它已准备好供社区审查,我们将提供更新。
  2. 我们将与我们的贡献者社区合作,在未来的开发过程中测试和改进 AI 驱动的功能。这将包括对来自不同背景、技能水平和观点的社区成员进行彻底的测试。
  3. 将来此类平台实验将仅限于登录用户或自愿加入用户体验队列的用户。
  4. 我们承诺明确地将新功能标记为实验性,解释任何潜在的意外行为,并说明其试用状态的原因。
  5. 特别是对于 AI Help,我们在所有答案中添加了一个“在 GitHub 上报告此答案的问题”链接,方便用户在专门的 ai-feedback 存储库中提出问题,并提供所有必要的上下文,以便我们加快错误修复和功能增强。

开源维护的正确途径

我们知道技术准确性是我们读者选择 MDN 的原因,我们理解我们许多社区成员对我们发布的功能的质量以及我们选择在平台中包含生成式 AI 功能感到失望。

虽然我们从这次发布中确实学到了很多东西,但我们重申我们致力于增强 MDN 的阅读体验。改进人们与 MDN 的互动方式包括开发新的平台功能,这些功能可能会使用新技术(包括生成式 AI)来帮助探索、理解和丰富大量的人工编写和策划的内容。我们希望继续帮助我们的读者理解网络技术,无论他们在学习旅程中的什么阶段。我们希望在您的帮助下,我们能继续改进许多人依赖的平台。

我们正在密切关注社交平台上的讨论,并正在将每个贡献者的反馈纳入考虑,同时努力提高关于将功能添加到 MDN 的透明度。

管理开源软件并不容易,有许多贡献者和用户拥有不同的观点和期望,我们需要满足他们的需求。我们承认我们通过 115 条评论直接从用户那里,以及通过 1287 个赞间接从用户那里收到的反馈。我们采取了行动,这就是为什么 AI Explain 已被禁用。我们每月有 1700 万个独立访问者来到 MDN 寻找答案并学习网络知识,我们希望尽最大努力为他们所有人服务。我们致力于继续成为开放网络文档的守护者,并与我们的社区合作,负责任地改善所有读者的体验。

关注 MDN 动态

订阅 MDN 时事通讯,不错过有关最新网络开发趋势、技巧和最佳实践的任何更新。