/ ai资讯

2024年AI编程技术与工具发展总结

发布时间:2025-02-13 09:45:51

最近,开源中国 OSCHINA、Gitee 与 Gitee AI联合发布了《2024 中国开源开发者报告》

报告聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据进行多方位的总结和梳理。

在第二章《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 工具的有效应用和高质量输出。

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

如有疑问请发送邮件至:bangqikeconnect@gmail.com