您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

北大用ChatGPT打造开发团队,无需人类干预,AI自主完成软件开发

时间:2023-07-28 19:50:53  来源:机器之心  作者:
人类可以通过合作的方式解决复杂问题,这种模式同样适用于 AI 领域。

「一个人的能力有限,一支团队的力量无限」,这一句话在现实世界的软件开发中体现的淋漓尽致。对于复杂的任务,人们通过团队合作策略来解决。但在 AI 世界中,这样的模式是否也适用呢?

北京大学李戈教授团队提出了一种全新的 self-collaboration(自合作)模式。它允许多个大模型模型扮演不同的角色,组成了一个无需人类参与的软件开发团队,通过大模型间的合作和交互,自主完成整个软件开发流程,甚至包括一些复杂的代码生成任务。

论文链接:https://arxiv.org/pdf/2304.07590.pdf

尽管大型语言模型 (简称为:大模型) 在代码生成方面已经展示出了惊人的能力,但是在处理复杂任务上仍然存在挑战。在现实中的软件开发过程中,人们通常通过协同团队工作的策略来解决复杂的任务,这种策略能够显著地控制开发的复杂性并提高软件的质量。

受此启发,研究者提出了一个使用大模型进行代码生成的 self-collaboration 框架。具体来说,通过角色指令,1) 多个大型语言模型扮演不同的 "专家" 角色,每个模型负责处理复杂任务中的特定子任务;2) 规定合作和交互的方式,使不同的角色形成一个虚拟团队,帮助彼此完成工作,最终无需人为干预就能共同完成代码生成任务。

为了有效地组织和管理这个虚拟团队,研究者巧妙地将软件开发方法论中的瀑布模型融入到了框架中,组建了一个由三个 ChatGPT 角色(即分析师、程序员和测试员)组成的基础团队,实施软件开发过程中的分析、编码和测试阶段。

实验结果表明,与直接利用大模型代码生成相比,self-collaboration 代码生成的性能大幅提升,甚至让 GPT-3.5 超越了 GPT-4。此外,研究者还展示了 self-collaboration 能使大模型有效地处理更复杂的实际代码项目,而这些项目往往是直接代码生成难以解决的。

图1:用于代码生成的 Self-collaboration 框架及其实例。

此项研究开创了一种新的使用人工智能语言模型进行软件开发的路径,将人工智能与软件开发过程的各个阶段紧密结合,既提高了开发效率,也保证了软件的质量。通过利用 ChatGPT 等 LLMs 的潜力,可以为模型间合作和交互提供更强大的支持,从而促进虚拟团队在处理复杂软件开发任务方面的成功。这种 self-collaboration 框架为自动代码生成提供了一种新的、更高效的方法,有助于推动软件开发领域的创新和进步。此外,这项工作还可以作为未来研究各个领域的自我合作方法以及开发更先进、更专业的虚拟团队来处理更复杂任务的基础。

下面具体介绍一下 Self-collaboration 框架以及在该框架基础上按照软件开发方法论组建虚拟团队的实例。

Self-collaboration 框架

给定需求 x,利用大模型执行 Self-collaboration 以生成输出 y。该任务定义为

。Self-collaboration 框架由两部分组成:分工和合作。

在分工部分,研究者运用先验知识将复杂任务分解为一系列阶段

并构建一些不同的角色

,这些角色基于大模型和角色指令。每个阶段

由一个或多个角色

负责。

众所周知,大模型对上下文非常敏感,因为它们在训练时,被要求根据前面的文字预测后续文字。因此,一种广泛使用的方式是通过指令或提示来控制大模型的生成。研究者采用特定类型的指令为大模型分配身份和职责,被称为角色指令。具体来说,研究者要求大模型扮演与其职责紧密相关的特定角色并且传达这个角色应该执行的详细任务。

使用角色指令的优势在于它们仅需要在交互开始时被提供一次。在随后的交互中,传达的只是意图,而不是指令和意图的组合。因此,角色指令提升了后续沟通合作的整体效率和清晰度。

在合作部分,研究者关注于促进在 self-collaboration 框架内承担不同角色的大模型之间的有效交互。每个大模型在其指定角色指令的指导下,通过履行其分配的职责为整体任务做出贡献。随着阶段的进展,大模型与其他大模型交流他们的输出,交互信息并输出 y 。

利用角色指令,可以有效控制大模型的输出格式。结合语言模型的基础方面,这可以初步建立大模型之间的通信。

合作部分可以形式化为:

其中

是阶段

的输出,

表示

前提阶段的输出,

表示

对应的角色。请注意,如果阶段

之间的关系不是线性关系,self-collaboration 框架可以并行化。计算

被视为合作,其中角色

与每个前面阶段的角色合作生成

。输出 y 随着阶段

的进展迭代更新:

其中 f 是一个更新函数。为了促进有效合作,研究者建立了一个共享黑板,每个角色从中获取所需的信息以完成各自的任务

。算法 1 给出了 self-collaboration 框架的完整算法。

实例化

研究者将软件工程方法论中的经典瀑布模型引入到自协作框架中,使代码生成的团队协作更加高效。具体来说,研究者设计了一个由分析、编码和测试三个阶段组成的简化瀑布模型,作为自协作代码生成的实例。该实例的工作流程遵循瀑布模型从一个阶段流向下一阶段,如果发现问题,则返回上一阶段进行细化。因此,研究者建立了一个基本团队,包括分析师、编码员和测试员,负责分析、编码和测试阶段,如图 1(右)所示。这三个不同的角色被分配以下任务:

分析师:分析师的目标是制定高层次的 plan 并专注于指导程序员编写程序,而不是深入研究实现细节。给定需求 x,分析师将 x 分解为几个易于解决的子任务,以方便程序员直接实施,并制定概述实施主要步骤的 plan。

程序员:作为该团队的核心角色,程序员将在整个开发过程中接收来自分析师的 plan 或来自测试人员的测试报告。因此,研究者通过角色说明将两项主要职责分配给程序员:1. 编写满足指定要求的代码,遵守分析师提供的 plan。2. 修复或细化代码,考虑到测试人员反馈的测试报告反馈。编码器角色指令的详细信息如图 2 所示。

测试员:测试员获取程序员编写的代码,然后记录包含各个方面(例如功能性、可读性和可维护性)的测试报告。研究者提倡模型模拟测试过程并生成测试报告,而不是生成测试用例然后通过执行手动测试代码,从而促进交互并避免额外的工作。

研究者为该实例制定了角色指令来扮演这三个角色。编码器角色指令的示例如图 2 所示。在本例中,角色指令不仅包括角色描述(角色及其职责),还包括团队描述和用户需求,它们将共同初始化 ChatGPT 代理,从而设置 ChatGPT 的行为。该实例仅在阶段

为 coding 时更新输出

,并且此开发过程在测试人员确认

满足要求时结束。

实验结果

研究者将 self-collaboration 代码生成与各种最先进(SOTA)方法进行比较,实验结果表明,self-collaboration 框架显著提高了基础大模型的性能。值得注意的是,即使是一个简单的三人团队(包括分析师、程序员和测试员),基于 ChatGPT (GPT-3.5) 的 self-collaboration 代码生成在四个代码生成基准测试中也取得了最佳性能,甚至超过了 GPT-4。考虑到基础大模型本身的差距,将 self-collaboration 框架应用于更强大的模型,例如 GPT-4,将产生更好的结果。

研究者进一步研究了仅使用自然语言描述的代码生成,这种设置更贴近实际的软件开发。在此设置下,研究者比较了由 self-collaboration 框架实例化的初等团队中每个 ChatGPT 角色的表现,如表 2 所示。实验结果表明,与仅使用程序员角色相比,无论是二位角色还是三位角色组建的团队,性能都有显著提高。

研究者还研究了在不同模型大小下大模型的自合作能力。研究者评估了 self-collaboration 方法在处理复杂任务时的有效性,特别是那些对直接代码生成具有挑战性的任务。对于此类任务,研究者采用 self-collaboration 策略作为解决方案。如图 6 所示,随着模型规模的扩大,大模型的 coding 能力通常呈现出增加的趋势,而自合作能力在 7B 参数量左右开始显现出来,随后不断提升。实验结果表明自合作有助于激发大模型的潜在智能。

此外,研究者展示了一个 self-collaboration 代码生成示例,如图 4 所示。在这份测试报告中,测试员指出所实现的代码可能会导致从列表中删除重复元素,从而可能导致某些边缘测试用例失败。因此,建议从实现的代码中删除行 “lst = list (set (lst))”。程序员随后根据测试报告中的反馈删除了 “lst = list (set (lst))” 行。在最后一次交互中,测试员确认修改后的代码已经通过所有测试,满足要求,至此代码生成过程结束。

研究者还将 self-collaboration 框架应用于更复杂的实际代码项目的两个例子,分别是游戏开发和网页制作,如图 5 和图 9 所示。self-collaboration 可以生产完整的游戏逻辑和令人满意的游戏界面,对于天气预报网页的开发,也可以正确调用外部天气接口,实现所有功能。而直接代码生成则并没有覆盖所有要求的功能并且存在 bug,效果不佳。

总之,self-collaboration 框架在代码生成任务中表现出显著的性能提升,与单一角色相比,多角色团队能够更有效地处理各种问题和挑战。这种方法为自然语言处理和代码生成领域提供了新的研究方向,值得进一步探讨和优化。未来的工作可能包括对更多角色和更强大模型的探索,以及将 self-collaboration 框架应用于其他自然语言处理任务。

结论

在该工作中,研究者提出了一种 self-collaboration 框架,其目的是通过合作和交互方法来增强大模型的问题解决能力。具体而言,研究者探索了 ChatGPT 在促进基于团队的代码生成和合作方面的软件开发过程中的潜力。为此,研究者组建了一个由三个不同的 ChatGPT 角色组成的初等团队,目的是全面解决代码生成任务。为了评估 self-collaboration 框架的有效性和泛化性能,研究者针对各种代码生成基准进行了广泛实验。实验结果提供了大量证据支持 self-collaboration 框架的有效性和普适性。研究者认为,让模型能够组建自己的团队并合作完成复杂的任务是实现 AGI 的关键一步。未来该项研究技术也将直接应用于aiXcoder(一款基于代码大模型的智能化软件开发系统)的产品中。



Tags:ChatGPT   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
ChatGPT官宣免注册,全球互联网变天!OpenAI将取代谷歌搜索?
新智元报道编辑:编辑部【新智元导读】OpenAI这份愚人节礼物,实在是太大了:今天起,ChatGPT不用注册,可以直接使用。用户狂欢,竞品颤抖,我们仿佛已经听到,谷歌搜索引擎这位巨人轰然倒...【详细内容】
2024-04-02  Search: ChatGPT  点击:(8)  评论:(0)  加入收藏
无需注册!OpenAI宣布放开ChatGPT使用限制
工智能初创公司OpenAI宣布,即日起用户无须注册即可开始使用ChatGPT的功能。OpenAI在最新公告中写道:“让ChatGPT等工具广泛可用,让人们能够体验到人工智能的好处,这是我们使命的...【详细内容】
2024-04-02  Search: ChatGPT  点击:(6)  评论:(0)  加入收藏
ChatGPT 突然放开了账户限制,面向所有人开放
大门终于打开。奥特曼 OpenAI 的旗舰产品 ChatGPT 突然宣布:将面向所有人开放,无论你有没有注册账户。从今天开始,访问 Chat.openai.com 将不再要求用户登录,用户将直接进入与 C...【详细内容】
2024-04-02  Search: ChatGPT  点击:(3)  评论:(0)  加入收藏
今天起,ChatGPT无需注册就能用了!
 来源:量子位    金磊 克雷西 发自 凹非寺  就在刚刚,OpenAI狠狠地open了一把:从今天起,ChatGPT打开即用,无需再注册帐号和登录了!  像这样,直接登录网站,然后就可以开启对...【详细内容】
2024-04-02  Search: ChatGPT  点击:(7)  评论:(0)  加入收藏
ChatGPT之父Altman两小时对谈,首聊GPT-5何时发布、llya去哪里了、Q*究竟是什么
Altman做客油管博主Lex Fridman科技博客 ,被追问了一个又一个辛辣的问题。长达两个小时的对谈,奥特曼从OpenAI宫斗、马斯克诉讼、Sora,一直聊到AGI与外星文明!本文重点梳理了长...【详细内容】
2024-03-20  Search: ChatGPT  点击:(8)  评论:(0)  加入收藏
ChatGPT主管最新访谈:未来AI和人类如何共处?
Peter Deng在最新访谈中表示:AI不会取代生产力,人类和AI只有合作才能释放真正潜力,ChatGPT比已知的更强大、最大的挑战在于理解用户需求。当地时间3月13日,OpenAI 消费产品副总...【详细内容】
2024-03-19  Search: ChatGPT  点击:(11)  评论:(0)  加入收藏
ChatGPT日耗电超50万度,大模型或带来“电荒”
未来两年内将由“缺硅”变为“缺电”,马斯克的预言可能正在变成现实。据《纽约客》杂志报道,OpenAI的热门聊天机器人ChatGPT每天可能要消耗超过50万千瓦时的电力,以响应用户的...【详细内容】
2024-03-11  Search: ChatGPT  点击:(31)  评论:(0)  加入收藏
OpenAI新功能:ChatGPT可调用自定义机器人,对话更高效!
近日,知名科技公司OpenAI推出了一项新的功能——“对话中调用(@)自定义聊天机器人”,让用户在对话中无缝切换不同领域的机器人。这一功能的出现,为用户带来了极大的便...【详细内容】
2024-02-02  Search: ChatGPT  点击:(53)  评论:(0)  加入收藏
ChatGPT元年之后,AI重塑世界,人类如何与其“智慧共生”?
过去一年,人工智能(AI)凭借大语言模型的爆火迅速进入大众视野。它比以往任何时候都更强大,也更具亲和力。这不仅给未来生活带来了新希望,也在人们心中蒙上了一层担忧—&mdas...【详细内容】
2024-01-26  Search: ChatGPT  点击:(77)  评论:(0)  加入收藏
年度最热AI应用TOP 50,除了ChatGPT还有这么多宝藏
量子位 | 公众号 QbitAI百模齐发、AI工具乱杀的一年里,谁是真正赢家?ChatGPT访问量遥遥领先位居第一,但单次使用时长没超过平均线。Midjourney访问量年度第四,但下滑量位居第二...【详细内容】
2024-01-02  Search: ChatGPT  点击:(51)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条