最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

AI编程的理解和CoLadder: 论文

网站源码admin4浏览0评论

AI编程的理解和CoLadder: 论文

关于AI编程的理解:

1. 如何将意图明确的告知LLM是非常关键的,可以通过流程化(任务分解,、分治、结构化)的方式进行子意图聚焦;

2. 可以在多个层次进行代码提效, 目标、意图、提示、伪代码和生成代码;

3. 在当前情况下,使用AI Agent协助编程,基本上等同于使用AI Agent 能懂得形式进行编程;优势:不受限于某种编程语言,劣势:需要懂得LLM的核心原理;

4. 对于LLM生成的回答或者代码,好不好是相对的;对于一个编程小白,生成出来有UI能快速用起来就是好东西;对于高工以上,需要保障代码的稳定性、是否符合业务预期等才是更重要的,这个的代码生成难度就更高;

5. CoLadder:提供的一个相对体系化的方式进行AI编程提效;以下是CoLadder论文的部分翻译;

6. 其他,想到再说;

CoLadder: Supporting Programmers with Hierarchical Code Generation in Multi-Level Abstraction

.08699

ABSTRACT

程序员越来越多地依赖大语言模型(LLMs)进行代码生成。然而,程序员的目标与生成代码之间的不一致性使得代码评估过程变得复杂,并需要在提示编写和代码评估之间频繁切换。然而,当前基于 LLM 的代码助手缺乏足够的支持,无法帮助程序员从其总体目标中明确意图,而这是将这些意图转化为自然语言提示的关键步骤。为了解决这一问题,我们采用了迭代设计过程,深入研究了程序员在使用 LLM 进行编程时的策略。基于这些发现,我们开发了 CoLadder,这是一个支持程序员的系统,通过促进分层任务分解、直接代码片段操作以及在提示编写过程中的结果评估来提供帮助。一项针对 12 名经验丰富的程序员的用户研究表明,CoLadder 能够有效帮助程序员灵活地外化其问题解决意图,并提升他们在从目标到最终代码实现的不同抽象层次中评估和修改代码的能力。

KEYWORDS

large language model, code generation, LLM-driven system, prompt engineering, cognitive engineering

1 INTRODUCTION

近年来,大语言模型(LLMs)的进展推动了 AI 驱动的代码助手的显著发展 15, 29, 48,并改变了程序员的工作流程 41, 58, 77。这些基于 LLM 的代码助手已将其功能从代码补全扩展到根据自然语言(NL)提示生成高质量的代码建议。程序员现在可以将高层次目标转化为 NL 提示,而无需处理底层代码的复杂性。尽管这一独特能力可能提高编程效率,但最近关于程序员与 LLM 驱动的代码助手交互的研究揭示了他们在评估其意图与生成代码之间一致性时面临的挑战 52, 58, 71, 77。这种意图不一致进一步要求程序员迭代优化提示,增加了他们的工作量和认知负担 26, 53, 74, 86。

图 2:我们借鉴了 Norman 的七阶段行动模型,以说明与 LLM 驱动系统交互时的认知过程。该模型涵盖了程序员在“执行鸿沟”中的意图形成(E)和外化(F),而“评估鸿沟”则评估生成代码与意图之间的一致性。它为我们的系统设计提供了理论基础,解决了分层目标分解(A)、意图-代码操作(B)、上下文切换挑战(C)以及提示-代码对应关系(D)等问题。

这一评估挑战的出现源于将程序员目标转化为生成代码的模糊过程(图 2 中的“执行鸿沟”)。为了克服这一挑战,有必要弥合总体目标与实现该目标所需的具体意图之间的差距(图 2 中的“目标-意图”),以及这些意图与代码生成所需的自然语言提示之间的差距(图 2 中的“意图-代码”)。第一个差距涉及意图形成和意图外化过程。在这一阶段,程序员必须通过规划和目标分解来明确其意图,随后将这些意图转化为 NL 提示。第二个差距通常被称为抽象鸿沟(图 2.G),导致了抽象匹配的挑战。程序员必须不断优化其提示,以确保其包含足够的细节,使模型能够生成准确的代码。由于抽象鸿沟的存在,程序员的提示往往缺乏 LLM 准确将其意图转化为生成代码所需的关键具体性和精确性。例如,程序员可能希望在点击提交按钮时验证电子邮件地址,并在提示中表达为“提交表单时验证电子邮件”。然而,生成的代码可能实现的是在调用 API 时触发的验证机制,偏离了在用户界面点击提交按钮时立即验证电子邮件的原始意图。

研究人员提出了多种技术来支持第二个差距——程序员明确意图与 NL 提示之间的抽象鸿沟。例如,Liu 等人提出了基于抽象匹配的接地技术,该技术涉及将代码翻译回可预测的 NL 表达式 52。另一种主要方法是将复杂提示分解为预定义抽象层次的子提示 13, 38, 68, 85, 86。具体而言,编程任务被划分为更小、更易管理的子任务,每个子任务都处于设定的复杂性或细节水平。

然而,先前的研究并未在程序员使用 LLM 驱动的代码助手的背景下解决第一个差距——意图形成和外化过程(图 2.E, F),即总体目标与程序员具体意图之间的差距——尽管这是成功解决编程任务的关键因素 36, 44。意图形成过程涉及程序员从高层次目标到具体意图的认知思考过程,可能包括确定需要做什么或如何实现目标。意图外化过程则涉及进一步将这些意图转化为可执行的 NL 提示。继续以电子邮件验证为例,程序员通常从一个更高层次的目标开始,例如“创建一个登录页面”。程序员必须进一步将该目标分解为子目标,详细说明如何或采取什么行动,例如添加输入字段或在用户输入时更新值。目标分解和意图形成过程是程序员解决问题以及 LLM 生成与程序员意图一致的代码的关键步骤。

图 1:CoLadder 使程序员能够灵活地分解任务,与其使用 LLM 驱动的代码助手解决编程任务的心理模型相一致(A)。该系统提供了一个基于树的编辑器,允许程序员通过更小的、基于模块的提示块分层表达他们的意图(B)。然后,这种分层的提示树结构被用于生成代码,每个提示块对应一个代码段(C)。程序员可以使用一系列基于块的操作,直接根据提示操作代码。

因此,本研究的目标是探索支持程序员在意图形成过程及随后的外化过程中的设计机会。我们与六位经常使用 LLM 驱动的代码助手的经验丰富的程序员进行了一项形成性研究。研究结果表明,程序员因缺乏信息化的提示组织以及无法直接控制和操作生成的代码片段而受到阻碍。基于这些发现,我们提出了 CoLadder,这是一个帮助程序员外化分层提示结构以生成与其意图一致的代码的系统。CoLadder 引入了分层生成的概念,帮助程序员将目标分解为子任务(图 1 A),创建外化其意图的任务结构(图 1 B),并生成相应的代码(图 1 C)。CoLadder 中的每个提示都是一个与代码片段链接的模块化块,允许在分层任务结构中进行精确修改。此外,CoLadder 通过在多个抽象层次(包括目标、意图、提示、伪代码和生成代码)提供支持,实现了在提示编写过程中的评估。

我们进一步对 12 位经常使用 LLM 驱动的代码助手的经验丰富的程序员进行了用户研究,以评估 CoLadder 的实用性。结果验证了 CoLadder 能够帮助程序员形成和外化其意图。通过在多个抽象层次直接操作提示块以修改相应代码,程序员能够更好地控制其意图到代码的转化。在支持性框架的帮助下,CoLadder 避免了程序员在提示编写和代码评估之间进行破坏性的认知切换。这些发现表明,分层生成的概念可以作为未来交互式 LLM 代码助手开发的设计考虑因素。总结来说,我们的贡献包括以下三点:

  • 一项形成性研究,识别了程序员在形成和外化意图以生成代码时的策略。
  • 一个交互式系统 CoLadder,采用分层结构和基于块的设计,为程序员提供跨多个抽象层次的代码生成能力。
  • 一项用户研究,通过增强分层生成的可控性并在提示编写过程中实现结果评估,证明了其可用性的提升。

2 GOAL, INTENTION, PROMPT, AND GENERATED CODE

在实现编程任务目标的过程中,程序员必须培养清晰的意图 35, 36, 44。这些意图从对程序预期实现内容的理解(陈述性知识)以及实现该目标所涉及的过程(程序性知识)中得以明确 16, 27。这一意图形成过程包括将总体目标分解为更小、可管理的子目标,然后以不同的深度和范围外化程序的各个元素(图 2 E)27, 34, 40, 69, 72。将分层的意图外化为具体的行动至关重要(图 2 F),尤其是在 LLM 驱动的系统中,由于 LLM 能够从各种格式的 NL 提示生成结果,执行鸿沟可能变得模糊。这些提示随后将程序员的结构化意图带入 LLM 生成过程。先前的研究致力于弥合抽象鸿沟(图 2 G)——即提示背后的人类意图与 LLM 生成的代码之间的差距 52, 71。相比之下,我们的研究强调支持意图形成(图 2 A)及其后续的外化过程,使程序员能够以可控性精确指导代码生成(图 2 B)。此外,我们的工作还结合了减少评估鸿沟 61(图 2 D)的功能,增强了程序员在无需频繁在提示编写和代码评估之间切换的情况下感知、解释和评估 LLM 输出的能力(图 2 C)。

3 BACKGROUND AND RELATED WORK

我们回顾了与程序员-LLM 交互中的挑战、现有解决方案以及意图形成过程相关的理论研究。

3.1 Programmer-LLM Interaction

尽管程序员与 AI 的交互已在多种背景下被探讨,但我们的关注点在于大语言模型驱动的代码生成工具。与之前的深度学习模型相比,LLM 的最新进展标志着代码生成领域的重大突破。先前的研究进行了多项以用户为中心的研究,以了解程序员如何与基于 LLM 的代码助手交互以及他们对这些工具的看法 7, 19, 50, 58, 60, 66, 71, 75, 77, 88。研究表明,随着最先进的 LLM 的出现,代码助手的准确性显著提高 15, 65,从而提升了程序员感知的生产力 48, 91,尤其是在需要重复编写简单代码片段的任务中 7, 71。

评估的挑战。然而,程序员现在需要投入大量时间来评估 AI 生成的代码建议 7, 58。过度的评估需求可能导致多种问题 70, 78, 82。程序员常常因代码验证所需的巨大工作量而感到畏惧,并跳过评估步骤。这导致了诸如过度依赖生成建议 7, 15, 88 和对程序失去控制 77 等问题,从而在代码修改过程中引入了挑战 1, 13。程序员还因在编程和调试任务之间切换而承受额外的认知负担 8, 24, 55, 77。

抽象匹配问题。Sarkar 等人 71 观察到,程序员经常通过迭代评估和提示优化来理解 LLM 驱动的代码助手如何解释其提示并生成所需代码,这一过程被称为抽象匹配。程序员需要掌握模型的能力和局限性,以理解生成符合其意图的代码所需的自然语言表达。这一问题根源于执行鸿沟的概念 39。由于 LLM 能够在不同抽象层次生成代码,从高层次的概念描述到低层次的类似伪代码的详细语句,涵盖了无数自然语言表达的组合 52, 86,抽象匹配问题在 LLM 中变得更加显著。我们的研究将抽象匹配的关注点从提示-代码扩展到目标-代码,同时考虑到为程序员提供意图形成过程支持的必要性。

3.2 Improving LLM-based Code Generation

与提示工程和少样本学习等技术方法相比,已有多种设计解决方案和系统被提出,以增强与 LLM 驱动的代码助手的交互。这些策略涵盖了多种技术,例如引入新的编程语言 9, 38、自动化提示重述 25, 83、采用通过演示编程技术 18, 51 以及支持任务分解 68, 86。然而,确定“正确”的抽象层次仍然是一个挑战,因为过于详细的提示分解可能导致使用 LLM 的编程过程类似于使用“一种极其低效的编程语言” 71。因此,先前关于自然语言界面的研究表明,通过用户交互和干预来管理期望并逐步揭示系统能力具有显著优势 52, 54, 70, 78。

注意到这一问题,先前的研究提出了多种方法。Liu 等人提出了基于抽象匹配的接地技术 52,该方法提供了一个分解的代码示例,用户可以修改并将其作为指令提交给 LLM,从而帮助意图不明确的程序员并减少抽象匹配问题。AI Chains 通过将问题分解为子任务来增强程序员的控制和反馈 86。每个子任务对应一个带有 NL 提示的特定步骤,前一步骤的结果为后续任务的提示提供信息。这种链式方法在多个任务上使用同一模型时提高了成功率 85, 86。

尽管上述依赖任务分解的方法帮助程序员将其意图与代码联系起来,但它们并未强调为程序员提供解决编程任务时的意图形成过程支持。此外,它们主要关注局部提示-代码的对应关系,而并未检查整体结构的匹配,尤其是从任务结构到代码结构的匹配。相比之下,CoLadder 基于任务分解的概念,为程序员提供了更高的灵活性和可控性,不仅能够制作有效的提示,还能更深入地理解其编程任务如何逻辑化地结构化。

3.3 Programmers’ Intention Formation Process

在编程的语境中,意图涵盖了程序员对代码的理解和解释、底层编程任务以及他们正在处理的程序整体结构的心智模型 4, 20, 89。有多种理论描述了这些意图的形成过程 21, 79。一些理论建议采用自下而上的方法,从理解代码语法开始以推导语义,而另一些理论则提倡自上而下的策略,即从代码功能的初始假设开始,然后通过语法分析进行评估 80。程序员必须在不同的抽象层次上形成意图 5, 89,这些意图既包括具体的代码语句,也包括更大的程序结构。为了支持程序员与 LLM 在解决编程任务时的有效交互和协作,为这些意图提供支持框架至关重要 26, 52, 71。在我们的工作中,我们主要关注支持程序员形成解决编程任务的意图,并将这些意图外化为能够生成与其目标一致的代码的提示。

4 COLADDER: DESIGN PROCESS & GOALS

我们通过以用户为中心的迭代设计方法开发了 CoLadder,这是一个帮助程序员基于其意图分解任务并生成相应代码的界面。设计过程包括三个阶段:

  • 理解与构思——包括对经验丰富的程序员进行访谈研究,以发现他们在使用 LLM 驱动的代码助手时应对编程挑战的策略;
  • 原型与走查——基于既定的设计目标和认知走查进行 CoLadder 的设计与开发,以获取反馈并进行迭代设计(第 5 节);
  • 部署与评估——通过用户研究评估程序员如何与 CoLadder 交互及其感知的有用性(第 6 节)。

在本节中,我们描述了设计过程的第一阶段,并报告了所获得的策略和设计目标,这些策略和目标指导了 CoLadder 的设计与开发(表 1)。

4.1 Interview Study

我们通过目的性抽样 [23] 招募了六名参与者(5 名男性,1 名女性;年龄 25−27 岁,

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论