分享自:

期望与体验:评估基于大型语言模型的代码生成工具的可用性

期刊:CHI Conference on Human Factors in Computing Systems Extended AbstractsDOI:10.1145/3491101.3519665

基于大语言模型的代码生成工具可用性评估:期望与现实

一、 研究团队与发表信息

本研究的主要作者为Priyan Vaithilingam (哈佛大学)、Tianyi Zhang (普渡大学) 和Elena L. Glassman (哈佛大学)。该研究以论文形式发表于2022年4月29日至5月5日在美国新奥尔良举行的CHI Conference on Human Factors in Computing Systems Extended Abstracts (CHI ‘22 Extended Abstracts),并被收录于会议论文集。

二、 研究背景与目标

本研究属于人机交互(Human-Computer Interaction, HCI)与软件工程交叉领域,聚焦于评估新兴人工智能辅助编程工具的可用性。随着以GPT-3、Codex为代表的大语言模型(Large Language Models, LLM)在代码生成任务上展现出突破性性能,基于此类模型的工具(如GitHub Copilot)开始进入开发者的实际工作流程。然而,先前的研究主要集中于通过基准测试评估这些工具的代码生成准确性,而对于它们在真实编程场景中的可用性用户体验以及如何融入现有编程工作流,尚缺乏深入的实证研究。尤其是,这类工具生成的代码并非总是完美,程序员如何与这些“不完美”的AI进行交互、识别错误、调整代码,成为了影响其实际效用和采纳的关键问题。因此,本研究旨在弥合这一知识鸿沟,通过对照实验,探究程序员在使用Copilot时的真实体验、遇到的挑战以及采用的应对策略,从而为未来代码生成工具的设计提供实证依据和方向指引。

三、 研究设计与详细流程

本研究采用了一项被试内对照实验设计,共有24名参与者。实验的核心是比较在两种不同代码辅助工具条件下,程序员完成编程任务的体验和表现:实验条件为使用基于Codex的GitHub Copilot;对照条件为使用Visual Studio Code (VSCode) 内置的默认代码补全工具IntelliSense。

  1. 参与者招募与特征:通过两所研究型大学的邮件列表招募了24名参与者(4名女性,19名男性,1名非二元性别)。参与者背景多样,包括本科生(10人)、硕士生(5人)、博士生(8人)和一名软件工程师。在编程经验方面,1人少于2年,14人有2-5年,9人超过5年,确保了样本覆盖了从初级到经验丰富的程序员。

  2. 实验任务:研究选择了三个具有不同难度的真实世界Python编程任务:

    • 任务1(简单):编辑CSV文件,删除首尾列。
    • 任务2(中等):网页抓取,提取页面中所有超链接的URL。
    • 任务3(困难):数据可视化,根据CSV文件绘制散点图并满足特定格式要求。 这些任务来源于先前的研究,旨在模拟常见的编程需求。
  3. 实验环境与流程:为方便使用工具并控制环境,研究者在Microsoft Azure上设置了两台虚拟机(VM),一台安装Copilot,另一台仅启用IntelliSense。所有必要的Python包和VSCode均已预装。

    • 每位参与者需要完成两个任务:一个使用Copilot,另一个使用IntelliSense。任务与工具的分配顺序通过随机分配进行平衡,以抵消学习效应的影响。
    • 在每个任务开始前,参与者会接受所分配工具的简短教程。
    • 参与者被允许在任务过程中自由使用互联网搜索,以模拟真实编程场景。
    • 每个任务有20分钟的时间限制,超时视为任务失败。
    • 整个实验过程进行了屏幕录制和音频记录,用于后续分析。
  4. 数据收集方法

    • 行为数据:记录任务完成时间、任务成功率(是否在20分钟内完成)。
    • 主观反馈数据:每个任务结束后,参与者填写调查问卷,反馈使用体验。所有任务完成后,参与者填写一份最终调查问卷,直接比较两种工具。
    • 定性数据:对实验录像进行观察分析,并对参与者的开放式调查反馈进行开放式编码,由第一作者进行初步编码,然后与合著者多次讨论以提炼主题。

四、 主要研究结果

研究结果分为定量和定性两部分,揭示了Copilot在实际使用中的复杂图景。

1. 定量结果:效率与偏好的悖论 * 任务完成率与时间:使用Copilot的参与者任务失败次数(5次)略高于使用IntelliSense的参与者(2次),但差异未达到统计学显著性。分析失败原因发现,Copilot导致的3次失败源于其生成的错误代码将参与者引入了耗时的调试困境;而IntelliSense的失败主要源于参与者对特定库的不熟悉。在成功完成的任务中,Copilot组的平均完成时间(9分18秒)略短于IntelliSense组(10分23秒),但此差异同样不显著。研究者指出,Copilot虽然生成代码快,但其代码可能包含错误,导致额外的调试时间,抵消了其生成速度的优势;而网络搜索获得的代码通常经过社区验证,且附带解释,便于理解和微调。 * 用户偏好与感知:尽管在客观效率指标上未见显著优势,但参与者的主观偏好非常明显:19/24的参与者表示更喜欢在日常编程中使用Copilot,23/24认为Copilot比IntelliSense更有帮助。在7分制评分中,参与者认为Copilot生成的代码帮助性(平均6.16)显著高于IntelliSense(平均4.45)。然而,只有10名参与者对Copilot生成的代码比IntelliSense的建议更有信心。这形成了一个有趣的矛盾:程序员强烈偏好Copilot,但对其输出的信任度并不高

2. 定性结果:优势、挑战与应对策略 通过对录像和反馈的定性分析,研究者提炼出以下几个核心主题:

  • 用户感知的优势

    • 提供起点:Copilot最大的价值在于为编程任务提供了一个“起点”,避免了面对空白编辑器时的“启动困难”。即使生成的代码不完全正确,也能为程序员指明方向,这对于不熟悉的任务尤其有用。
    • 替代搜索:许多参与者将Copilot视为Stack Overflow等在线资源搜索的替代品,因为它能直接生成代码片段,省去了查找和筛选信息的时间。
    • 沟通感:通过编写注释(提示)来引导Copilot,让一些参与者感觉像是在与一个“AI助教”进行交流。
  • 用户面临的挑战与障碍

    • 理解与调试困难:这是最突出的问题。Copilot经常生成多行、复杂的代码块,给程序员带来了巨大的认知负荷。他们需要在编程(写作)、阅读理解生成代码和调试之间频繁切换上下文。当代码出错时,由于不是自己亲手所写,缺乏直觉,调试变得异常困难。12名参与者明确表示难以理解和修改Copilot生成的代码。
    • 控制感丧失与可靠性担忧:部分参与者感到对代码失去了控制,更倾向于信任自己搜索和理解的代码。7名参与者对Copilot生成代码的可靠性表示担忧,认为其建议是“不透明的”。
    • 对复杂任务信任度低:8名参与者表示只愿意在简单任务上信任Copilot,对于复杂任务,出于对理解难度、潜在未知错误或代码风格不符的担忧,他们持保留态度。
    • 提示的脆弱性与模糊性:Copilot对输入注释(提示)非常敏感,提示的微小改动可能导致生成完全不同的代码,这增加了使用的不确定性和挫败感。
    • 调试陷阱:研究发现一个关键障碍是程序员低估了修复Copilot生成代码中错误所需的工作量。例如,在一个案例中,Copilot为网页抓取任务生成了一个复杂的正则表达式解决方案,而更优的方案是使用HTML解析库。参与者被Copilot的建议“锚定”,执着于修复错误的正则表达式,最终导致任务超时失败。
  • 用户交互模式与应对策略

    • 交互模式:除了作为搜索替代品,研究者还观察到了过度依赖现象。一些参与者不经仔细检查就接受生成代码,导致后续不得不花大量时间回溯调试。
    • 应对错误代码的策略:当面对错误代码时,参与者主要采取两种策略:
      1. 尝试修复:12名参与者会尝试修复错误。但成功修复的前提是生成的代码易于理解。否则,修复过程本身就很困难。
      2. 完全重写:7名参与者在遇到错误时,会选择直接丢弃整个生成的代码块,转而自行搜索或编写。他们认为这比费力理解并修改一段“陌生”的代码更高效。

五、 结论与价值

本研究得出核心结论:尽管基于大语言模型的代码生成工具(以Copilot为例)在基准测试中表现惊人,但在真实的编程工作流中,它并未必然降低任务完成时间或提高成功率。然而,程序员们依然强烈偏好使用它,主要原因在于它能有效提供编程起点并节省信息搜索成本。研究的价值在于揭示了工具当前存在的关键可用性瓶颈:程序员在理解、编辑和调试AI生成代码时面临显著困难,这严重制约了其解决问题的效率。

本研究具有重要的科学价值和应用价值: 1. 科学价值:它将评估焦点从单纯的代码生成“准确性”转向了人机协作的“可用性”,为人机交互和软件工程领域研究AI辅助编程提供了宝贵的实证数据和理论视角。它强调了在AI工具设计中,除了提升模型性能,支持用户理解、验证和操控AI输出同等重要。 2. 应用价值:为下一代代码生成工具的设计指明了具体方向:a) 提供多方案比较,让用户能评估和组合不同建议;b) 集成解释机制(如内联注释、基于置信度的代码高亮)以增强代码可理解性;c) 自动生成测试用例帮助验证代码;d) 支持任务分解的交互机制,引导用户将复杂问题拆解为Copilot更能有效处理的子问题;e) 考虑将网络搜索与社区讨论与AI生成相结合,提供更全面的参考。

六、 研究亮点

  1. 研究视角新颖:率先对当时最前沿的LLM代码生成工具Copilot进行了系统的、以用户为中心的可用性实证研究,填补了该领域空白。
  2. 揭示了“效率-偏好”悖论:通过严谨的对照实验,客观地揭示了Copilot在客观任务指标上优势不显著,但主观偏好却极高的现象,并深入分析了其背后原因(提供起点、替代搜索),这对产品评估和用户接受度研究具有启发意义。
  3. 深入剖析了核心挑战:不仅指出了问题,还通过详细的行为观察和定性分析,深度剖析了“理解与调试困难”这一根本性挑战的成因(认知负荷、上下文切换、缺乏直觉)和严重后果(调试陷阱、任务失败)。
  4. 提出了具体的设计启示:基于研究发现,提出的改进方向(如多方案、解释、测试、任务分解)非常具体且具有很高的实践指导价值,直接影响了后续相关研究和工具设计的思路。
  5. 方法论严谨:采用被试内设计、任务难度分级、平衡顺序效应、允许网络搜索以模拟真实环境、结合定量与定性数据分析,确保了研究结果的有效性和丰富性。

七、 其他有价值内容

研究还观察到了少数成功参与者的一种有效策略:将复杂任务主动分解为多个简单的子任务,并为每个子任务编写清晰的提示给Copilot。这种“分而治之”的策略提高了任务解决效率和用户体验。这进一步佐证了未来工具需要支持任务分解这一设计方向的重要性。此外,研究将参与者的行为与“不完美AI”领域的现有理论(如信任校准、过度依赖)联系起来,为理解人-AI协作提供了更广阔的理论背景。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com