想象一下,你有一位全新、极其聪明但略显不可预测的助手,名叫"LLM"(大型语言模型)。你聘请这位助手来帮助你编写计算机代码。这篇论文就像是一份来自一群研究人员的“成绩单”,他们观察了数百人尝试与这位新助手共事的过程。他们希望回答四个核心问题:人们如何与助手交流?助手是否让人变得更快或更聪明?最终生成的代码是否真的更好?以及,哪些具体习惯能让这种合作关系取得成功?
以下是他们研究发现的简要概述,并辅以简单的类比。
1. 人们如何与助手交流(“对话”)
研究人员发现,人们并非仅仅请求代码;他们与助手交流时存在不同的“模式”,这就像你与导师交谈和与建筑工人交谈的方式不同一样。
- “好奇学生”模式:有些人使用助手是为了学习。他们会问:“这是如何工作的?”或“向我展示如何做这件事。”这就像使用 GPS 不仅是为了获取路线,更是为了理解路线本身。
- “建造者”模式:大多数人使用助手是为了完成具体任务。他们会说:“写一个对列表进行排序的函数。”这就像把蓝图交给承包商,然后说:“把这堵墙建起来。”
- “修复”模式:当代码出错时,人们会问:“为什么会出现这个错误?”以及“我该如何修复它?”
- “闲聊”模式:有时,人们只是说“谢谢”或提出无关的问题。
策略游戏:
研究人员注意到,人们使用不同的“提示策略”(提问方式):
- “一次性”方法:有些人一次性提出整个问题,请求完整的解决方案。如果助手答错了,他们可能会完全重复同样的问题,希望得到不同的答案(因为助手有点像掷骰子;它并非 100% 可预测)。
- “分步”方法:其他人则将大任务分解成微小的部分,一次只请求一小部分。
- “重述”方法:如果助手没理解,人们会尝试换一种说法,添加更多细节,或将任务缩小。
“审查”阶段:
一个令人惊讶的发现是,人们花在阅读和检查助手工作上的时间,比他们自己编写代码的时间还要多。这就像聘请了一位厨师来做饭,但你却把全部时间都花在品尝每一口并检查食材以确保安全上。
- 专家(经验丰富的程序员)倾向于非常仔细地检查工作。
- 新手(初学者)有时只是复制粘贴代码而不进行检查,或者他们陷入困境,试图理解代码究竟是什么意思。
2. 助手是否让人变得更好?(人类增强)
研究人员考察了使用助手是否让人变得更快或帮助他们学习。答案有点像过山车:视情况而定。
- 速度:对于简单任务,助手让人快得多。这就像拥有电动工具而不是手锯。然而,对于非常复杂或棘手的任务,人们有时反而会变慢。为什么?因为他们花费大量时间试图理解、修复或与助手的错误争论,这比他们自己完成还要耗时。
- 学习:如果学生将助手用作指导型导师(即工具专门设置为教学用途),他们通常能学到更多。但如果他们只是使用通用聊天机器人来获取答案,他们可能关于“如何”编程的所学会更少。这就像是有老师解释概念,与朋友直接给你作业答案之间的区别。
3. 最终代码是否更好?(任务表现)
当研究人员观察人类使用助手生成的最终代码时,结果喜忧参半。
- 正确性:对于基本任务,代码通常是正确的且运行良好。
- 安全性与可靠性:这是棘手的部分。有时代码更安全;其他时候,它却隐藏着漏洞或安全缺陷。这就像助手是一位出色的建筑工人,但有时会忘记锁上后门。
- 可读性:代码通常易于阅读,但有时助手使用了人类不理解的高深、复杂的概念,使得代码看起来像外语。
4. 什么让合作关系奏效?(交互效应)
论文发现,你与助手如何互动会改变结果。
- 如果你将助手视为学习伙伴(询问“为什么”和“如何”),你会学到更多,但可能会更慢完成任务。
- 如果你将其视为生产工具(请求具体解决方案),你会更快完成工作,但可能学不到那么多。
- 黄金法则:最成功的用户是那些能够向助手清晰解释问题、知道在第一个答案错误时如何要求更多细节,并知道何时停止提问并开始自行检查工作的人。
结论
论文得出结论,人类与这些 AI 助手之间的关系是不可预测的。由于 AI 并非 100% 一致(它是非确定性的),人类必须成为聪明的管理者。
- 不要只是复制粘贴:你必须阅读并理解 AI 给你的内容。
- 上下文很重要:AI 对某些任务是超级助手,但对其他任务则是干扰。
- 没有“放之四海而皆准”的方法:没有一种完美的使用工具的方式。这取决于你是初学者还是专家,以及你在做什么样的工作。
研究人员建议,我们需要更好的“规则手册”(标准指标)来衡量人类与 AI 协作的效果,这样我们就能停止猜测,开始确切地知道如何获得最佳结果。
以下是 Deborah Etsenake 和 Meiyappan Nagappan 所著论文《理解人机大语言模型动态:编程任务中大语言模型使用的文献综述》的详细技术总结。
1. 问题陈述
大语言模型(LLM)已迅速改变了编程实践,提供了代码生成、分析和修复等功能。然而,尽管存在技术基准测试,但人们对人类在现实世界编程场景中如何实际与大语言模型互动,以及这些互动对人类能力和任务绩效的净影响,仍缺乏全面的理解。
现有文献往往侧重于模型在静态数据集上的性能表现,或孤立的可用性研究。在综合用户研究以理解以下方面存在空白:
- 程序员采用的具体互动模式和提示策略。
- 大语言模型是否真正提升了人类的生产力和学习能力,还是引入了新的认知负担。
- 具体的互动行为如何与任务的成败相关联。
- 不同用户专业水平(新手 vs. 专家)和任务类型之间结果的差异性。
2. 方法论
作者进行了一项系统性文献综述,重点关注涉及编程任务中大语言模型的用户研究和经验报告。
- 搜索策略:
- 数据库: ACM、IEEE、Scopus 和 arXiv。
- 关键词: 大语言模型标识符(如"ChatGPT"、"Copilot"、"LLM")与编程术语(如"programmers"、"code generation"、"program synthesis")的组合。
- 范围: 2017 年之后发表的论文(与 Transformer 架构的推出时间吻合)。
- 纳入标准: 论文必须基于 Transformer 架构的大语言模型,涉及编程领域,并包含包含观察到的人机互动体验报告或用户研究。
- 排除标准: 仅依赖数据集评估而无人类互动的研究,或未聚焦于编程过程的研究。
- 数据收集:
- 初步搜索得出一组广泛的文献,随后通过标题/摘要筛选和全文审查进行细化。
- 滚雪球法: 采用向后和向前滚雪球法(引用文献)来扩充数据集。
- 最终语料库: 选定 88 篇论文进行分析。
- 分析框架:
- 论文按研究目标分类(例如:人类增强、任务绩效、互动分析)。
- 参与者被分类为学术界 vs. 工业界以及新手 vs. 专家(使用修改后的 Dreyfus 模型)。
- 四个研究问题(RQs)指导了定性和定量的综合研究。
3. 主要贡献
该论文为人机交互(HCI)和软件工程领域做出了四项主要贡献:
- 互动模式分类法: 对程序员如何与大语言模型互动进行了详细分类,包括请求类型、提示策略和审查行为。
- 绩效指标综合: 整合了用于评估人类增强(生产力、学习)和任务绩效(正确性、安全性、可读性)的指标视图。
- 情境因素识别: 证据表明,大语言模型的有效性高度依赖于用户专业水平、任务复杂性以及大语言模型实现的结构(引导式 vs. 非结构化)。
- 实用指南与标准化提案: 为研究人员标准化评估指标,以及为从业者采用有效的互动技术提供了建议。
4. 主要结果
RQ1:互动观察
- 请求类型: 用户提出四种类型的请求:
- 学习/探索: 询问解释或实现思路(新手常见)。
- 解决方案导向: 请求特定的代码生成或测试用例。
- 错误修正: 调试代码或修正大语言模型输出的错误。
- 无关内容: 社交提示或离题查询。
- 提示策略:
- 单次提示(零样本): 一次性请求解决方案。
- 多次提示: 将任务分解为子任务。
- 重提示技术: 当初始尝试失败时,用户采用重新提问、验证(要求大语言模型自我检查)、任务转换(完全改变问题)、措辞重组和* elaboration(详细阐述/补充上下文)*等策略。详细阐述是最常见且最有效的策略。
- 互动模式:
- 仅大语言模型: 用户完全依赖模型(表明依赖)。
- 无大语言模型: 用户回归手动编码(罕见,通常由于认知负荷)。
- 混合模式: 最常见的模式;用户结合大语言模型生成与手动编码及审查,以管理认知负荷。
- 时间分配: 用户将大部分时间(>50%)花在理解大语言模型响应和构建提示上,而非编写代码。这标志着从“编写代码”向“审查代码”的转变。
RQ2:人类增强评估
- 时间生产力: 结果不一。大语言模型显著提高了简单任务和语法密集型编码的生产力。然而,对于复杂任务,由于理解、调试和验证大语言模型输出所需的时间,生产力往往会下降。
- 学习:
- 结构化/引导式: 当大语言模型作为具有明确目标的教学系统使用时,学习收益显著。
- 非结构化: 当学生自由访问通用大语言模型时,学习成果往往中性或负面。一些研究表明,使用大语言模型的学生在手动编码后测中表现更差,这表明可能存在“语法萎缩”或过度依赖。
RQ3:任务绩效评估
- 协作正确性: 大语言模型在基础编程和算法任务上显示出高准确性,但在复杂或特定领域任务上表现出显著差异。
- 代码安全性与可靠性: 发现存在矛盾。一些研究表明大语言模型生成更安全的代码;另一些则表明它们引入了更多漏洞(错误、不安全的库)。对安全性的明确评估仍然是一个研究空白。
- 可读性: 大语言模型生成的代码通常具有可读性,但可能使用用户未知的概念,需要进一步提示才能理解。
RQ4:互动对绩效的影响
- 行为影响: 特定的互动模式与结果相关。
- 学习/探索模式 通常会降低时间生产力,但增加理解力。
- 实现模式 提高了时间生产力。
- 详细阐述(提供详细上下文)和精确的错误报告是任务成功完成的最强预测因子。
- 专业水平差距: 专家倾向于花更少的时间审查代码,而将更多时间用于手动集成;而新手则花更多时间试图理解生成的代码,有时导致未经验证的“复制 - 粘贴”行为。
5. 意义与启示
- 对研究人员:
- 标准化: 该论文提出了一套标准化的指标(表 8),用于评估人机大语言模型互动(例如:成功率、完成时间、前/后测分数),以便更好地进行跨研究比较。
- 未来方向: 强调需要研究不同大语言模型(不仅限于 ChatGPT/Copilot)之间的互动模式,并调查具体提示策略如何定量影响绩效。
- 对从业者与教育者:
- 提示技能: 有效使用大语言模型需要“提示工程”技能(详细阐述、提供上下文),而不仅仅是语法知识。
- 学习 vs. 理解: 教育者必须区分使用大语言模型来理解代码(有益)与使用它们来学习编程(如果非结构化,可能有害)。
- 混合工作流: 最有效的工作流是“混合”模式,即人类充当架构师和审查者,大语言模型充当组件生成器。
- 系统设计: 大语言模型界面应设计为减少认知负荷,例如通过分割响应或提供情境感知建议来辅助“审查”阶段,而该阶段目前是对话中最耗时的部分。
结论
该论文得出结论,人机大语言模型动态是非确定性的且高度依赖情境的。虽然大语言模型在提升编程生产力和学习方面具有巨大潜力,但这些益处并非自动产生。它们高度依赖于用户的专业水平、任务的复杂性以及用户参与有效互动策略(特别是详细阐述和验证)的能力。作者呼吁研究重点从纯粹以模型为中心的基准测试转向以用户为中心的互动研究,以充分释放大语言模型在软件工程中的潜力。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。