2024年AI编程技术与工具发展综述

原创
02/08 14:30
阅读数 3.2K

最近,开源中国 OSCHINA、Gitee 与 Gitee AI 联合发布了《2024 中国开源开发者报告》。报告聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据进行多方位的总结和梳理。查看完整报告2024 中国开源开发者报告.pdf

第二章《TOP 101-2024 大模型观点》同济大学特聘教授、CCF杰出会员朱少民对2024 年AI编程技术与工具发展进行了总结。全文如下。

2024年AI编程技术与工具发展综述

文/朱少民

2024年8月下旬,一款AI代码编辑器——Cursor火爆全球,火到一位8岁小女孩拿着它学编程,几十分钟内搭起来一个聊天机器人,其演示吸引来180万人在线围观。这导致有人大胆预言,未来编程只需要狂按Tab就够了。Cursor确实好用,包括新推出的“光标位置预测”功能。

但是AI编程发展没有那么快,在国内生成代码采纳率还比较低,根据《2024软件研发应用大模型国内现状调研报告》,多数团队在10-40%之间,如图1所示。

图1 大模型(LLM)在编程上的应用及其生成代码的采纳率

在2024年,我们还看到了“AI程序员”Devin的诞生,Devin能够独立完成复杂的编码和调试任务、自主查找和修复代码库中的错误,构建和部署应用程序。在SWE-bench编码基准测试中,Devin能够解决GitHub中13.86%的真实问题,有了很大提升。

说起SWE-bench编码基准测试(https://www.swebench.com/),2024年进步很快,以OpenAI建立的verified子集(500个问题)为例,4月开始时,成功率只有2.8%,到现在已提升到53%,这表明AI在编程能力方面取得了显著的进步。这一提升反映了AI编程几个关键因素,正好用来总结2024年AI编程的进展。

模型能力的增强:AI模型的架构和算法不断优化,如从Claude 3 Opus、GPT-4o到Claude 3.5 Sonnet、Claude 3.5 Haiku,大模型自身的能力不断提升,使得模型能够更好地理解和解决复杂的编程问题。

智能体(AI agent)的引进:智能体可以收集和学习与任务相关的知识,可以直接调用静态代码分析工具、直接调用搜索引擎和API为编程任务服务,并通过构建代码仓库知识图来帮助大模型全面理解软件仓库的结构和依赖关系,从而更好地定位问题根源并生成有效的代码补丁。

智能体还可以动态获取代码片段和问题相关的信息,并分析和总结收集到的信息,以便规划出更好的解决方案。例如从RAG+GPT 4(1106)的2.8%提升到SWE-agent+GPT 4(1106)的22.4%、从RAG+Claude 3 Opus的7%提升到SWE-agent+Claude 3 Opus的18.2%,效果都比较显著。

多模态能力:多模态LLM使智能体能够综合利用视觉和文本信息,可以理解软件用户界面、处理的图表、可视化数据、语法高亮和交互映射等内容,更好地理解任务陈述以及获取任务相关的产品信息、开发过程信息,从而更全面地理解和解决问题。目前排在SWE-bench verified前4位都使用了Claude-3.5-Sonnet,而它是多模态的、具备处理文本和视觉信息的能力,使其能够理解和修复包含图像或其他视觉元素的GitHub问题。

和工具集成的框架:可以支持智能体在处理复杂任务时进行更好的任务管理和执行,并促进不同AI模型和工具之间的协作。

例如Composio SWE-Kit集成文件操作、代码分析、Shell命令执行、知识库管理和数据库操作等工具或能力,优势互补,将SWE-bench verified大幅度提升到48.6%。再比如OpenHands+CodeAct v2.1将智能体的行为整合到统一代码行动空间的框架,允许OpenHands在编程任务中扮演全方位的智能助手角色,目前排在SWE-bench verified第一位(53%)。

基于代码大模型的自身进化,以及RAG技术、智能体的有力支持,从而LLM有更好的上下文感知能力。例如,在代码大模型预训练时,其训练语料中加入抽象语法树(AST)、代码依赖关系等数据,新的代码生成模型则具有更强的上下文感知能力。

在此基础上,基于AI的编程工具能够根据给定的上下文(如函数名、注释、部分代码等)检索出最相关的代码片段和文档,能够提供完整的函数或代码块建议。这也使得LLM能够参考海量的代码库和技术文档,这不仅能缓解大模型的幻觉问题,显著提升代码生成与理解的准确性,而且能符合上下文的代码,更能满足开发的业务需求。

未来,研发人员和多个智能体、工具协同工作来完成编程工作,如论文Flows:Building Blocks of Reasoning and Collaborating AI所描述的(图2所示),构成一个复合竞争性编码流程,研发人员更多是提需求,由LLM和智能体实现自主编程的过程。

图2 由 LLM 和智能体实现自主编程的过程

随着大模型技术的迅速发展,在今年,我们明显能感到,AI已从单一的辅助工具,逐渐演变为软件开发人员不可或缺的助手或伙伴。

除了前面已介绍的Cursor、Composio SWE-Kit、OpenHands CodeAct等工具之外,国内主要使用chatGPT、GitHub copilot、通义灵码、CodeGeeX、文心快码、蚂蚁CodeFuse等编程工具,国外还出现一些受欢迎的、新的编程工具,如Codeium IDE Cascade、Solver ai、Websim ai等。

图3 国内编程助手使用状况(来源同图1)

这些工具让我们能感受到AI卓越的生成能力和理解能力,帮助我们更高效地完成代码生成、代码评审、代码解释到单测生成、缺陷定位、代码优化等任务。这种进步也体现在今年国内企业一些落地实践中:

  • 在一些大厂,LLM已经实际应用到代码审查或CI/CD流程中(如pull request),自动识别代码质量问题并提出改进建议。
  • 有些企业结合智能体和相关工具的支持,让基于LLM的研发平台生成代码流程图和类图,辅助自然语言解释,使得开发者更直观地理解代码结构和执行流程,增强智能编程的可视性和交互性。
  • 有些开发团队借助智能体和RAG技术检索历史上已知的代码缺陷模式和已知问题,从而比较准确地识别潜在的缺陷和安全漏洞,甚至能够分析代码的功能意图,全面提升代码评审的能力。
  • 有些团队,根据UI设计图,让LLM自动生成相应的前端代码,大大减少了手动编码的时间,加快了从设计到实现的流程。

从应用效果看,前面调研的数据可供参考。在国内AI编程开展比较好的大厂,超过80%的工程师在使用AI编程工具完成日常的编程工作,近30%入库的代码由AI生成,生成代码平均采纳率超过40%,有些产品线达到60%。仅仅在编程这一项工作(虽然只占开发人员20-30%的工作量)上,研发效率能提升20-30%。

图4 大模型时代的软件研发正确方式

当然,我们不能局限于这一个编程环境,最好要从需求开始就应用大模型。ATDD(验收测试驱动开发)是大模型时代软件研发的正确打开方式,让大模型帮我们生成需求及其验收标准,业务约束更明确了,上下文更清楚了,在此基础上分别由不同的模型生成产品代码和测试代码,再让它们之间相互验证和博弈(如图4所示),最终交付高质量的软件。

未来,随着AI技术的不断成熟和创新,AI编程工具将进一步提升智能化和可解释性,支持更多的编程语言和平台,并通过强化学习实现自适应优化。为了全面发挥AI编程技术的潜力,开发团队需要不断学习和适应新技术,优化开发流程,确保AI工具的有效应用和高质量输出。

作者简介:

朱少民

同济大学特聘教授、CCF杰出会员、CCF TF软件质量工程SIG主席、CCF2023杰出演讲者、软件绿色联盟标准评测组组长、QECon大会和AiDD峰会发起人。

近三十年来一直从事软件工程的教学与研究工作,先后获得多项省、部级科技进步奖,已出版了二十多部著作和4本译作。曾任思科(中国)软件有限公司QA高级总监、IEEE ICST 2019工业论坛主席、IEEE ICST、QRS等程序委员、《软件学报》和《计算机学报》审稿人等。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
8 收藏
1
分享
返回顶部
顶部