4月3日,距世界首个AI程序员Devin诞生不足一个月,普林斯顿大学的NLP团队开发了一个开源AI程序员SWE-agent,它利用GPT-4模型在GitHub存储库中自动解决问题。SWE-agent在SWE-bench测试集上的表现与Devin相似,平均耗时93秒,解决了12.29%的问题。SWE-agent通过与专用终端交互,可以打开、搜索文件内容,使用自动语法检查、编辑特定行,以及编写和执行测试。
SWE-agent的智能体-计算机接口(ACI)设计简化了大模型的命令和反馈格式,使其更容易浏览存储库、查看、编辑和执行代码文件。研究团队还提供了一些有用的功能,如代码检查器、文件查看器和全目录字符串搜索命令,以提高效率。
几乎在同日,阿里云公布他们最近迎来了一位特殊的新员工——AI程序员「通义灵码」,工号AI001。这个AI程序员在加入正式员工行列之前已经在阿里云内外进行了数月的实习,并获得了超过80%的好评率。通义灵码的加入显著提高了工程师们在编写、阅读、查找BUG和优化代码等方面的工作效率,其工作能力被描述为7x24小时随叫随到,极大地节省了人类程序员在测试代码上的工作量。
通义灵码由阿里云与通义实验室联合开发,目前已经被下载超过200万次,每天有数百万行代码被采纳。它能够熟练使用200多种编程语言,并精通16种主流语言。通义灵码不仅具备代码续写、生成单元测试、代码优化等技能,还能进行智能问答和异常报错排查,减少了排查工作的复杂度。此外,它还支持企业级代码库专项训练,更好地理解企业代码和文档数据,并支持国产化适配。
在人工智能的浪潮中,AI程序员的出现无疑是技术革命的一个重要里程碑。从20世纪50年代早期的逻辑推理和专家系统的探索,到今天深度学习和机器学习的广泛应用,AI技术的发展背景是多方面的。
AI程序员的兴起,标志着人工智能技术在编程领域的重大突破。它不仅可能重塑软件开发行业的生态,而且对我们理解人工智能的潜力和边界也有着深远的意义。AI编程的兴起可能会改变程序员的工作方式和技能需求,但并不会减少程序员这个职业的重要性。
AI程序员技术特征分析
AI程序员,如Devin、通义灵码和普林斯顿大学的SWE-agent,正在重新定义软件工程的边界。这些系统不仅展示了AI在编程领域的巨大潜力,而且还揭示了技术行业未来可能的发展方向。
Devin:全自动AI软件工程师
Devin是世界上首个全自动AI软件工程师,它的出现标志着AI在软件开发领域的一个重要里程碑。Devin具备长期推理和规划能力,能够执行复杂的工程任务。这意味着Devin不仅能够处理简单的编码任务,还能够管理整个项目的生命周期,从需求收集到设计、编码、测试和部署。
图片
图:OpenDevin 是 Devin 的复制品,其目标是与开源社区共享力量。通过社区贡献和对开放标准的承诺,OpenDevin 希望完善和扩展人工智能辅助软件工程的功能。
Devin的核心优势在于其能够回忆相关上下文,随时间学习并修正错误。这种能力使得Devin能够在项目进展中不断自我完善,减少人为错误的可能性。此外,Devin配备了开发者常用工具,如shell、代码编辑器和浏览器,这些工具都集成在一个沙盒计算环境中,确保了安全性和灵活性。
与用户的实时协作也是Devin的一大特色。它能够实时报告进度,接受反馈,并根据需要与用户共同做出设计选择。这种协作模式不仅提高了开发效率,还增强了项目的适应性和创新性。
Devin的技术特征和能力概述:Devin是由Cognition AI团队开发的AI软件工程师,它具备自主编程的能力,能够独立完成复杂的工程任务。Devin的核心技术特征包括:
- 长期推理与规划:Devin能够规划并执行需要数千个决策的复杂工程任务。
- 上下文相关的记忆:在每一步中,Devin能够回忆相关上下文,学习并纠正错误。
- 开发工具的集成:Devin配备了shell、代码编辑器和浏览器等开发工具。
- 实时协作:Devin能够实时报告进度,接受反馈,并与用户共同做出设计选择。
- 自主修复和优化:Devin能够独立发现并修复代码中的bug,同时也能对AI模型进行训练和微调。
「通义灵码」:先进的AI编程助手
通义灵码作为阿里云推出的AI编程助手,它的目标是提高软件开发的效率和质量。它通过自动化编程任务,帮助程序员减少重复性工作,从而让他们有更多时间专注于创新和解决复杂问题。
图片
通义灵码的未来目标是编写公司20%的代码,使得程序员能够更多地专注于系统设计和核心业务开发。同时,通义灵码也在通义千问APP上线,免费向公众开放,使得任何人都可以在手机上编写和学习代码。对于没有编程基础的学生,通义千问还能提供学习建议和制定学习计划。这标志着AI程序员不仅是程序员的助手,而且可能成为软件开发领域的重要参与者。
「通义灵码」的技术特征和能力概述
- 自动化编程:通义灵码能够辅助程序员编写、读取、查找和优化代码。它可以自动生成代码,包括行级/函数级代码、单元测试和代码注释,从而提高编程效率。
- 多语言支持:该工具已经熟练掌握200多种编程语言,打破了编程语言的边界,使得程序员能够跨语言编写代码。
- 智能问答:通义灵码提供研发智能问答能力,能够快速回答编程相关的问题,帮助解决编程难题。
- 代码优化:它能够深度分析代码及其上下文,迅速识别潜在的编码问题,并提供具体的优化建议。
普林斯顿开源AI程序员:SWE-agent
普林斯顿大学推出的SWE-agent是基于GPT-4技术的首个开源AI程序员。作为一个开源项目,SWE-agent能够在GitHub仓库中自动修复bug,这对于开源社区来说是一个巨大的贡献。在SWE-bench测试集上,SWE-agent成功解决了12.29%的问题,平均耗时仅93秒,显示出与Devin相当的准确率。
SWE-agent的开源性质意味着它能够快速获得社区的反馈和改进,这加速了AI在软件工程领域的进步。SWE-agent的成功也表明,AI程序员不仅能够提高开发效率,还能够提升代码质量,减少维护成本。
图:SWE 基准性能
SWE-agent的技术特征
开源性质 SWE-agent作为一个开源项目,意味着它的代码、设计和功能都是公开的,这为全球的开发者提供了参与和贡献的机会。它在GitHub上迅速获得了1.6k星和109个Fork,显示出开源社区对这一技术的高度认可和兴趣。
1. 基于GPT-4的智能体-计算机接口(ACI) SWE-agent通过智能体-计算机接口(ACI)的设计,使得大模型如GPT-4能够更方便地浏览存储库、查看、编辑和执行代码文件。这种设计类似于人类喜好的UI设计,提高了与大模型的交互效率和质量。
2. 自动修复bug的能力 SWE-agent能够在GitHub仓库中自动修复bug。在SWE-bench测试集上,它成功解决了12.29%的问题,平均耗时仅为93秒,准确率与之前推出的AI程序员Devin相当。这表明SWE-agent在自动化软件工程任务方面具有高效和准确的能力。
3. 与专用终端的交互 SWE-agent通过与专用终端交互来工作,它可以打开、搜索文件内容,使用自动语法检查、编辑特定行,也可以编写并执行测试。这种交互方式为AI程序员提供了更多的自主性和灵活性。
4. 功能性设计 SWE-agent包含了研究团队在智能体-计算机接口设计过程中发现的非常有用的功能,包括添加一个在发出编辑命令时运行的linter,如果代码语法不正确,则不会让编辑命令通过。此外,为智能体提供了专门构建的文件查看器和全目录字符串搜索命令,这些功能都旨在提高工作效率和准确性。
5. 智能体工作流程 SWE-agent的工作流程分为两个阶段:「推理」和「评估」。在推理阶段,SWE-agent会处理GitHub上报告的问题,并生成一个旨在修复该问题的拉取请求(Pull Request)。在评估阶段,会对生成的拉取请求进行评估,以确认它是否真正解决了报告的问题。
AI程序员如Devin、通义灵码和SWE-agent的出现,预示着软件开发领域的未来将更加自动化、智能化和协作化,这些系统的技术特征和能力展示了AI如何能够提高开发效率,降低错误率,并推动创新。
AI程序员测试效果
Devin AI程序员的测试显示,它能够完成多种编程任务,包括使用API获取股票价格的软件和创建允许用户与大型模型下棋的网站。Devin在处理API密钥、包错误和与LLM下棋的提示词方面表现出色。然而它在反馈速度上还有待提高。
通义灵码与GitHub Copilot操作类似,用户可以容易地从一个工具切换到另一个工具。它在代码编写能力上虽不及GitHub Copilot,但提供免费使用,特定领域的优势以及良好的操作界面和适配性。根据个人测试和评价,通义灵码可以获得3.5~4分的评分(满分5分),被视为值得尝试的AI编码辅助工具。
普林斯顿大学推出的SWE-agent在GitHub存储库中自动修复bug的能力与Devin相当,平均耗时仅为93秒。这一开源项目在GitHub上迅速获得了社区的认可和兴趣。
AI程序员的测试效果是评估其性能的关键指标
1. 测试效率和准确性, AI程序员通过自动化技术提高了软件测试的效率,能够快速识别和修复bug。它们利用机器学习算法,不断学习和优化,以提高bug发现的准确性和覆盖范围。这种持续性的学习能力使得AI程序员在软件开发过程中能够不断提升其性能。
2. 自动化Bug发现,AI程序员在自动化Bug发现方面表现出色,它们可以对软件代码和测试数据进行深入分析,识别出隐蔽和复杂的Bug。这不仅提高了测试的质量,还节省了大量的时间和人力成本。
3. 持续性能测试,AI程序员能够执行持续的性能测试,确保软件系统的稳定性和可靠性。它们通过模拟不同的测试场景,评估软件在各种条件下的表现,从而确保软件质量。
4. 功能和性能测试,在功能和性能测试方面,AI程序员能够自动运行单元测试、集成测试和性能测试,以确保代码质量。这些测试通常是自动化的,可以在代码部署到生产或测试环境之前进行。
5. 提高工作效率,AI程序员还可以帮助传统的测试工程师提高工作效率,例如协助编写测试文档、测试用例和测试报告。虽然AI程序员在用例设计方面还不能完全替代人类测试工程师,但它们在某些方面已经能够提供有效的支持。
根据以上多项指标,多家的评测结果显示AI程序员Devin、通义灵码和SWE-agent在软件工程任务的测试中表现不一,各有特点。
Devin
在SWE-bench基础测试中,Devin无需人类辅助就能解决13.86%的问题。
Devin的测试显示,它能够执行多步规划并接收环境反馈,72%的通过测试需要10分钟以上完成,显示出其迭代能力。
通义灵码
通义灵码在辅助Java编码方面表现最佳,而在SQL及代码纠错方面,iFlyCode可能是更好的选择。
通义灵码支持30+种语言的代码解释,并能对特定领域的知识进行问答,如阿里云OSS相关问题。
SWE-agent
SWE-agent是一个开源的软件工程代理,能够将GitHub问题转换为拉取请求,解决了SWE-bench测试集中12.29%的问题。
SWE-agent实现了Agent Computer Interface (ACI),通过设计简单的LM中心命令和反馈格式,使得LM更容易浏览仓库、查看、编辑和执行代码文件。
综合评价,Devin在无辅助情况下解决问题的能力较强,通义灵码在特定领域如编程教育和代码解释方面有优势,而SWE-agent作为一个开源代理,在解决GitHub问题方面表现出色。每个工具都有其独特的优势和适用场景。
AI程序员技术拓展
AI程序员技术的拓展正在不断推动软件开发领域的变革。从自动化编程到智能编程工具,再到优化算法和自动化测试,AI程序员技术正成为软件开发不可或缺的一部分。
自动化编程应用
AI技术的发展使得许多传统编程任务开始被自动化取代。例如,AI可以用于自动生成代码、进行自动化测试和优化算法等。这意味着程序员将不再需要花费大量时间进行重复性的编程工作,而可以专注于更具创造性和复杂性的任务。
智能编程工具的发展
AI程序员的出现促进了编码辅助工具的发展。这些工具可以提供智能建议、自动纠错和代码优化等功能,帮助程序员提高开发质量和效率。随着机器学习、深度学习等技术的不断发展,程序员可以借助这些工具提高开发效率,创造出更加丰富多彩的应用。
优化算法性能的贡献
AI程序员在算法优化方面具有巨大潜力。它们可以通过学习和演化算法,自动优化程序的性能、资源利用和效能,从而提高程序的运行效率和用户体验。此外,AI可以通过分析代码的运行情况和性能数据,自动给出优化建议,有助于程序员提高软件性能,提升用户体验。
跨学科能力
AI程序员的崛起也促使程序员培养跨学科能力。AI领域的发展涉及多个学科,如计算机科学、数学、统计学等。程序员需要具备跨学科的知识和技能,以便更好地理解和应用AI技术。这种跨学科能力有助于程序员在处理复杂问题时综合不同领域的知识,找到更全面和有效的解决方案。
AI技术的这些应用不仅提高了编程的效率和质量,还为程序员提供了更广阔的创新空间和探索领域。随着AI技术的不断进步,未来的程序员将能够更好地发挥其潜力,解决实际问题,并推动计算机科学的进一步发展。
AI程序员对人类程序员的影响
在AI技术的快速发展下,AI程序员对实际程序员的影响是多方面的,既包括挑战也包括机遇传统程序员可以通过不断学习和适应新技术,利用AI程序员的优势,提高自己的竞争力和生产力。
自动化和智能化的影响
AI程序员的出现使得编程工作的某些方面可以自动化和智能化。例如,AI程序员能够自动生成代码,减少人为错误的可能性,提高开发效率。这可能会改变传统程序员的工作方式和职责,使他们能够更专注于更高层次的设计和创新。
提高效率和准确性
AI程序员可能具备更快速、更准确地生成代码的能力。通过AI程序员的辅助,程序员能够更高效地开发和测试应用程序,减少错误和调试时间,提高整体的开发效率。
创造力和创新能力的提升
AI程序员的出现可能在某种程度上释放程序员的创造力和创新能力。AI可以处理重复性的编码任务,让程序员有更多时间去思考和解决更复杂的问题,从而增强创新能力。
智能优化和调
AI程序员可以对代码进行性能分析和优化建议,找出潜在的瓶颈并提出改进方案,使得代码执行更高效。此外,AI驱动的测试工具能够自动化生成和执行单元测试、集成测试,确保代码质量,减少回归错误。
持续集成和测试自动化
AI程序员的技术可以支持复杂的决策和推理,自动化生成和执行测试,从而提高软件的可靠性和性能。这种自动化不仅提高了测试的效率,还有助于在早期发现和修复bug,减少了软件发布后的问题。
对程序员职业的长远影响
尽管AI技术的发展可能会导致一些编程岗位的减少,但同时也会创造出新的就业机会和发展空间。传统程序员可以通过不断学习和提升自身的技能,适应新的技术发展趋势,保持竞争力。
总之,AI程序员对实际程序员的影响是深远且复杂的。它们不仅提高了编程的效率和质量,还可能改变程序员的工作内容和职业路径。未来,程序员可能需要更多地关注创新、设计和解决复杂问题的能力,而不仅仅是编码技能。
最后的啰嗦话
AI程序员Devin、通义灵码和SWE-agent展示了人工智能在软件开发领域的显著进步,提高了编程效率并推动了技术创新。AI程序员的优势是明显的,AI程序员能够自动化生成代码,减少传统手动编码的时间和精力。它们可以快速学习大量的代码和模式,提高编码效率,减少人为错误的发生。AI程序员通过深度学习和强化学习等技术,不断自我学习和进化。它们能够快速适应新的编程语言、框架和技术。同事AI程序员具备大规模任务处理和并行计算能力和智能化和自动优化能力。
但是就目前来说,AI程序员也具有一些局限性,比如创造力和创新能力不足,AI程序员难以进行创造性的创新和设计。还有上下文理解和推理能力有限,AI程序员在理解和处理复杂的上下文情境时存在局限,它们可能无法准确理解人类的意图和特定领域的知识。数据依赖性和泛化能力也是它的缺点,AI程序员的性能和效果受限于训练数据的质量和覆盖范围,在面对新领域或新场景时,它们的泛化能力可能不足。
积极一面,AI程序员的自动化程度将进一步提升,其可解释性和透明性也将得到增强。这将有助于程序员和相关利益方更好地理解和控制AI程序员的行为,提高代码的可靠性和安全性。同时,AI程序员和人类程序员将形成互补的合作关系,共同创造出更加高效、智能和创新的软件解决方案。在这个过程中,程序员需要适应变化,通过不断学习、提升技能和创新思维,与AI程序员形成合作共赢的关系。这样,我们才能在AI时代中立足并发挥重要作用,共同迎接人工智能时代的到来。(END)
参考资料:
1.https://news.opensauced.pizza/open-source-projects-that-are-gaining-steam-that-you-havent-heard-of/
2. https://swe-agent.com/