取人类与大模型之长,人机协作式智能软件开发框架AgileGen来了

AIxiv专栏是AI在线发布学术、技术内容的栏目。 过去数年,AI在线AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。 如果您有优秀的工作想要分享,欢迎投稿或者联系报道。

AIxiv专栏是AI在线发布学术、技术内容的栏目。过去数年,AI在线AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:[email protected][email protected]

本论文作者张赛是天津大学博士研究生,师从张小旺教授。目前是澳大利亚联邦科学与工业研究组织(SE4AI 团队)联合培养博士生,合作导师为邢振昌教授。主要研究方向为生成式软件开发,软件工程需求分析等。她曾经以第一作者在 TOSEM, TNNLS, TCBB, Bioinformatics 等顶级期刊上发表论文。曾获得 2022 年度省级优秀硕士学位论文,国家奖学金和国家公派奖学金等荣誉。

作者联系方式:[email protected]

在人工智能迅猛发展的今天,我们正站在软件开发领域一次深刻变革的起点上。想象一下,只需一句简单的需求描述,就能生成符合你期望的软件。这不再是科幻小说中的情节,而是即将成为现实的创新技术。

而这一切的背后,正是我们即将介绍的 AgileGen— 一种基于人机协作的敏捷生成式软件开发框架。

图片

  • 论文题目:Empowering Agile-Based Generative Software Development through Human-AI Teamwork

  • 论文链接:https://arxiv.org/abs/2407.15568

  • github 链接:https://github.com/UGAIForge/AgileGen

  • Huggingface (试用):https://huggingface.co/spaces/HarrisClover/AgileGen

目前,该论文已被 ACM TOSEM (CCF A) 录用。

软件开发的根本挑战:需求的不完整性

著名的图灵奖得主 Frederick P. Brooks 在他的经典论文”No Silver Bullet: Essence and Accidents of Software Engineering” 中指出:“软件开发的本质困难在于对复杂概念结构的构思和理解,这主要涉及需求分析和设计。相比之下,使用编程语言来实现这些抽象的软件实体只是偶然性的困难。” 也就是说,理解用户需求,设计出满足这些需求的系统架构和功能,是软件开发中最核心、最具挑战性的部分。

然而,在实际开发过程中,用户往往难以完整、准确地描述他们的需求。这并非用户的错,而是因为他们可能缺乏专业的技术背景,或者对自己的需求也不是特别清晰。举个例子,一位教师可能会提出:“我需要一个可以随机点名的应用。” 但是,这样的描述并未明确系统需要具备哪些具体功能,比如学生名单是否固定还是要动态添加删除,是否需要考虑请假学生,界面应该如何设计,是否需要配合随堂提问等。

现有生成式软件开发的局限性

随着大型语言模型(LLM)的发展,许多人开始尝试利用 AI 来自动生成代码。然而,现有的生成式软件开发方法在处理不完整的需求时仍存在巨大挑战:他们要么过于依赖用户的指导,要么在没有用户参与的情况下自行决策,导致生成的代码与用户的期望有较大偏差,也就是即使生成的软件可以成功运行 (build software right),也无法弥合用户的期待 (build right software)。

AgileGen 的诞生:人机协作的新范式

面对这些挑战,我们提出了 AgileGen,一种基于人机协作的敏捷生成式软件开发框架,旨在融合人类的创造力和 AI 大模型的生成能力,实现高效、准确的软件生成。

1. 核心理念:发挥人类与 AI 各自的优势

AgileGen 的核心理念是让用户和 AI 各自专注于自己擅长的领域。用户负责提出需求和进行决策,AI 负责技术实现和代码生成。通俗的讲就是人干两头,AI 干中间。通过这种人机协作的方式,我们能够更精准地捕捉用户的隐含需求,减少沟通成本。

图片

图 1:问题陈述图。用户不确定如何驱动代理生成所需的软件,Agent 也不知道如何满足用户需求。我们在用户和 Agent 之间建立了一座桥梁,促进了人类决策技能和 Agent 编码能力之间的协作。这种协作创建了一个具有轻量级迭代反馈的生成式软件开发代理。

2. 关键创新

我们的创新主要体现在以下三个方面:

  • 人干两头 AI 干中间的人机协作方式

用户在每次迭代的开始(场景决策)和结束(验收与建议)参与进来,AI 则负责中间的技术实现。这样既保留了用户的控制权,又充分利用了 AI 的优势,减少了错误的发生。

  • 构建用户和 Agent 之间的桥梁

我们首次将行为驱动开发(BDD) 引入生成式软件开发中,使用 Gherkin 语言 将用户的模糊需求转化为清晰、可测试的场景描述,弥合了不完整需求与精确功能之间的差距。通过动态融入用户的决策,我们确保了生成的软件始终符合用户的真实需求。

  • 自我进化的 Agent 图架构

我们设计了一个包含人类决策点的 Agent 图,形成了一个有向循环的流程,便于迭代和扩展。引入了记忆池来收集用户的决策结果,推荐给有类似需求的后续用户,形成自我更新的循环。

AgileGen 核心组件设计介绍

图片

                              图 2 AgileGen 概括

1. 用户需求和场景决策组件

- 用户需求决策:用户首先以自然语言描述自己的需求。这是用户参与决策的第一步,决定了要生成的软件目标。例如,用户可能会输入:“Please generate a web system with a random roll call function”

- 场景决策:AgileGen 会根据用户的需求,从记忆池中匹配类似的需求和场景,为用户提供参考。用户可以对这些场景进行确认、添加、删除或修改,从而迭代地澄清需求。这些决策将被记录并存储在记忆池中,供后续用户参考并循环使用。

2. 场景设计组件

- 记忆池机制:存储了大量先前用户决策的场景描述,当新的需求输入时,系统会从记忆池中匹配相似的需求,提供参考场景,提升场景设计的可靠性。随着使用次数的增加,记忆池会不断丰富,为用户提供更精准的参考。

- 交互桥:为了让用户无需学习领域特定语言 Gherkin,系统设计了一个交互式桥梁,将 Gherkin 场景转换为自然语言。用户可以轻松理解这些场景,并进行相应的决策,降低了技术门槛。

3. 快速原型设计组件

- 视觉设计:系统根据用户确认的 Gherkin 场景,自动生成页面布局和视觉描述,遵循八大成功的视觉设计原则,确保界面美观、易用。

- 代码生成与一致性因子:通过生成一致性因子(测试用例),确保生成的代码与业务逻辑一致,减少功能偏差。

- 自动修改与迭代:系统能够根据用户的反馈,自动修改代码,实现快速迭代。

4. 用户验收与推荐反馈决策

- 用户验收决策:在原型生成后,AgileGen 为用户提供一个代码执行链接,用户可以直接体验软件的功能。如若满意可以下载完整代码,部署到实际环境中。

- 用户推荐反馈决策:通过对界面和功能的测试,用户可以提出修改建议,如调整界面风格、添加新功能等。AgileGen 会根据用户的反馈,自动修改代码,并提供新的原型供用户验收。这种循环持续进行,直到用户满意并完成软件交付。

实战案例:从想法到成品

让我们回到之前的例子,看看 AgileGen 是如何将一个简单的想法转化为完整的软件的。

步骤 1:提出需求

用户输入初始需求:“Please generate a web system with a random roll call function”

图片

步骤 2:场景设计与确认

AgileGen 利用记忆池,从类似的需求中提取可能的场景,并以自然语言呈现给用户:

图片

用户可以确认这些场景,或者进行修改。例如,用户可能希望添加一个功能:“I need to be able to save the history of the roll call name.”

图片

步骤 3:快速原型生成

AgileGen 根据用户决策过的 Gherkin 场景,生成初步的代码和界面设计,包括页面布局、按钮位置、颜色搭配等。

图片

图片

步骤 4:用户反馈与迭代

用户运行生成的原型,如果发现界面颜色不符合期望,或者按钮位置需要调整。他可以在系统中提出这些问题,AgileGen 将根据反馈自动修改代码。

- 功能增加反馈:随机点名时给我一些 python 相关的问题。

图片

图片

- 样式修改反馈:我希望颜色能够更丰富一些。

图片

图片

步骤 5:完成并交付

经过几次迭代,用户对功能和界面都满意之后,下载完整的代码,部署到实际环境中。

图片

- 更多示例和讲解

图片取人类与大模型之长,人机协作式智能软件开发框架AgileGen来了

视频链接:https://www.youtube.com/watch?v=lClwF7KN2xw

案例对比:与现有生成式软件开发方法对比

1. 笔记本助理项目 (Bookkeeping Assistant)

用户需求描述:I need a bookkeeping assistant website.

图片

AgileGen+GPT3.5 和 AgileGen+GPT4 和 GPT-Engineer 能够做到实现记账功能。AgileGenAgileGen+GPT3.5 生成的功能更多,而 AgileGen+GPT4 生成了更简洁的功能,以更合理的页面布局完成核心功能。ChatDev (_23 版本,_24 版本)、GPT3.5+CoT 和 GPT4+CoT 生成的页面未完成簿记功能。相反,它们是常见网页元素的组合(例如 “关于我们” 和 “联系我们”)。GPT4o+CoT 生成的页面使用 Bootstrap 样式表,但功能不完整无法记录条目。

2. 运动场地预定软件 (Sport Arena)

用户需求描述:Develop a user-friendly software application that allows users to create and customize virtual sports arenas.(来源于 ChatDev’s SRDD 数据集)

图片

AgileGen+GPT4 方法支持场地的创建、功能定制和配置管理,而 ChatDev+GPT-4 生成没有 GUI 的应用程序,ChatDev+GPT-3.5 生成了两个点击无响应的按钮界面,标记为 “Create arena” 和 “Customize arena”。

3. 视频分割软件 (Video Clipper)

用户需求描述:VideoClipper is a software application that allows users to easily clip and trim videos. It provides an intuitive interface to select specific sections of the video, and saves the trimmed video as a new file.(来源于 ChatDev’s SRDD 数据集)

图片

所有方法都生成了能够完成视频剪辑的软件,但 AgileGen 生成的界面体现了更好的界面设计和交互性。

展望未来:开启软件开发的新纪元

我们相信,AgileGen 的出现,将开启软件开发的新纪元。通过人机协作,充分发挥人类的创造力和 AI 的计算能力,软件开发将变得更加高效、准确和个性化。正如 Frederick P. Brooks 所言,软件开发的本质困难在于需求分析和设计。AgileGen 通过引入人机协作的敏捷开发理念,让用户深度参与需求的澄清和验收,使得软件真正满足用户的需求。

我们诚挚地邀请广大开发者、企业和对软件开发感兴趣的朋友和学者,关注并参与 AgileGen 的未来发展。让我们携手共进,探索人机协作在软件开发中的无限可能,开启智能软件开发的新时代!

相关资讯

Hinton、LeCun、Bengio三巨头,马维英、陈海波等华人入选,2023 ACM Fellow公布

本届 ACM Fellow 包揽了万维网发明者、深度学习三巨头等重磅名人学者。今天,美国计算机协会 ACM(Association for Computing Machinery)公布了最新一届 Fellow 名单。ACM 创立于 1947 年,是全世界计算机领域影响力最大的专业学术组织之一。ACM Fellow 是由该组织授予资深会员的荣誉,目的为表彰会员中对于计算机相关领域贡献前 1% 的学者,其审查过程十分严格,每年遴选一次,研究员由同行提名,提名由委员会审查。本年度新入选科学家中共有 68 人,他们的贡献涉

中科大吴枫获IEEE CAS最高荣誉奖项,11位学者获ACM四大技术奖项

5 月 24 日,IEEE 电路与系统(CAS)学会将 2021 年度 IEEE CAS Mac Van Valkenburg 奖授予中国科学技术大学吴枫教授,以表彰他对「多媒体非均匀编码和通信的贡献」,时隔不久,5 月 26 日,计算机协会(Association for Computing Machinery)宣布了四项著名技术奖的获得者。

陈怡然、刘学等多位华人学者当选,ACM SIG新任主席名单出炉

近日,ACM SIG 新一届选举结果出炉,多位华人学者当选SIG主席。