A mandala pattern created out of plain text characters.

AI Explain 的反思:事后总结

阅读时间 10 分钟

我们最近推出了两项新的人工智能体验——AI Explain 和 AI Help。感谢社区的反馈,我们意识到 AI Explain 还有很多工作要做。我们已禁用它,并将继续改进,使其成为更好的体验。

在这篇博文中,我们将深入探讨 AI Explain 的幕后故事:它的开发、发布以及促使我们按下暂停键的原因。我们非常重视社区的意见,它们在此决定中发挥了重要作用。展望未来,我们的目标是在 2024 年恢复这项功能的工作,为我们提供充足的时间来处理收到的反馈,并以一种帮助所有希望使用它的人的方式来改进该功能。

推出人工智能功能

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

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

我们注意到,理解 MDN 上的代码示例并不总是那么容易,因为它们通常结合了多个功能,而这些功能并不都在当前文章中进行解释。然而,详细解释每一个细节——比如在包含 CSS 示例的每个页面上定义 CSS 选择器是什么——是不切实际的。通过 AI Explain,我们可以让读者更好地理解 MDN 文档中嵌入的代码示例,而不会使核心内容过于冗长。

使用生成式人工智能与文档进行交互

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

我们还看到,其他以开发者为中心的公司正在大力投资并在此技术基础上构建产品。MDN 的文档是在开放的知识共享许可下公开提供的,并且被认为是行业一流的,因此可以合理地假设大多数模型都是基于我们的内容进行训练的,并且已经开始发布明确允许使用我们文档的产品。这使我们认识到,无论我们的个人感受如何,我们的用户已经通过生成式人工智能访问我们的内容。在社区的支持下,我们拥有独特的优势,可以学习人工智能如何增强文档以及开发者如何使用它。我们丰富的经验、学习的意愿以及我们的贡献者和主题专家的网络使我们能够通过迭代和反馈来完善这项功能。

2023 年 3 月,鉴于当前技术状况,我们将开发重点放在了两项最有前景的功能上

  • AI Explain - 一种让读者探索和理解 MDN 文档页面中嵌入的代码示例的方式,描述代码或示例部分的目的和行为。

  • AI Help - 一个对话界面,使用与用户问题相关的 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 的常见编程概念和示例,并单独核实了响应。与此受众形成对比的是,我们还选择了边缘案例和我们认为模型可能难以解释的新网络技术。

在自动化测试方面,由于 LLM 的非确定性输出,为此类功能构建测试套件具有挑战性。因此,我们尝试的一种方法是针对 MDN 上 25,820 个唯一的代码示例中的每一个运行 gpt-3.5-turbo-0301 生成的解释,并将输出与 GPT-4 进行验证。这次实验的响应摘要将生成的解释标记为准确、有些不准确或不正确。我们随机抽样了不被认为是高质量的响应,并对其进行了手动检查和评估。

通过这些测试得出的结论是,在足够多的情况下,这些响应都很有帮助,用户可以尝试 beta 版本。除了测试之外,从 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 上开了一个 issue,他担心 AI Explain 生成的输出不正确和具有误导性。该 GitHub issue 获得了 1,287 个赞和 115 条评论。

我们还从 Mastodon、Discord、Twitter 和 Matrix 上的社区收到了关于该功能的反馈。我们收到了总共 11 个独特的示例,在社交渠道上分享了这些示例,这些示例展示了 AI Explain 输出不准确或具有误导性。

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

负面反馈的整体情绪是 AI Explain 还没有准备好发布,并且将生成式人工智能添加到 MDN 不是该平台的好选择。

回滚和响应

我们承认在完全发布 AI Explain 功能方面存在失误,而不是像最初设想的那样限制登录用户的访问。由于一个 GitHub issue 在长周末被报告,这个错误被放大了。为了解决这个问题,我们迅速停用了该功能,启动了全面的内部审查,并彻底分析了用户反馈(如上所述)。GitHub issue 于欧洲中部时间 6 月 30 日晚上 10:00 开放,我们于欧洲中部时间 7 月 1 日上午 09:40 禁用了 AI Explain,并在欧洲中部时间 10:20 进行了更改部署。考虑到 issue 报告者和团队之间有时差,这是我们能采取行动的最早时间。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. 我们将与我们的贡献者社区合作,在未来的开发过程中测试和改进人工智能功能。这将包括与来自不同背景、技能水平和观点的社区成员进行彻底测试。
  3. 今后此类平台实验将仅限于已登录用户或自愿加入用户体验队列的用户。
  4. 我们承诺清楚地标记新功能为实验性的,解释任何可能出现的意外行为,并提供其试用原因。
  5. 对于 AI Help,我们在所有答案中添加了“向 GitHub 报告此答案的问题”链接,方便用户在一个专门的 ai-feedback 仓库中提出问题,并提供所有必要信息,以便我们加快修复错误和改进功能。

开源维护的正确道路

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

虽然我们确实从这次发布的经验中吸取了教训,但我们重申致力于改善 MDN 的阅读体验。改善人们与 MDN 的互动方式包括开发可能使用新技术(包括生成式人工智能)的新平台功能,以帮助探索、理解和丰富大量由人类编写和策划的内容。我们希望继续帮助读者在其学习过程的任何阶段理解 Web 技术。我们希望在您的投入下,我们将继续改进许多人所依赖的平台。

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

管理开源软件并非易事,我们需要服务于许多具有不同观点和期望的贡献者和用户。我们承认从 GitHub 用户的 115 条评论和 1287 个点赞中直接收到的反馈。我们已经对此采取了行动,这就是为什么 AI Explain 被禁用的原因。每月有 1700 万独立访客访问 MDN 来查找答案和学习 Web,我们也希望尽可能地为他们提供最好的服务。我们致力于继续作为开放 Web 文档的守护者,并与我们的社区合作,为我们所有读者负责任地改进体验。