评估AI代码助手的框架

A framework for evaluating AI code assistants

在与用户的数百次对话中,我们听到了很多关于他们对优秀AI代码助手需求的信息。在这篇文章中,我们将分享一系列标准,这些标准代表了我们发现公司最关心的方面,尤其是在他们有了在生产环境中运行工具的经验之后。

精准的代码库检索

用户通常会首先测试的功能之一是“代码库检索”,助手在此功能中会自动确定在给出答案之前要引用的代码片段。虽然像Gemini (2M token上下文窗口) 这样的新型长上下文模型稍微减轻了检索的负担,但考虑到延迟、成本以及LLM在输入过多时可能性能下降,准确性仍然是必需的。

特别是在大型企业代码库中,其中大部分代码对于任何工程师来说都不太熟悉,代码库检索开启了AI代码助手的一个主要用例:导航并快速理解你没有编写的代码。

未来,我们计划发布公开基准测试,以便对不同的代码库检索解决方案进行定量评估。

细粒度上下文

虽然自动化检索带来了神奇的初次体验,但我们发现长期用户更倾向于手动指定上下文,以便获得更精确的答案。在评估代码助手时,你至少应该期望有一个符合人体工程学的键盘快捷键来选择高亮显示的代码,以及通过输入“@”来引用特定文件、代码对象和网页的能力。

为了真正将LLM与开发者工作时的上下文关联起来,高级助手将提供对文档、git diff、软件开发生命周期中的信息(如GitHub Issues或Jira tickets)以及其他自定义来源的引用。

模型灵活性

选择你自己的LLM既关乎实验,也关乎控制。在评估这方面时,你务必询问AI代码助手是否能够 a) 使用本地、自托管或闭源模型,b) 配置多个模型,以及 c) 轻松地在这些模型之间切换。

这些功能将使你能够利用现有的计算预算来驱动你的AI代码助手,在自托管或本地LLM的情况下保护隐私,并鼓励实验,这样你就不会在改进的模型发布时落后。

自动补全质量与延迟

这个标准很简单:当你期待行内建议时,它是否迅速出现,是否准确?正如我们将在下文详细阐述的那样,最终的测试是查看实际的补全接受率,但在早期,你可以通过试用几个小时来初步了解质量。

快速访问关键用例

便利性在采用中起着重要作用。如果开发者每次想要执行常用操作时都需要重新编写冗长的提示,那么他们不太可能使用该产品就不足为奇了。我们普遍看到的一些基本用例包括编写单元测试、编写doc strings和评审代码。要使代码助手在这个标准上得分高,它应该允许用户通过一个按钮、一个键盘快捷键或一个斜杠命令等最少的操作来完成此类任务。

但即使你使用“规范的”技术栈,这些用例中的每一个对于任何特定的团队来说都意味着非常不同的东西。一个好的助手将允许你轻松定义自定义提示。一个出色的助手将通过使团队内部易于分享和重用提示来帮助构建一种参与式架构

使用数据访问

公平地访问可观测性数据是任何希望分析其成功而不仅仅是初步印象的组织的必备条件。有用的数据可以告诉你哪些用户群体、功能或代码库区域需要关注,这样你就可以自信地采取行动来改善开发者体验,而不是停留在猜测如何提高采用率。一些高价值的数据流包括按语言分类的自动补全建议接受情况、常见问题以及@-mentions的使用情况。

“令人愉悦的”用户界面

归根结底,代码助手之所以会被采用,是因为它们让开发者感到愉悦。任何忽略用户诚实、直观反馈的评估都可能是短视的。考虑到它们占据了编辑器窗口的很大一部分,在几乎每次击键时都显示建议,并生成大量代码,AI代码助手具有两极分化效应也就不足为奇了。事实上,糟糕的初次体验往往是阻碍开发者克服初始投入以成功使用AI开发工具的原因。无论你是进行大规模调查、询问同事的真实意见,还是亲自体验产品,你都需要确保主观体验是开发者会喜欢的。

Continue 如何?

阅读到页面如此靠后段落的读者可能也希望对 Continue 进行基准测试。为了更便于此,我们将花一点时间指出相关功能:

  • 精准的代码库检索:使用 cmd+enter 或 “@codebase” 来尝试 Continue 的代码库检索
  • 细粒度上下文:Continue 拥有一个广泛的开源上下文提供者生态系统,并且可以轻松编写自己的提供者来连接到自定义数据源。
  • 模型灵活性:关于使用任何语言模型设置 Continue 的完整文档,请参阅此处
  • 自动补全质量与延迟:Continue 支持最先进的自动补全模型,例如 Codestral,并有先进的上下文引擎支持。
  • 快速访问关键用例:Continue 的 .prompt 文件格式旨在尽可能轻松地编写和分享自定义提示,这些提示可以通过斜杠命令调用,例如 “/test”, “/review”, 或 “/docstring”。快速操作提供了另一种通过内联按钮调用常用操作的方式。
  • 使用数据访问:Continue 提供对你的分析和开发数据的完全访问,这意味着你可以提出关于助手使用情况的更深入问题,并着手收集核心资产,以便训练自定义模型。
  • “令人愉悦的”用户界面:我们特别推荐尝试的一个功能是 cmd+I:高亮代码,使用 cmd+I,并输入自然语言指令,即可将 diff 流式传输到编辑器中。

如何使用此框架

每个组织都不同,因此我们始终鼓励花时间考虑哪些标准最适合。但如果你希望快速将此框架付诸实践,一个可靠的方法是创建一个矩阵:一个轴是每个标准,另一个轴是你希望评估的每个工具。为每个单元格标记 1 ❌ (不满足此标准)、2 🟡 (在某种程度上满足此标准,但在某些方面有所欠缺),或 3 ✅ (完美满足此标准或超越预期)。