软件开发 一个人的能力有限,一支团队的力量无限|机器之心专栏
发表时间:2023-10-04 07:01:45
文章来源:炫佑科技
浏览次数:109
菏泽炫佑科技
软件开发 一个人的能力有限,一支团队的力量无限|机器之心专栏
机器之心编辑部
人类可以通过合作解决复杂的问题,这种模式也适用于人工智能领域。
“一个人的能力是有限的,但一个团队的力量是无限的。” 这句话在现实世界的软件开发中体现得*为淋漓尽致。 对于复杂的任务,人们使用团队合作策略来解决。 但这个模型也适用于AI世界吗?
北京大学李革教授团队提出了一种新的自(自合作)模型。 它允许多个大型模型扮演不同的角色,形成一个无需人工参与的软件开发团队。 通过大模型之间的协作和交互,可以自主完成整个软件开发过程,包括一些复杂的代码生成任务。
论文链接:
尽管大型语言模型(简称:大模型)在代码生成方面展现出了惊人的能力,但在处理复杂任务方面仍然存在挑战。 在现实的软件开发过程中,人们通常通过协作团队工作策略来解决复杂的任务,这可以显着控制开发的复杂性并提高软件的质量。
受此启发,研究人员提出了一个使用大型模型进行代码生成的自框架。 具体来说,通过角色指令,1)多个大规模语言模型扮演不同的“专家”角色,每个模型负责处理复杂任务中的特定子任务; 2)规定协作交互的方式,使得不同的角色可以组成一个互相帮助完成工作的虚拟团队,*终共同完成代码生成任务,无需人工干预。
为了有效地组织和管理这个虚拟团队,研究人员巧妙地将软件开发方法论中的瀑布模型融入到框架中,形成了由分析师、程序员和测试人员三种角色组成的基本团队。 实施软件开发过程的分析、编码和测试阶段。
实验结果表明,与直接使用大模型代码生成相比,自代码生成的性能大大提高,甚至让 GPT-3.5 超越了 GPT-4。 此外软件开发 一个人的能力有限,一支团队的力量无限|机器之心专栏,研究人员表明,自我使大型模型能够有效地处理更复杂的现实世界代码项目,而这些项目通常很难通过直接代码生成来解决。
图 1:代码生成的自框架及其示例。
该研究开创了利用人工智能语言模型进行软件开发的新路径,将人工智能与软件开发过程的各个阶段紧密结合,既提高了开发效率,又保证了软件质量。 通过利用法学硕士的潜力,可以为模型之间的协作和交互提供更有力的支持,从而促进虚拟团队在处理复杂的软件开发任务方面取得成功。 这个自框架提供了一种新的、更高效的自动代码生成方法,有助于推动软件开发领域的创新和进步。 此外,这项工作可以作为未来研究各个领域的自我协作方法以及开发更先进、更专业的虚拟团队来处理更复杂任务的基础。
下面对Self框架进行详细介绍,并以软件开发方法论组建虚拟团队为例。
自架
给定需求x,使用大模型执行Self-生成输出y。任务定义为
。 自我框架由分工和合作两部分组成。
在分工部分,研究人员利用先验知识将复杂的任务分解为一系列阶段
并打造一些不同的角色
,这些角色都是基于大型模型和角色说明。每个阶段
由一个或多个角色
负责任的。
众所周知,大型模型对上下文非常敏感,因为在训练它们时,需要根据先前的文本来预测后续的文本。 因此,一种广泛采用的方式是通过指令或提示来控制大模型的生成。 研究人员使用特定类型的指令(称为角色指令)为大型模型分配身份和职责。 具体来说,研究人员要求大模型扮演与其职责密切相关的特定角色,并传达该角色应执行的详细任务。
使用角色指令的优点是它们只需要在交互开始时提供一次。 在随后的交互中,仅传达意图,而不传达指令和意图的组合。 因此,角色指令提高了后续沟通和协作的整体效率和清晰度。
在协作部分,研究人员致力于促进在自框架内承担不同角色的大型模型之间的有效交互。 每个大型模型都在其指定角色的指导下,通过履行其指定的职责来为整体任务做出贡献。 随着阶段的进展,大型模型将其输出与其他大型模型进行通信,交换信息并输出 y。
使用角色指令,可以有效控制大型模型的输出格式。 结合语言模型的基本方面,这可以初步建立大型模型之间的通信。
合作部分可以形式化为:
在
这是一个舞台
输出,
表达
前提阶段的输出,
表达
相应的角色。请注意,如果阶段
之间的关系不是线性的,自框架可以并行计算。
被视为一种协作,其中角色
与前一阶段的角色合作生成
.输出 y 作为相位
进度迭代更新:
其中f是更新函数。为了促进有效协作,研究人员建立了一个共享黑板,每个角色从中获取完成各自任务所需的信息。
。 算法1给出了自帧的完整算法。
实例化
研究人员将软件工程方法论中的经典瀑布模型引入到自协作框架中,使代码生成中的团队协作更加高效。 具体来说,研究人员设计了一个简化的瀑布模型,由三个阶段组成:分析、编码和测试,作为自协作代码生成的示例。 该实例的工作流程遵循瀑布模型,从一个阶段流向下一阶段,如果发现问题则返回上一阶段进行细化。 因此,研究人员建立了一个基本团队,包括分析师、编码员和测试员,负责分析、编码和测试阶段,如图1(右)所示。 这三个不同的角色被分配以下任务:
分析师:分析师的目标是制定高层计划,专注于指导程序员编写程序,而不是钻研实现细节。 给定一个要求
程序员:作为团队的核心角色,在整个开发过程中,程序员会收到分析师的计划或测试人员的测试报告。 因此,研究人员通过角色描述为程序员分配了两个主要职责: 1. 编写满足指定要求的代码,并遵守分析师提供的计划。 2. 考虑测试人员的测试报告反馈,修复或完善代码。 编码器角色指令的详细信息如图 2 所示。
测试人员:测试人员获取程序员编写的代码并记录涵盖功能、可读性和可维护性等各个方面的测试报告。 研究人员提倡模拟测试过程并生成测试报告的模型,而不是生成测试用例然后执行手动测试代码,从而方便交互并避免额外的工作。
研究人员为此实例开发了角色说明来扮演这三个角色。 图 2 显示了编码器角色指令的示例。在这种情况下,角色指令不仅包括角色描述(角色及其职责),还包括团队描述和用户需求,它们一起将初始化代理和从而设置行为。此实例仅在舞台中
更新时间输出
,并且这个开发过程得到了测试人员的确认
满足要求后结束。
实验结果
研究人员将自代码生成与各种*先进的(SOTA)方法进行了比较,实验结果表明自框架显着提高了底层大型模型的性能。 值得注意的是,基于(GPT-3.5)的自代码生成在四个代码生成基准测试中取得了*佳性能,即使是简单的三人团队(包括分析师、程序员和测试人员),甚至超越了 GPT-4。 考虑到基础大模型本身的差距,将自框架应用到更强大的模型上,比如GPT-4,会产生更好的结果。
研究人员进一步研究了仅使用自然语言描述的代码生成,这种设置更接近实际的软件开发。 在此设置下,研究人员比较了自框架实例化的基本团队中各个角色的绩效,如表2所示。实验结果表明,与仅使用程序员角色相比,由两个或三个角色组成的团队的绩效得到显着改善。
研究人员还研究了不同模型尺寸下大型模型的自协作能力。 研究人员评估了自我方法在处理复杂任务方面的有效性,特别是那些对直接代码生成具有挑战性的任务。 对于此类任务,研究人员采用自我策略作为解决方案。 如图6所示,随着模型规模的扩大,大型模型的能力通常呈现增加的趋势,并且自协作能力在7B参数附近开始出现软件开发,然后持续提高。 实验结果表明,自合作有助于激发大型模型的潜在智能。
此外,研究人员演示了一个自代码生成示例,如图4所示。在这份测试报告中,测试人员指出,实现的代码可能会导致重复元素从列表中删除,这可能会导致一些边缘测试用例无法正常工作。失败。 因此,建议从实现的代码中删除“lst=list(set(lst))”行。 然后程序员根据测试报告中的反馈删除了“lst=list(set(lst))”行。 在*后一次交互中,测试人员确认修改后的代码已通过所有测试并满足要求,代码生成过程结束。
研究人员还将self-应用到了两个更复杂的真实代码项目的例子,即游戏开发和网页制作,如图5和图9所示。self-可以制作出完整的游戏逻辑和令人满意的游戏界面。 对于天气预报网页的开发,也可以正确调用外部天气接口来实现全部功能。 然而,直接代码生成并不能覆盖所有需要的功能,并且存在bug,效率不高。
综上所述,自框架在代码生成任务方面显示出显着的性能改进,使多角色团队能够比单一角色更有效地处理各种问题和挑战。 该方法为自然语言处理和代码生成领域提供了新的研究方向,值得进一步探索和优化。 未来的工作可能包括探索更多的角色和更强大的模型,以及将自框架应用到其他自然语言处理任务中。
综上所述
在这项工作中,研究人员提出了一个自我框架,旨在通过协作和交互的方法增强大型模型解决问题的能力。 具体来说,研究人员探索了在软件开发过程中促进基于团队的代码生成和协作的潜力。 为此,研究人员组建了由三个不同角色组成的初级团队,目的是全面解决代码生成任务。 为了评估自框架的有效性和泛化性能,研究人员对各种代码生成基准进行了广泛的实验。 实验结果提供了大量证据支持自框架的有效性和普适性。 研究人员认为,让模型能够组建自己的团队并合作完成复杂的任务是实现 AGI 的关键一步。 未来,这项研究技术也将直接应用于产品(基于大代码模型的智能软件开发系统)。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等