ChatGPT 人工智能 GPT4 伦理 生成式 医疗 监管 安全 机器学习 深度学习 神经网络 计算机视觉 强化学习 模型 算法 应用 开发 研究 工具 平台 框架 数据集 训练 部署 安全 合规 培训 投资 LLM,llm AI,ai,Ai 大模型 大语言模型 制图 生图 绘图 文生图 文生视频 生成式AI AGI 世界模型 sora chatGPT,chatgpt,ChatGpt claude openai Llama deepseek midjourney 红熊猫模型 Red panda,panda Stable Diffusion,StableDiffusion,stable DALL- E 3 DALL E DALL Flux,flux 扩散模型 混元大模型 文心一言 通义千问 可灵 Pika PixelDance 豆包 月之暗面 零一万物 阶跃星辰 搜索增强 MiniMax Talkie Agent prompt fastai LangChain TTS 微调 提示词 知识库 智能体
# 热门搜索 #
搜索
取人类与大模型之长,人机协作式智能软件开发框架AgileGen来了
4728点击    2024-11-19 20:28

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


作者联系方式:zhang_sai@tju.edu.cn


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


而这一切的背后,正是我们即将介绍的 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:完成并交付


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



- 更多示例和讲解




视频链接: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 的未来发展。让我们携手共进,探索人机协作在软件开发中的无限可能,开启智能软件开发的新时代!


文章来自于微信公众号“机器之心”


AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

2
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md