华为放出2023年最后一个大招?CodeArts Snap如何用大模型解放开发者

机器之心原创

作者:Panda

2022 年 11 月,ChatGPT 横空出世。至今不过短短十三个月,世界就已经因它和其它大模型发生了翻天覆地的变化。在现如今的互联网上,我们能看到大模型生成的无数文本、图片、视频乃至代码和应用软件。尤其是在软件开发方面,使用 AI 的开发者的效率和质量可以远远胜过不使用 AI 的开发者。


举个例子,2023 年 5 月华为西安研究所举办了一场软件大赛,要求参赛者在规定时间内完成 10 道软件开发题目。有趣的是,他们允许参赛者使用任意生成式 AI 辅助答题。尽管相比于去年,今年赛题的难度提升了一倍并还加了几道专业级的超纲题,但仍有 8 位参赛者借助 AI 工具获得满分。更有趣的是,2022 届冠亚军选手在今年大赛中未使用大模型,结果前冠军的成绩排在了 170 名,前亚军排在了 450 名。


软件供应链管理公司 Sonatype 也调查发现,差不多一半的受访者(47% 的 DevOps 和 57% 的 SecOps 领导者)表示通过使用 AI,每周可节省超过 6 个小时工作时间。


可以毫不夸张地说,以大模型为代表的 AI 技术正在也必将成为人类软件生产力的一大核心,比如上面的调查中还提到受访的 DevOps 和 SecOps 领导者中有 97% 都会在自己的工作流程中使用一定程度的 AI。


并且随着 AI 技术不断取得新突破,软件本身也会被重塑。软件的形态将从现在以代码为主转向「数据 - 模型 - 媒体 - 软件代码」的数智媒软多模态应用软件。软件工程也将从结构化、规范化、工程化的 1.0 时代和敏捷开发、持续集成和持续开发(CI/CD)、DevOps 的 2.0 时代进入智能化主导的 3.0 时代。AI 在软件开发流程中的比重将越来越大,甚至有预测认为 AI 将在 10 年后成为软件开发的主力角色。


昨日,华为云研发大模型 CodeArts Snap 开启全面公测,将软件工程 3.0 时代又向前推进了一步。


CodeArts Snap 是大模型智能开发辅助工具的新晋成员,同时也是华为云 CodeArts 软件开发生产线迈向大模型智能化时代的一个重要里程碑。今年 2 月时 CodeArts Snap 已经开启了邀请测试,尝过鲜的早鸟们大多给出了好评。实际上,在前面提到的华为西安研究所软件大赛中,一位满分参赛者使用的 AI 工具正是 CodeArts Snap。



CodeArts Snap 目前以插件形式支持华为自家的 CodeArts IDE 生态以及 JetBrains IDE 和 VSCode IDE 生态。想尝试智能化升级的程序员不妨注册一试:https://www.huaweicloud.com/product/codeartside/snap.html


开发者为什么需要 AI 辅助?


在介绍 CodeArts Snap 之前,我们先简单谈谈我们为什么需要 AI 辅助开发?


前面谈到了 AI 在效率和质量方面的优势,而市场对 AI 辅助开发还有更为现实的需求。


首先,对从业者来说,市场竞争会愈发激烈,而 AI 辅助开发能在开发效率和质量方面能为从业者提供很大的竞争优势。比如在 CodeArts Snap 为期十个月的邀请测试期间,华为云通过社区运营收集了用户使用 AI 的场景和体验反馈;结果表明在代码解释和根据注释生成代码方面,用户主观感受有 30%~50% 提升,UT(单元测试)生成覆盖率高,效率提升了 20% 左右。


再举个例子,一家已经在生产流程中使用 CodeArts Snap 的某企业表示,CodeArts Snap 可将编码效率提升 20% 以上!


另外,由于应用和服务的数量增长以及对更新的需求增长,加上专业开发者增速缓慢,AI 辅助开发将有助于帮助企业提升已有开发者的效率并降低对专业开发者的需求,同时还能让公民开发者胜任更加困难的工作甚至帮助公民开发者实现低代码乃至无代码开发。这一趋势甚至让一些开发者调侃:「最热门的新编程语言是英语。」


由此可见,AI 辅助开发还能帮助降低成本,尤其是对于小企业和独立开发者,AI 辅助开发甚至可让他们免于雇佣专业开发者或让他们可以低成本地编写不擅长领域的代码。比如在上述企业的例子中,该企业有大量 Flex 代码需要维护和更新,而其自身的熟练开发者很少,而 CodeArts Snap 可将其 Flex 转 ReactJS 的代码翻译效率提升 30% 以上。


不仅如此,AI 还具有强大的学习能力,能在辅助开发者的同时与开发者一同进步。从十个月前邀请测试到现如今开启公测,CodeArts Snap 就通过持续学习获得了明显的性能提升。


CodeArts Snap 是什么?


编程助手、开发助理、代码生成器、程序员的第二大脑…… 很多这类名词都可用于描述 CodeArts Snap。据介绍,基于大模型强大理解和生成能力的 CodeArts Snap 具备八大核心能力:代码生成、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查。



代码生成:CodeArts Snap 能根据自然语言生成完整代码逻辑,大幅提升编码效率。而且其开发团队已经在 HumanEval 基准上执行了评估,在 Python、Java 和 C/C++ 语言上分别取得了 82.3%、67.1% 和 58.5% 的准确度,并且其一次生成通过测试的概率超过业界其它同等参数规模的模型。下图展示了一个在 CodeArts IDE 中执行函数级代码生成推荐的示例:



研发知识问答:用户可通过对话框提出任何有关研发的问题并获取解答,从而提高解决研发问题的效率。依托于学习过的千万级研发书籍、技术博客和产品文档,CodeArts Snap 有能力准确地理解用户提问并给出建设性的解答。


单元测试用例生成:CodeArts Snap 能自动创建单元测试用例,提高测试覆盖率,确保完成对每个功能和场景的测试。与业内厂商相比,CodeArts Snap 生成的代码更简洁,需要人工修改的代码行数更少,行覆盖率更高。


代码解释:简单来说,代码解释是代码生成的逆向任务,也就是为代码生成自然语言描述。CodeArts Snap 能快速分析代码并自动生成文档,提高阅读代码的速度和效率。


代码注释:注释对于用户理解和复用已有代码来说至关重要,准确且充分的注释甚至能让开发者和未来维护者的工作事半功倍。CodeArts Snap 可以通过快速分析代码自动生成有意义的完整注释,从而提升代码可读性,同时还能保证同一代码库的注释风格一致性。


代码调试:CodeArts Snap 支持代码纠错和调试。也就是说,CodeArts Snap 不仅能根据运行代码报错时的提示一键修复代码,还能直接检视代码以挖掘潜在的编译问题。CodeArts Snap 支持两种代码调试场景:输入代码和报错信息进行调试或只输入代码进行调试。对于这两种调试场景,CodeArts Snap 的准确率都更高;而当只输入代码进行纠错时,误报率也更低。


代码翻译:程序员的工作中往往还包括翻译其它语言的代码以理解其代码逻辑,从而调用其它语言的模块或用新语言重写其逻辑。CodeArts Snap 能快速分析代码并自动完成迁移和翻译,提高开发者的工作效率。


代码检查:以人工方式查找代码中的错误需要大量时间和耐心,而当项目规模庞大、代码复杂时,所需的时间和精力还会更高。CodeArts Snap 能分析代码以快速提供错误发生的详细信息和修复建议,缩短定位错误的时间。


这八大核心能力能让 CodeArts Snap 成为程序开发者的得力助手,甚至能帮助他们完成仅靠自己难以完成的任务,正如前文提到的软件大赛中那样。而华为云团队估算 CodeArts Snap 能将编程效率提升 20% 以上。


CodeArts Snap 使用起来也很简单直观。在 IDE 中安装插件并登录之后,只需通过简单的点击或快捷键操作即可调用 CodeArts Snap 来完成任务。举个例子,对于代码生成功能,用户只需在编辑器中定义好函数,按下 Alt+C 或使用回车触发即可,如下所示:



那么,CodeArts Snap 又是怎样炼成的呢?


简单来说,和市面上所有大模型一样,CodeArts Snap 也是「精妙算法 + 海量数据 + 大量算力」的造物。


算法方面,华为云研发大模型立足于华为云强大的研发实力和大模型领域的最新研究进展。


数据方面,华为云研发大模型使用了大量优质数据进行训练,其在训练过程中学习了 1300 多万篇技术文档(包括研发书籍、技术博客和产品文档)和 760 亿行精选代码。这些知识和经验已经内化为模型权重,让 CodeArts Snap 可以将实现不同功能的最佳实践快速地引入开发者用户的 IDE。


相较之下,大多数程序员一生最多只能阅读 10 万篇技术文档,在职业生涯中阅读的代码量最多可能也就 1 亿行。因此,CodeArts Snap 完全可以成为程序员的第二大脑,将他们从「普通士兵」升级为「特种兵」。


而在算力方面,CodeArts Snap 的计算硬件基础设施是华为自家的昇腾算力,而昇腾算力基于华为研发的人工智能处理器昇腾芯片。


昇腾芯片的 AI 核心采用了华为研发的达芬奇架构,目前包含昇腾 910 和昇腾 310 两款,参阅机器之心文章《华为史上最强芯片昇腾 910 面世,算力超 Tesla V100 一倍,AI 框架 MindSpore 明年开源》。


昇腾算力则是华为云基于昇腾芯片创造的大规模 AI 计算中心,能在保证 CodeArts Snap 训练的同时确保其在生产环境中有用、实用、好用。在用户通过插件使用 CodeArts Snap 时,基于昇腾算力的大模型 API 服务能提供毫秒级的响应速度。


在算法、数据和算力保证的基础上,华为云开发并训练出了在业界公认的代码评测基准上领先的大模型。


CodeArts Snap 不仅具备强大的智能能力,还能持续迭代提升,从而使其具备了三大关键优势:研发数据越练越高质、模型越用越聪明、模型越听越明白。


举个例子,用户的输入通常比较简略,CodeArts Snap 可自动补充多维度的背景信息;这样一来,就能将更为丰富的信息传输给大模型,让其更容易明白用户的具体需求。


CodeArts Snap 是 CodeArts 提供的智能工具,而 CodeArts 是华为的软件开发生产线。考虑到其在国内 DevOps 平台市场连续位居第一(据 IDC 报告),用户规模庞大,想必很多开发者读者也很熟悉。


CodeArts 软件开发生产线


华为云的 CodeArts 商标虽然 2022 年才申请注册,但实际上却是华为 30 年研发实践的累积成果,覆盖了从需求、开发、测试、部署运维等软件开发全生命周期的各个环节,能为开发者提供一站式、全云化的研发体验。也就是说,CodeArts 就是一条完整的软件开发工具链,或者按华为的说法 ——「软件开发生产线」。


这条生产线不仅包含智能助手 CodeArts Snap,还包括集成开发环境 CodeArts IDE 和云上开发环境 CodeArts IDE Online、需求管理工具 CodeArts Rep、代码托管服务 CodeArts Repo、研发工具集成服务 CodeArts Link、测试计划服务 CodeArts TestPlan、编译构建服务 CodeArts Build 等等。



这些服务能全方位全过程地服务于软件开发流程,CodeArts Snap 的加入让这整个流程都获得了基于最新大模型的智能化升级,更是让其如虎添翼。


CodeArts 不仅功能全面,而且效率很高。比如在编译构建方面,CodeArts 能提供 10 倍加速 —— 编译 1 亿行代码的项目所用时间可从 10 小时缩减至 1 小时。在测试方面,CodeArts 拥有全场景、大规模、7x24 的测试自动化工厂,可将产品验收周期从 21 天缩短至 5 天。考虑到交付速度正在成为企业应用的关键竞争力,CodeArts 的高效率定能给用户带来诸多切实助益。


另一个不可忽视的重要数据是 CodeArts 的工具代码内核自研率高达到 96%!并且它还兼容国产化基础组件,支持 x86 和 ARM 双栈适配。


现目前,CodeArts 不仅已经成为华为内部 11 万研发人员的日常工具链,也已经在为外部 1 万多家企业提供服务,为 325 万开发者提供支持。并且 CodeArts 已经在中国 33 个软件产业较发达的城市园区落地。


华为云分享了一个使用案例:某大型央企使用 CodeArts 构建研发了自己的一体化数字化平台,实现国产化和效率提升。


此案例的背景是该央企在 2021 年 1 月被列入了实体清单,超过 3000 位软件开发人员面临工具断供的威胁;此外,该央企本身的开发流程也有一些弊病,比如软件发布周期长、研发资源分散管理(造成部分模块重复开发)、完全依赖手工测试(回归测试需要 3~4 天时间,很难快速迭代,测试过程和结果不稳定)。


CodeArts 成功帮助该央企解决了没有工具可用的问题。与此同时,它还助力该央企改进了工作流程:通过研发管理规范有效管理研发流程,发布效率提升了 30%;通过数字资产统一管理,可有效管理并复用其 600 多个代码仓和 37000 多个测试用例,从而有效缓解了重复开发问题。


如此受到国内开发者的青睐,CodeArts 除了功能丰富、性能优异之外,另一个原因是其对安全的重视。


CodeArts 提供了全方位的软件供应链安全防护,从开发、配置管理到发布、部署和运行,可对全流程中的 12 大关键威胁点进行全面防御。其安全防护能力覆盖 11000 个代码安全场景,能够检测密码自动下载、敏感信息外发等超过 30 种恶意代码。


结语


「这是我个人的一小步,却是人类迈出的一大步。」登月第一人尼尔・阿姆斯特朗如是说。


放眼整个产业,中国不少技术企业和高校正面临着数字工具的封锁,因此 CodeArts 这样的国产软件开发工具的意义便超越了一款工具。在如今的大模型时代,掌握八大核心能力的 CodeArts Snap 是华为云为这一时代做出的贡献,可以说是国产开发工具智能化道路上的一个新里程碑。


此次 CodeArts Snap 开启全面公测是华为云向 325 万 CodeArts 用户以及上千万其它 IDE 用户发出的邀请 —— 请他们一同见证并参与软件开发工具的大模型智能化升级。


CodeArts Snap 的实际效能自然还有待用户的进一步验证,但它却是一个很好的开始,也许未来它真的能助力中国的软件开发行业向前迈出一大步,同时成为世界开发者在智能化工具方面的一个「第二选择」。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:content@jiqizhixin.com