2023-05-11 10:01:03 来源:新智元
ChatGPT的发布,让AI正式加入工具箱,不过写prompt对于非英语母语者、非AI从业者来说仍然是一个难题。
在最近召开的人机交互领域顶级会议ACM CHI(Conference on Human Factors in Computing Systems)2023上,发表了大量基于大型语言模型的研究及工具,能够拉低ChatGPT类工具的使用门槛。
从事人机交互工作的前田纳西大学教授Austin Z. Henley精选了八篇论文,从提示的设计、训练,到改善编程教学、结构化日志管理等,打开ChatGPT的正确玩法!
(相关资料图)
程序员和语言模型之间的概念匹配「代码生成」大型语言模型可以把用户输入的自然语言翻译为代码,不过在近乎无限的自然语言输入空间中,只有一小部分指令可以准确指导代码生成。
对于非AI专业的终端用户,即普通程序员来说,学习提示输入的难题主要是抽象概念之间的匹配。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3580817
这篇论文在电子表格中的数据分析的特定背景下研究了这一难题,使用Codex代码生成器将用户的自然语言query映射为Python代码、执行代码并显示结果。
研究人员提出了grounded抽象匹配,通过将代码翻译成系统的和可预测的自然语言,来弥补抽象的差距。
在一项受试者之间的思考-朗读研究(n=24)中,研究人员将grounded抽象匹配与基于先前建立的查询框架原则的ungrounded的替代方案进行了比较。
结果发现,有基础的方法提高了终端用户对代码生成模型的范围和能力的理解,以及有效使用所需要的语言种类。
总结:为了帮助终端用户编写 LLM 提示,研究人员设计了一个系统,将用户的自然语言输入映射到一系列系统操作,可以准确地向用户传达系统如何解释他们的提示,并给出一个可编辑的细粒度操作列表。
非 AI 专家如何尝试(失败)设计 LLM 提示像GPT-3这样预训练的大型语言模型可以进行开箱即用的多轮指导,可以作为设计自然语言交互工具的基础。
使用自然语言来引导语言模型的输出(即提示prompt)已经成为一种重要的设计技术,非人工智能专家也需要学习使用。
不过制作有效的提示是具有挑战性的,而且基于提示的交互是很脆弱的。
这篇论文探讨了非人工智能专家是否可以使用design probe成功地参与「终端用户提示工程」,一个基于LLM的聊天机器人设计工具原型,支持开发和系统评估提示策略。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3581388
最终,研究中的probe参与者对提示设计进行了机会性的探索而非系统性的探索,但仍然很难让参与者掌握终端用户编程系统和交互式机器学习系统。
研究人员发现,源自人与人之间的教学经验的期望,以及过度泛化的倾向,是有效提示设计的障碍,实验结果对于非人工智能专家面对的基于LLM的工具设计以及提高程序员和公众的LLM和提示素养都有影响,并为进一步研究提供了机会。
总结:提示工程现在相当流行,但是非人工智能专家能写出有效的提示吗?研究人员调查了人们在写提示时面临的挑战,并设计了一个工具来帮助这些非专业人士。
VizProg: 通过可视化学生的编码过程识别误解程序设计课的老师经常在课堂上进行练习,以帮助他们发现进度落后的学生,找出学生错误理解的概念。
不过研究人员在采访编程导师时发现,在练习中监控学生的进度是很困难的,特别是对于大班学生。
这篇论文提出了VizProg,允许教师在课堂练习中实时监控和检查学生编程进度的系统。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3581516
VizProg将学生的状态表现为二维欧几里得空间图,实时编码学生的解决问题的方法和进度。
VizProg使老师能够浏览学生代码的时间和结构演变,了解代码之间的关系,并确定何时提供反馈。
对比实验表明,与基线系统相比,VizProg有助于发现更多学生的问题;VizProg还为识别重要的学生行为提供了更丰富、更全面的信息。
通过大规模地管理学生的活动,这项工作为提高现场学习的质量提出了一个新的范式。
总结:对于教师来说,理解学生在课堂活动中的表现是一个挑战。研究人员设计了一个工具,实时可视化学生的不同手段,展示全班的编辑距离视图,同时也允许教师检查特定的提交。
基于人工智能的笔记本代码助手设计人工智能驱动的代码助手,如Copilot,正在迅速成为当代编码环境中无处不在的组成部分。
在这些环境中,计算笔记本如Jupyter提供了丰富的界面,能够进行探索性和展示性工作的方式将代码和输出同时展示。
尽管笔记本很受欢迎,但人们对笔记本中代码助手的适当设计知之甚少。
研究人员通过创建一个设计空间(从对现有工具的调查中得出),并通过采访设计研究(与15位实践中的数据科学家),来研究计算型笔记本中代码助手的潜力。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3580940
通过这项工作,研究人员为这个空间中的未来系统确定了挑战和机会,如数据可视化等任务的消歧义价值,严格范围的特定领域工具(如linters)的潜力,以及礼貌助手的重要性。
总结:这是对计算机笔记本中 AI 代码助手的设计空间的探索,为人工智能的用户体验提供了一个有用的框架,包括用户如何迭代他们的输入,如何改进输出,等等。
Colaroid: 一个创作可探索的多阶段教程的文学编程方法多阶段编程教程是程序员的关键学习资源,使用渐进的增量步骤来教用户如何构建更大的软件系统。
一个好的多阶段教程能清楚地描述代码,解释每一步的理由和代码的变化,并允许读者在学习教程的过程中进行实验。
在实践中,作者创建具有这些属性的教程是非常耗时的。
这篇论文介绍了Colaroid,一个用于创建高质量的多阶段教程的交互式创作工具。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3581525
Colaroid教程是一个增强的计算笔记本,其中的片段和输出代表了一个项目的快照,突出了源代码的差异,每个片段都有完整的源代码背景,并且能够在一个链接的IDE中加载和修补项目的任何阶段。
在两项实验室研究中,研究人员发现Colaroid使创建多阶段教程变得容易,同时与视频和基于网络的教程相比,为读者提供了更多优势。
总结:即使是一个简短的编程教程也需要花费很多时间才能做好。研究人员设计了一个用于创建基于交互式笔记本的教程的工具,可以让作者从代码库的历史中获取代码块,然后重新混合以获得更好的解释。
AI代码生成器对初学者的支持像OpenAI Codex这样的人工智能代码生成器有可能通过从自然语言描述中生成代码来帮助新手程序员,然而,过度依赖可能会对学习和保持产生负面影响。
为了探索人工智能代码生成器对编程入门的影响,这篇论文对69名新手(10-17岁)进行了对照实验。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3580919
学习者进行了45个Python代码编写任务,其中一半的学习者可以使用Codex,每个任务之后都有一个代码修改的任务。
实验结果显示,使用Codex可以显著提高代码编写的成绩(完成率提高了1.15倍,分数提高了1.8倍),同时不会降低手动修改代码任务的成绩。
此外,在训练阶段使用Codex的学习者在一周后进行的评估后测试中表现略好,尽管这一差异没有达到统计学意义。
值得注意的是,如果事先接触过Codex,Scratch前测分数较高的学习者在保留后测中的表现明显要好。
总结:世界想知道人工智能将如何改变教育。过度依赖会妨碍学习吗?研究人员进行了一项为期3周的研究,发现使用人工智能工具完成任务的学生在手工编码任务或测试中的表现并不差,也许人工智能终究是新的计算器。
Log-it: 支持使用交互式、上下文、结构化和可视化日志进行编程日志(logging)是一种广泛使用的检查和理解程序的技术。
不过日志的表现形式仍然经常采用其古老的形式,即驻留在终端、控制台或日志文件中的线性文本流,尽管很简单,但由于大量缺乏结构和上下文的文本日志,解释日志输出往往具有挑战性。
这篇论文进行了内容分析和专家访谈,以了解日志中固有的做法和挑战。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3581403
活动结果表明,目前对日志的表述并没有提供程序员解释日志或程序行为所需的丰富结构。
研究人员提出了Log-it,一个使程序员能够在现场交互式地结构化和可视化日志的日志界面。
一项针对新手和专家的用户研究表明,Log-it的语法和界面具有最小的学习曲线,日志的交互式表示和组织可以帮助程序员轻松定位、综合和理解日志。
总结:Print 语句仍然是一种流行的调试方法,但它并不总是最有效的技术。研究人员设计了一个时髦的工具来构造和可视化输出。
从语法中获得可用的结构化编辑器结构化编辑在编程的可学习性、工具建设和编辑效率方面都有好处。
不过创建一个可用的结构化编辑器是很费力的,通常需要工具建设者手动创建或调整编辑交互关系。
这篇论文提出了Sandblocks,允许用户为每一种有形式化语法的语言自动生成结构化编辑器的系统。
论文链接:https://dl.acm.org/doi/pdf/10.1145/3544548.3580785
该系统的输入调和过程可以作用于任意的语法树,为生成的编辑器提供一致的交互方式。
该编辑器的编辑体验被设计成用户熟悉的文本编辑,但与以前的工作相比,不需要在语法中进行手动标注。
文中通过一项用户研究(N=18)来证明该编辑器在不同语言中的可用性。
与传统的文本编辑器相比,参与者平均只花了21%(JS)、34%(Clojure)和95%(RegExp)的时间,并报告说编辑感觉很自然,得分是6/7。
总结:结构化编辑是那些似乎每个人都喜欢的想法之一,研究人员致力于开发一个结构化的编辑器,可用于所有的编程语言,同时仍然具有很高的可用性;提供了一个一致的用户界面,可以在给定形式语法的几乎任何语言上使用。