社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  aigc

京东的AIGC革新之旅:通过JoyCoder实现研发提效 | 新程序员

AI科技大本营 • 5 月前 • 168 次点击  

【导读从需求分析、设计编码到测试运维,AI已经逐步渗透到软件开发的各个环节,如何切实针对研发场景进行提效,是业内每个企业都在思考的问题。本文作者详细分析了AI在研发中的实际应用,并分享了JoyCoder与京东内部工具结合的实际案例,展示了AIGC在提升研发效能方面的巨大潜力。

本文出自 2024 全球软件研发技术大会中的演讲,同时收录于《新程序员 008》。《新程序员 008》聚焦于大模型对软件开发的全面支撑,囊括 Daniel Jackson 和 Daniel Povey 等研发专家的真知灼见与“AGI 技术 50 人”栏目的深度访谈内容,欢迎大家点击订阅年卡

作者 | 刘兴东

责编 | 郑丽媛

出品丨新程序员编辑部

近年来大模型特别火热,诸多公司在这一领域投入了大量的研究精力,各种基于大模型的应用场景也应运而生,涵盖了健康、金融、教育等多个领域,当然也包括软件行业。在这场由生成式AI技术引领的软件行业革命中,京东也正在进行一场前所未有的AIGC革新之旅。

在这场技术驱动的变革中,京东自主研发的智能编程助手JoyCoder,成为了推动研发效率飞跃的关键力量。接下来,我将深入解析京东如何通过JoyCoder实现研发提效的具体实践,以及这一过程中所展现出的技术创新。


AIGC对软件行业的影响


自从AIGC成为热点以来,它对整个软件行业都产生了深远的影响。无论是软件的开发、测试、部署、维护还是使用方式,都在不同程度上发生了变化。例如在代码层面,AI技术已经能够生成软件代码,包括代码审查在内的许多环节都与AIGC密切相关。同时,在软件质量和安全性方面也因AIGC的出现,发生了相应改进。例如,自动化的单元测试以及软件漏洞分析技术能够帮助开发者提高效率,尽早发现并修复相关漏洞。

总体而言,AIGC在开发成本、效率和用户体验上都带来了显著提升,有助于促进行业发展——但同时,这个过程中也伴随着一系列的风险和挑战:

  • 使用AIGC后,如何确保其生成的内容准确可靠,成为了我们必须面对的问题。这要求我们在技能上做出相应的迭代和提升,以更好地管理和使用AIGC的输出能力。与此同时,我们也需要提升工具的能力,以实现与内部工具的良好兼容。

  • 若过度依赖AIGC生成的内容,可能会忽视对其准确性和创造性的审查。因此,我们要不断完善并补充自身技能,以确保在使用AIGC时能提升生产力,而不是因过度依赖而导致生产力下降。


如何借助AIGC进行研发场景提效


如上文所说,AIGC与我们最为相关的场景还是在研发领域中的应用。如图1所示,以DevOps为例,它涵盖了从需求开始直到产品上线和部署发布的全过程。那么,AIGC如何在DevOps工具中发挥生产力呢?这是整个行业都在思考和探索的问题。

图1 研发全流程AIGC提效

从需求分析开始,我们可以通过AIGC与大模型交互,使用自然语言生成需求文档,尝试让大模型理解文档内容,区分功能性需求、非功能性需求和安全性能需求。基于对需求的前期理解,大模型能够更准确地帮助用户定位需求,使需求文档更加清晰,从而在需求阶段和理解阶段做得更为细致。

到了系统开发阶段,这是一个从准备、开发到完成直至上线的迭代过程。基于对需求的理解,AIGC可生成相关代码文档和代码解释;在开发过程中,可利用AIGC生成代码片段,减少手动编写的工作量;此外,编写单元测试时常让研发人员感到头疼,这部分也可借助AIGC来完成,以节省大量时间和精力。在研发后期,AIGC还能帮助检测代码中的安全漏洞,快速定位和修复调试过程中的报错。哪怕是几年后的系统迭代更新,AIGC也能协助进行代码优化工作,例如从Vue 2升级到Vue 3,或者从Java转换到其他编程语言。

到了系统测试阶段,AIGC可以根据前期对需求和代码片段的理解,生成自动化单元测试、测试文档和测试用例,提高测试效率和准确性。在缺陷分析时,也能更快地找到并修复缺陷。

最后在系统上线后,我们还需要考虑如何在后期提供辅助。AI Office这一概念在行业里已提出多年,如何基于系统日志的产生来进行指标聚类,进而通过人工标注来快速识别指标是否异常,这也是AIGC可以发挥作用的地方。通过指标之间的关联性,比如发现502报错,不一定是前端网关问题,也可能是后端服务故障,AIGC可以帮助找到问题的具体根因。

若进一步聚焦到DevOps流程中的编程环节,AIGC也展现出了它强大的应用潜力。举例来说,在软件开发早期,我们常需编写大量重复的增删改查(CRUD)操作和工具类代码。面对这些重复性高的工作,如何提升效率并避免传统开发中的低效和错误,成为了亟待解决的问题。

在没有智能代码生成和代码标准的情况下,开发者可能因缺乏辅助工具而编写出错误代码,同时也不易了解公司内部的最佳实践或通用代码规范。这不仅造成了信息孤岛,也影响了新成员融入团队的速度和效率。

然而,AIGC的引入为这一困境带来了转机。利用自然语言生成技术,AIGC能够辅助生成相关的代码片段,从而加速开发过程。在代码重构、优化和合理性检查方面,AIGC同样能发挥重要作用。通过深度理解内部文档和代码库,AIGC能在开发者编写代码时,迅速定位并推荐公司内部或外部的相似通用能力,有效避免重复开发。

此外,AIGC还能根据代码库和上下文进行智能推理,为开发者提供代码辅助,使编写过程更加高效和合理。这一转变不仅有助于提升开发效率,也能推动从传统低效开发模式向基于AIGC的高效开发模式的转变——在这种思考下,京东推出了基于大模型的智能编码应用JoyCoder。


JoyCoder的产品架构与能力介绍


如图2所示,从京东JoyCoder的产品架构图来看,其底层服务主要分成两个部分:大模型和行云DevOps平台。

图2 JoyCoder的产品架构

在大模型层,主要包括JoyCoder Lite、JoyCoder Pro和JoyCoder-Base模型。其中JoyCoder Lite和JoyCoder Pro负责关于会话方面的大模型应用,JoyCoder Lite以7B的轻量级设计为用户提供快速高效的操作体验,JoyCoder Pro专注于提供更精准的服务。至于JoyCoder-Base,则是一个用于代码推理的模型。

尤为值得一提的是,JoyCoder支持配置接入其他模型,即不局限于自有模型,允许接入来自不同供应商的各种大模型,如百度文心、清华智谱以及GPT等。这种开放的态度不仅丰富了JoyCoder的应用场景,也使其能够为用户提供更加精准和多元化的服务。

引入更多模型后,如何有效管理这些模型成为了一个挑战。为此,我们创新性地为JoyCoder封装了一层模型网关:在模型对接层面直接与大模型进行交互,而无需关注上层应用,以此简化管理流程,同时确保用户信息的安全与合规。同时,模型网关还具备用户鉴权、涉黄涉暴信息拦截以及日志记录等功能,为未来的审计和内容规性检查提供了有力支持。最后如果有相关报警,也可以通过网关来进行处理。

在兼容性方面,JoyCoder同样表现出色,其插件已支持多系统平台(如Windows、Android、鸿蒙)以及多种编辑器和主流编程语言。此外,在代码智能生成、人机交互和DevOps平台上,我们也进行了详细的场景化划分。最终,通过管理后台的用户管理和数据统计,我们可得到用户活跃度、采纳率和调用次数,以此对大模型进行更有针对性的调整和优化,进一步提升其采纳率和优化效果。

基于以上的产品架构,JoyCoder在整套研发流程(从需求、设计、编码、测试到上线)中,几乎每个环节都能帮助开发者提高效能:

  • 通过人机会话,能将需求描述更加标准化,帮助用户更好地整理和明确需求。

  • 在设计阶段,能通过自然语言生成对应的代码模块。

  • 在代码编辑区,可以用代码补全功能对编码过程进行辅助,减少重复劳动;代码注释功能能自动生成注释内容,减轻开发者负担;代码解释和代码评审能让研发人员快速理解代码,让新成员快速熟悉代码,提高工作效率。

  • 在测试阶段,JoyCoder能快速生成单元测试和接口文档,减轻开发者写单测和文档的负担。它还能对问题代码提出修复建议,并将安全扫描和规约检测左移到编码阶段。

当然,对于AI编码应用来说,安全防控也是不可忽视的一环。在内容安全方面,JoyCoder能够识别并过滤敏感词和不良信息;在数据安全方面,它则通过大模型统一网关对上传的数据进行严格把关,防止身份信息、银行卡号等敏感信息的泄露;在安全审计方面,JoyCoder会生成安全日志记录,记录输入敏感信息的用户标识、用户IP、设备号和输入的敏感词,并提示管理员该用户的操作涉及数据安全。

基于以上AI能力,目前京东内部已有约12,000名研发人员在使用JoyCoder,占整体研发人员的70%。这些用户在代码续写、自然语言片段生成、单元测试和推理等方面的采纳率达到了30%以上。整体提效达到 20%以上,大大提升了研发效率和标准化程度


JoyCoder与京东内部工具结合的最佳实践


然而,无论是产品架构还是能力建设,均仍属于理论层面——AI本身如同一座孤岛,要想真正发挥其作用,需要与工具进行结合并实践。

纵观整个开发过程,例如需求理解、编译、构建和部署等方面,实际上都需要AI能力的下沉。于是在京东内部,我们借助JoyCoder在DevOps过程中进行了全新的能力建设。

首先在需求理解这个环节,我们做了一些有效改进。以前,我们只是简单地拉取需求列表,但发现这种方法并不受欢迎,因为它未能给研发团队带来实际效果,需求列表过长导致研发人员往往不会仔细查看。为此,我们与研发团队进行了深度调研和访谈,以了解他们的具体需求。现在,我们借助AI将需求与代码分支关联起来,以便研发人员确定其开发工作是基于哪个具体需求而展开的。

其次在开发过程中,研发人员可能需要查看日志、部署自测环境、更新调试等,其中有一项重要能力是代码提交时的描述。通常情况下,人们在提交代码时可能会简单地写“bug fix”,但这种描述不仅没有实际意义,还会影响后续的代码审查和维护。通过大型语言模型的帮助,我们可以自动生成代码提交信息,不仅减轻了研发人员的负担,还能让内部信息更标准化。

一般情况下,AI主要帮助我们生成代码,但无法处理后续的事情,如一键部署和调试。例如去年,我们已将京东内部的构建速度提高到了平均2分钟以内。然而,在进行联调工作时,仍需要大量的调试时间。每次完成调试后,我们需要修改代码并提交至代码库,接着进行编译构建,然后再次发布。即使构建速度已经控制在2分钟之内,但发布过程仍需大约5分钟,并且这5分钟还会随着调试次数的增加而累积成更长的时间。

为了解决这个问题,我们开发了本地化插件的一键部署功能,提交代码后,AI工具会自动生成commit message,并直接构建为镜像。此外我们还增强了热部署能力,使得研发人员可直接将更改发布到需要调试的地方。这样一来,我们将每次调试所需的时间从5分钟缩短到了秒级,极大地提升了开发效率。

从以上这些优化和实践不难看出,JoyCoder的目标正如其名:希望能通过这些工具和平台,提高研发人员的幸福感和工作效率,更好地服务于他们,使其在开发过程中获得更多的满足感和快乐。

最后,对于生成式AI这个领域,还有很多值得探索的地方,包括基于需求的理解、对于AI与Office应用的整合,以及与内部工具的结合等方面,目前业界都仍在探索之中。等到这些难题被逐个攻破后,相信未来AI在软件开发中的应用和效率提升势必会达到一个新高。

大模型刷新一切,让我们有着诸多的迷茫,AI 这股热潮究竟会推着我们走向何方?面对时不时一夜变天,焦虑感油然而生,开发者怎么能够更快、更系统地拥抱大模型?《新程序员 007》以「大模型时代,开发者的成长指南」为核心,希望拨开层层迷雾,让开发者定下心地看到及拥抱未来。

读过本书的开发者这样感慨道:“让我惊喜的是,中国还有这种高质量、贴近开发者的杂志,我感到非常激动。最吸引我的是里面有很多人对 AI 的看法和经验和一些采访的内容,这些内容既真实又有价值。”

能学习到新知识、产生共鸣,解答久困于心的困惑,这是《新程序员》的核心价值。欢迎扫描下方二维码订阅纸书和电子书。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173690
 
168 次点击