网易首页 > 网易号 > 正文 申请入驻

微软AI程序员登场,10倍AI工程师真来了?996自主生成代码,性能超GPT-4 30%

0
分享至


新智元报道

编辑:桃子 润

【新智元导读】全球首个AI程序员Devin诞生之后,让码农纷纷恐慌。没想到,微软同时也整出了一个AI程序员——AutoDev,能够自主生成、执行代码等任务。网友惊呼,AI编码发展太快了。

全球首个AI程序员Devin的横空出世,可能成为软件和AI发展史上一个重要的节点。

它掌握了全栈的技能,不仅可以写代码debug,训模型,还可以去美国最大求职网站Upwork上抢单。


一时间,网友们惊呼,「程序员不存在了」?

甚至连刚开始攻读计算机学位的人也恐慌,「10倍AI工程师」对未来的工作影响。


除了Cognition AI这种明星初创公司,美国的各个大厂也早就在想办法用AI智能体降本增效了。

就在3月14日同一天,微软团队也发布了一个「微软AI程序员」——AutoDev。


论文地址:https://arxiv.org/pdf/2403.08299.pdf

与Devin这种极致追求效率和产出结果的方向有所不同。

AutoDev专为自主规划、执行复杂的软件工程任务而设计,还能维护Docker环境中的隐私和安全。


在此之前,微软已有主打产品GitHub Copilot,帮助开发人员完成软件开发。

然而,包括GitHub Copilot在内的一些AI工具,并没有充分利用IDE中所有的潜在功能,比如构建、测试、执行代码、git操作等。

基于聊天界面的要求,它们主要侧重于建议代码片段,以及文件操作。

AutoDev的诞生,就是为了填补这一空白。


用户可以定义复杂的软件工程目标,AutoDev会将这些目标分配给自主AI智能体来实现。

然后,这些AI智能体可以对代码库执行各种操作,包括文件编辑、检索、构建过程、执行、测试和git操作。

甚至,它们还能访问文件、编译器输出、构建和测试日志、静态分析工具等。

在HumanEval测试中,AutoDev分别在代码生成和测试生成方面,分别取得了91.5%和87.8% Pass@1的优秀结果。

网友表示,AI编码发展太快了,2021年GitHub Copilot能解决28.8%的HumanEval问题,到了2024年,AutoDev直接解决了91.5%的问题。


不用人类插手,AutoDev自主完成任务

AutoDev工作流程如下图所示,用户定义一个目标,比如「测试特定方法」。

AI智能体将测试写入一个新文件,并启动测试执行命令,以上都在安全的评估环境中进行。

然后,测试执行的输出(包括失败日志)将合并到对话中。

AI智能体分析这些输出,触发检索命令,通过编辑文件合并检索到的信息,然后重新启动测试执行。

最后,Eval环境提供有关测试执行是否成功,以及用户目标完成情况的反馈。

整个过程由AutoDev自主协调,除了设定初始目标之外,无需要开发人员干预。

相比之下,如果现有的AI编码助手集成到IDE 中,开发人员必须手动执行测试(比如运行pytest)、向AI聊天界面提供失败日志、可能需要识别要合并的其他上下文信息,并重复验证操作确保AI生成修改后的代码后测试成功。


值得一提的是,AutoDev从以前许多在AI智能体领域的研究中汲取了灵感,比如AutoGen——编排语言模型工作流并推进多个智能体之间的对话。

AutoDev的能力超越了对话管理,使智能体能够直接与代码存储库交互,自动执行命令和操作,从而扩展了 AutoGen。

同样,AutoDev的研究也借鉴了Auto-GPT。这是一种用于自主任务执行的开源AI智能体,通过提供代码和IDE特定功能来支持执行复杂的软件工程任务。


AutoDev构架


上图是AutoDev架构的简单示意图。

AutoDev主要由4个功能模块组成:

-用于跟踪和管理用户与代理对话的对话管理器(Conversation Manager);

-为代理提供各种代码和集成开发环境相关工具的工具库(Tools library);

-用于调度各种代理的代理调度器(Agents Scheduler);

-以及用于执行操作的评估环境(Evaluation Environment)。

下面就给大家详细介绍每种功能模块。

规则、行动和目标配置

用户通过yaml文件配置规则和操作来启动流程。

这些文件定义了AI代理可以执行的可用命令(操作)。

用户可以通过启用/禁用特定命令来利用默认设置或细粒度权限,从而根据自己的特定需求量身定制AutoDev。

配置步骤目的是实现对AI代理能力的精确控制。

在这一阶段,用户可以定义人工智能代理的数量和行为,分配特定的责任、权限和可用操作。

例如,用户可以定义一个 「开发者 」代理和一个 「审核者 」代理,让它们协同工作以实现目标。

根据规则和操作配置,用户可以指定AutoDev要完成的软件工程任务或流程。

例如,用户可以要求生成测试用例,并确保其语法正确、不包含错误(这涉及编辑文件、运行测试套件、执行语法检查和错误查找工具)。

对话管理器(conversation manager)

会话管理器负责初始化会话历史,在对正在进行的会话进行高级管理方面发挥着关键作用。它负责决定何时中断对话进程,并确保用户、人工智能代理和整个系统之间的无缝交流。

它维护和管理的对话对象,主要包括来自代理的信息和来自评估环境(eval environment)的操作结果。

解析器

解析器解释代理生成的响应,以预定格式提取指令和参数。它能确保指令格式正确,验证参数的数量和准确性(例如,文件编辑指令需要文件路径参数)。

如果解析失败,就会在对话中注入错误信息,阻止对资源库的进一步操作。

通过强制执行特定的代理权限和进行额外的语义检查,成功解析的命令会被进一步分析。

它能确保建议的操作符合用户指定的细粒度权限。

如果命令通过审查,对话管理器就会调用工具库中的相应操作。

输出组织器

输出组织器模块主要负责处理从评估环境接收到的输出。

它选择关键信息(如状态或错误),有选择地总结相关内容,并将结构良好的信息添加到对话历史记录中。

这可确保用户对AutoDev的操作和结果有一个清晰、有条理的记录。

对话终止器

会话管理器决定何时结束会话。这可能发生在代理发出任务完成信号(停止命令)、对话达到用户定义的最大迭代次数/token、或在进程或评估环境中检测到问题时。

AutoDev的全面设计确保了人工智能驱动开发的系统性和可控性。


代理调度程序(Multi-Agents)

代理调度器负责协调人工智能代理,以实现用户定义的目标。

配置了特定角色和可用命令集的代理协同运行,执行各种任务。调度器采用各种协作算法,如循环、基于令牌或基于优先级的算法,来决定代理参与对话的顺序和方式。

具体来说,调度算法包括但不限于以下几种:

(i)循环协作,按顺序调用每个代理,让每个代理执行预定数量的操作;

(ii)基于令牌的协作,让一个代理执行多个操作,直到它发出一个令牌,表示完成了分配的任务;

(iii)基于优先级的协作,按照代理的优先级顺序启动代理。代理调度器通过当前对话调用特定代理。

代理

由OpenAI GPT-4等大型语言模型(LLM)和为代码生成而优化的小型语言模型(SLM)组成的代理通过文本自然语言进行交流。

这些代理从代理调度程序(Agent Scheduler)接收目标和对话历史,并根据规则和行动配置指定的行动做出响应。每个代理都有其独特的配置,有助于实现用户目标的整体进展。

工具库(Tools Library)

AutoDev中的工具库提供了一系列命令,使代理能够对资源库执行各种操作。

这些命令旨在将复杂的操作、工具和实用程序封装在简单直观的命令结构中。

例如,通过build和test 这样的简单命令,就能抽象出与构建和测试执行有关的复杂问题。

-文件编辑:该类别包含用于编辑文件(包括代码、配置和文档)的命令。

-该类别中的实用程序,如写入、编辑、插入和删除,提供了不同程度的精细度。

-代理可以执行从写入整个文件到修改文件中特定行的各种操作。例如,命令 write - 允许代理用新内容重写一系列行。

检索:在这一类别中,检索工具包括grep、find和ls等基本CLI工具,以及更复杂的基于嵌入的技术。

这些技术能让代理查找类似的代码片段,从而提高他们从代码库中检索相关信息的能力。

例如,retrieve 命令允许代理执行与所提供内容类似的基于嵌入的片段检索。

-构建与执行:这类命令允许代理使用简单直观的命令毫不费力地编译、构建和执行代码库。底层构建命令的复杂性已被抽象化,从而简化了评估环境基础架构中的流程。这类命令的示例包括:构建、运行 <文件>。

-测试与验证:这些命令使代理能够通过执行单个测试用例、特定测试文件或整个测试套件来测试代码库。代理可以执行这些操作,而无需依赖特定测试框架的底层命令。

这类工具还包括校验工具,如筛选器和错误查找工具。这类命令的例子包括:检查语法正确性的 syntax 和运行整个测试套件的 test。

-Git:用户可以为Git操作配置细粒度权限。包括提交、推送和合并等操作。例如,可以授予代理只执行本地提交的权限,或者在必要时将更改推送到源代码库。

-通信:代理可以调用一系列旨在促进与其他代理和/或用户交流的命令。值得注意的是,talk命令可以发送自然语言信息(不解释为版本库操作命令),ask命令用于请求用户反馈,而stop命令可以中断进程,表示目标已实现或代理无法继续。

因此,AutoDev中的工具库为人工智能代理提供了一套多功能且易于使用的工具,使其能够与代码库进行交互,并在协作开发环境中进行有效交流。

评估环境(Eval Environment)

评估环境在Docker容器中运行,可以安全地执行文件编辑、检索、构建、执行和测试命令。

它抽象了底层命令的复杂性,为代理提供了一个简化的界面。评估环境会将标准输出/错误返回给输出组织器模块。

整合

用户通过指定目标和相关设置启动对话。

对话管理器初始化一个对话对象,整合来自人工智能代理和评估环境的信息。随后,对话管理器将对话分派给负责协调人工智能代理行动的代理调度器。

作为人工智能代理,语言模型(大型或小型 LM)通过文本互动提出指令建议。

命令界面包含多种功能,包括文件编辑、检索、构建和执行、测试以及 Git 操作。对话管理器会对这些建议的命令进行解析,然后将其引导至评估环境,以便在代码库中执行。

这些命令在评估环境的安全范围内执行,并封装在 Docker 容器中。

执行后,产生的操作将无缝集成到对话历史中,为后续迭代做出贡献。

这种迭代过程一直持续到代理认为任务完成、用户干预发生或达到最大迭代限制为止。

AutoDev 的设计确保了系统、安全地协调人工智能代理,以自主和用户控制的方式完成复杂的软件工程任务。

实证评估设计

在研究人员的实证评估中,评估了AutoDev在软件工程任务中的能力和有效性,研究它是否能够提升人工智能模型的性能,而不仅仅是简单的推理。

此外,研究人员还评估了AutoDev在步骤数、推理调用和token方面的成本。

主要是确定了三个实验研究问题:

- 1 : AutoDev 在代码生成任务中的效果如何?

- 2 : AutoDev 在测试生成任务中的效果如何?

- 3 : AutoDev 完成任务的效率如何?

1 : AutoDev在代码生成任务中的效率如何?

研究人员使用Pass@k指标来衡量AutoDev的有效性,其中表示尝试的次数。

成功解决的问题是指AutoDev生成的方法主体代码满足所有人工编写的测试。一次尝试相当于一次完整的AutoDev对话,其中涉及多个推理调用和步骤。

这与其他方法(如直接调用 GPT-4)形成鲜明对比,后者通常只涉及一次推理调用。有关多次推理调用和步骤的细节将在 3 中进一步探讨。在本次评估中,研究人员设置 = 1,从而计算Pass@1,只考虑第一次尝试的成功率。

2:AutoDev在测试生成任务中的效果如何?

对于这个研究问题,研究人员修改了HumanEval数据集,来评估AutoDev在生成测试方面的能力。

研究人员考虑人工编写的解决方案,并放弃所提供的人工编写的测试。

他们指示AutoDev为重点方法生成测试用例,并根据测试成功率、重点方法的调用和测试覆盖率对其进行评估。

研究人员报告Pass@1,如果测试通过并调用了焦点方法,则认为测试成功。

此外,研究人员还将AutoDev测试的覆盖率与人工编写的测试覆盖率进行了比较。

3:AutoDev 完成任务的效率如何?

在本研究问题中,研究人员将调查AutoDev完成SE任务的效率。

研究人员分析了所需步骤或推理调用的数量、所使用命令的分布(如写入、测试)以及对话中使用的token总数。

AutoDev设置

在本次评估中,AutoDev基于GPT-4模型(gpt-4-1106-preview)与一个代理保持一致的设置。

启用的操作包括文件编辑、检索和测试。

唯一可用的通信命令是表示任务完成的stop命令。

其他命令,如询问,都是禁用的,这就要求 AutoDev 在初始目标设定之外,在没有人类反馈或干预的情况下自主运行。

实验结果

- AutoDev在代码生成任务中的效率如何?

表1显示了,将AutoDev与两种替代方法和零样本基线进行了比较。

研究人员将AutoDev与语言代理树搜索(LATS)和Reflexion 进行了比较,这两种方法是截至2024年3月HumanEval 排行榜上的两种领先方法。

零样本基线(GPT-4)的结果取自OpenAI GPT-4技术报告。

AutoDev Pass@1率为91.5%,在HumanEval排行榜上稳居第二。

值得注意的是,这个结果是在没有额外训练数据的情况下获得的,这将AutoDev与LATS区分开来,后者达到了94.4%。

此外,AutoDev框架将GPT-4性能从67%提升至91.5%,相对提升了30%。

这些结果体现出,AutoDev有能力显著提升大模型完成软件工程任务方面的表现。


- AutoDev在测试生成任务中的效果如何?

AutoDev在针对测试生成任务修改的HumanEval数据集上,获得了87.8% Pass@1分数,与使用相同GPT-4模型的基线相比,相对提高了17%。

AutoDev生成的正确测试(包含在Pass@1中)实现了99.3%的鲁棒覆盖率,与人工编写的测试的99.4%覆盖率相当。


- AutoDev完成任务的效率如何?

图3显示了,AutoDev在代码生成和测试生成任务中使用的命令累积数,其中考虑到问题1和问题2中每个HumanEval问题的平均评估命令数量。

对于代码生成,AutoDev平均执行5.5条命令,其中包括1.8条写入操作、1.7条测试操作、0.92条停止操作(表示任务完成)、0.25条错误命令,以及最少的检索(grep、find、cat)、语法检查操作和通话通信命令。

在「测试生成」任务中,命令的平均数量与「代码生成」任务一致。

不过,「测试生成」任务涉及的检索操作更多,错误操作的发生率也更高,因此每次运行的平均命令总数为6.5条。


在前两个问题中,为解决每个HumanEval问题而进行的AutoDev对话的平均长度分别为1656和1863个token。

这包括用户的目标、来自AI智能体的信息和来自评估环境的响应。

相比之下,GPT-4(基线)的零样本在每个任务中平均使用200个token(估计值)生成代码,使用373个token生成测试。

虽然AutoDev使用了更多的token,但大量token用于测试、验证和解释自己生成的代码,超出了基线方法的范围。

最后,AutoDev会产生与协调人工智能智能体、管理对话以及在Docker环境中执行命令相关的执行成本。

接下来,一起看一下AutoDev如何执行测试生成任务。

开发者给到任务:设定生成遵循特定格式的pytest测试。

AutoDev智能体启动write-new命令,提供测试文件的文件路径和内容。

随后,AutoDev智能体触发测试操作,AutoDev在其安全的Docker环境中运行测试,并给出测试执行报告JSON。


然后,AutoDev开始自主执行:


AutoDev智能体在pytest输出中发现了一个错误,认识到需要进行修复,以使测试与函数的预期行为保持一致。

继续如图5所示,AutoDev智能体发出写入命令,指定文件路径和行号范围 (5-5),以重写错误的断言语句。

随后,AutoDev智能体继续执行测试,并测试成功。


从上面例子中看得出,AutoDev能够自我评估生成的代码,并解决自身输出中的错误。

此外,AutoDev可以帮助用户深入了解智能体的操作,并允许智能体在任务期间进行交流。

随着Devin、AutoDev等AI工程师的诞生,程序员们的工作可能会一大部分实现自动化。

参考资料:

https://www.reddit.com/r/singularity/comments/1bfolbj/autodev_automated_aidriven_development_microsoft/

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
39岁詹皇成救世主!轰30+5末节14分连中关键球 拼到弯腰大口喘气

39岁詹皇成救世主!轰30+5末节14分连中关键球 拼到弯腰大口喘气

厝边人侃体育
2024-04-28 11:01:11
周鸿祎突发疾病,曾喝陌生女子递来的水,2个手指3锥子扎不出血来

周鸿祎突发疾病,曾喝陌生女子递来的水,2个手指3锥子扎不出血来

汉史趣闻
2024-04-27 22:24:26
哪吒汽车CEO张勇回应品牌改名

哪吒汽车CEO张勇回应品牌改名

21世纪经济报道
2024-04-28 11:29:25
技不如人?为何我国返回舱着陆后一身焦黑,印度返回舱却非常干净

技不如人?为何我国返回舱着陆后一身焦黑,印度返回舱却非常干净

说天说地说实事
2024-04-27 16:43:57
67岁向太入院抢救!摔倒30分钟无人应,手术5小时向华强全程陪伴

67岁向太入院抢救!摔倒30分钟无人应,手术5小时向华强全程陪伴

麦大人
2024-04-27 14:40:43
乌方称多地能源设施被俄导弹击中,受损严重,泽连斯基:乌克兰至少还需7套“爱国者”防空系统

乌方称多地能源设施被俄导弹击中,受损严重,泽连斯基:乌克兰至少还需7套“爱国者”防空系统

纵相新闻
2024-04-28 12:21:35
广州一女子跳楼砸中路人后续:被砸当事人发文回应,商场发声

广州一女子跳楼砸中路人后续:被砸当事人发文回应,商场发声

180°视角
2024-04-28 14:27:59
雷军回应李想送理想L6 Max:感谢心意,我还是决定买一台表示支持!李想:感谢雷总对理想L6产品认可

雷军回应李想送理想L6 Max:感谢心意,我还是决定买一台表示支持!李想:感谢雷总对理想L6产品认可

和讯网
2024-04-28 15:01:35
“新冠疫苗之父”杨晓明被抓!个人履历曝光,评论区彻底失控!

“新冠疫苗之父”杨晓明被抓!个人履历曝光,评论区彻底失控!

古希腊掌管松饼的神
2024-04-28 09:10:08
丈夫、弟弟、儿子均遇难!家属质疑“华为问界M7刚买仨月事故后起火”,回应→

丈夫、弟弟、儿子均遇难!家属质疑“华为问界M7刚买仨月事故后起火”,回应→

鲁中晨报
2024-04-28 15:49:03
河北多地严防割青毁粮惹众怒,老百姓:青饲每亩1500,成熟割1000

河北多地严防割青毁粮惹众怒,老百姓:青饲每亩1500,成熟割1000

三月柳
2024-04-27 14:26:49
思路打开了!浙江推出房产新政:允许个人拿地盖房,每个人都是开发商

思路打开了!浙江推出房产新政:允许个人拿地盖房,每个人都是开发商

可达鸭面面观
2024-04-27 19:25:42
最可怕的是,底层老百姓收入不涨,全民人均收入却节节攀升

最可怕的是,底层老百姓收入不涨,全民人均收入却节节攀升

鹏飞深文
2024-04-28 10:50:15
清凉峰事件大结局:男驴友瘦了,体力好,女子老公发声耐人寻味!

清凉峰事件大结局:男驴友瘦了,体力好,女子老公发声耐人寻味!

古希腊掌管松饼的神
2024-04-27 17:53:41
河南纪委披露:剑桥大学博士、“80后”干部柳敬元已落马

河南纪委披露:剑桥大学博士、“80后”干部柳敬元已落马

澎湃新闻
2024-04-28 14:58:29
2-2!42岁阿隆索无敌玄学:率药厂连续3场绝平,46场不败刷新纪录

2-2!42岁阿隆索无敌玄学:率药厂连续3场绝平,46场不败刷新纪录

我爱英超
2024-04-28 02:56:09
印尼女网红视频作证:雅万高铁漏水!印尼媒体质疑中国高铁品质?

印尼女网红视频作证:雅万高铁漏水!印尼媒体质疑中国高铁品质?

步论天下事
2024-04-28 10:00:30
A股:股市或将迎来大级别的下跌

A股:股市或将迎来大级别的下跌

生活中的栗子
2024-04-28 10:59:59
深夜突发王炸利好,比降印花税还要劲爆!A股周一或一柱擎天

深夜突发王炸利好,比降印花税还要劲爆!A股周一或一柱擎天

奔走的股市
2024-04-28 13:37:12
330天研发疫苗盈利7000亿!杨晓明被查:打3针北京生物者说感恩

330天研发疫苗盈利7000亿!杨晓明被查:打3针北京生物者说感恩

大风文字
2024-04-28 08:15:57
2024-04-28 17:20:49
新智元
新智元
AI产业主平台领航智能+时代
10967文章数 65460关注度
往期回顾 全部

科技要闻

马斯克周日突然现身北京,要谈FSD入华?

头条要闻

华为问界M7刚买仨月就出事故致3死 死者家属提出质疑

头条要闻

华为问界M7刚买仨月就出事故致3死 死者家属提出质疑

体育要闻

赢了!詹皇末节14分制胜咆哮 压力给到KD

娱乐要闻

张杰谢娜发文为何炅庆生,亲如家人!

财经要闻

上财万字报告深度解读Q1经济

汽车要闻

鸿蒙首款行政旗舰轿车 华为享界S9实车亮相车展

态度原创

亲子
家居
旅游
本地
公开课

亲子要闻

什么叫一双眼睛拯救了整张脸

家居要闻

光影之间 空间暖意打造生活律动

旅游要闻

年轻人出游:为了爱好说走就走 好玩不贵很重要

本地新闻

云游中国|苗族蜡染:九黎城的“潮”文化

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版