打开网易新闻 查看精彩图片

随着人工智能技术的飞速发展,大模型已经成为推动软件行业生产力解放、提升研发质效的重要力量。在大模型技术的加持下,头部厂商如微软 GitHub Copilot 等,已在代码生成、代码解释、单元测试生成等方向陆续涌现出一系列成熟应用。中国工商银行软件开发中心(简称工行软开中心)积极拥抱这一变革,致力于建设以大模型为核心的智能研发体系,覆盖软件研发全流程,提高研发质效,加快产品迭代。

智能研发体系规划

工行软开发中心通过探索性研究的方式构建各阶段的辅助能力,将大模型应用于需求设计、代码编写、代码复核、测试辅助、交付发布的研发全流程,智能研发体系建设规划如下:

打开网易新闻 查看精彩图片

图:工行软开发中心智能研发体系建设规划

1、 需求设计,应用大型语言模型的自然语言理解能力,打造研发设计助手,辅助生成需求用例和程序设计文档。 需求编写阶段,基于用例中的业务流程业务规则关键词,通过检索相似历史需求,结合当前需求背景,自动拼装提示词,实现需求业务规则的续写; 程序设计阶段,通过向大模型传递需求背景和设计模块示例,联动检索相似历史设计,自动拼装提示词,实现详细设计内容的续写功能。

2、代码补全,基于大型语言模型代码推理生成能力,打造智能编码助手,支持包括Java、Python、JavaScript等多种编程语言。该助手能够深入理解代码的语义和结构,并根据不同语言和项目需求提供精确的自动补全建议。通过IDE插件,智能上下文分析能力能够根据当前代码环境提供更精确的补全选项,从而显著提高编码效率和准确性,帮助开发者减少编码错误并提升代码质量。

3、代码检查,基于大型语言模型代码推理能力,打造智能代码检查助手。通过大模型和Sonar规则对代码进行检查,识别问题类别和严重程度,并通过大模型针对代码问题给出代码修复方案。编码阶段,利用IDE插件实现代码问题检测、漏洞检测、安全规范检测等能力,并直接给出修复说明;代码复核阶段,通过将大模型代码检查能力集成到代码复核平台,智能提示代码问题及对应问题修复方案,帮忙复核人员发现难以发现的代码问题,提升代码复核效率;流水线扫描阶段,利用规则对代码进行全量扫描,再用大模型对结果进行检查解读,形成完整的代码检查结果和明确的修复方式。

4、单测生成,基于大型语言模型的代码推理生成能力,打造单元测试助手。通过IDE插件获取目标代码的工程上下文信息,涵盖如模拟(Mock)框架、被测代码类所依赖的类。在此基础上,利用提示词优化大模型交互,发挥大模型代码理解能力。在分析被测方法的代码结构时,涉及代码逻辑、边界条件、异常处理等方面,从而生成单元测试用例数据。依据项目工程的框架依赖信息,生成依赖类的模拟行为用例,最终构建完整的单元测试方法用例。

5、测试辅助,基于大型语言模型的自然语言理解和代码生成能力,打造智能测试助手。在测试案例领域,通过向大型语言模型传递设计文档中涉及的处理逻辑和技术要点等信息,结合历史测试信息库中的实际用例,使得大型语言模型能够生成测试用例数据。此外,依托测试用例数据及测试框架,大型语言模型能够自动生成可执行的测试脚本。在测试资产管理方面,利用大型语言模型的理解、提炼与优化能力,对测试资产内容进行自动评估、治理与优化,从而提高整体测试资产的质量水平。

6、智能问答,应用大模型强大的知识检索和整合能力,打造研发智能问答助手,能够迅速领会开发人员提出的问题,并依据其丰富的知识库和代码库,提供问题解答、代码示例以及最佳实践。在私有化知识的基础上,例如编码规范、技术部件、技术文档等,应用RAG技术与模型微调训练,更好地适应工商银行软件开发中心的研发场景。方案有效解决了银行研发环境与互联网环境之间的隔阂,使得开发人员能够方便地找到标准实现和问题解决方法,从而大大减少了开发者的问题搜索时间,据统计单次问题问答可平均为开发者节省5分钟。

智能研发体系实践经验

业界基座大模型大多基于Github、GitLab等平台的开源项目代码进行微调训练,在通用编码领域能够取得较好的效果,但是面向私有化研发场景特别是面向金融行业的编码场景并不能很好地适配,在计算金额场景未能有效处理精度,在面向业务逻辑编码场景未能理解业务知识上下文,比如生成单元测试行覆盖率不足。为支撑智能研发体系在工行软件开发中心落地运营,增强大模型在私有场景下的适配能力,分别组建了智能研发运营团队负责运营数据分析及模型测评,高级研发专家团队负责模型微调训练语料标注,大模型微调训练团队负责模型微调训练,围绕标注、微调、测评的这个模型迭代机制,三个团队协作不断推进模型优化增强。

1、积累私有化研发数字资产

积累私有化研发数字资产用于模型微调训练和RAG知识库增强,包括业务领域优质代码、技术领域代码、单元测试代码、编码规范、技术文档等。数字资产由高级研发专家严格审查把关,保证模型语料质量,保障模型微调训练质量。以大模型代码补全能力为例,面向各研发部门收集优质业务领域代码、技术构件示例代码,由高级研发专家进行严格的人工审核标注,包括剔除或者改写低质量及错误的代码,保留代码中的有用注释,并剔除无关或噪音注释。为了解决人工标注工作量大、耗时长的痛点,打造基于语法树的静态分析和专用大模型,针对代码语料进行打分标注,自动提取代码片段的上下文信息,包括前后文、函数调用关系,降低人工标注工作量。

2、建立大模型微调训练机制

对标代码编写、代码检查、单侧生成等智能研发能力,利用高质量私有化研发数字资产,提升编码辅助能力。组建大模型微调训练团队,基于大模型运行效果、开发一线反馈的问题需求,结合研发数字资产迭代情况,制定大模型微调训练目标和训练计划。根据具体模型优化能力选择合适的微调策略和微调算法,设定合适的微调参数,选择合适的训练语料,并定义具体的评估指标。模型微调训练后,大模型微调训练工程师评估验证模型性能,并进一步优化模型,通过模型蒸馏,保持模型性能的同时具有更低的计算复杂度和存储空间需求,通过模型剪枝,有效地减少模型的大小和计算复杂度,从而提高模型推理速度。

3、构建模型微调测评体系

为保障研发模型微调训练效果,建设大模型基础能力测评、研发能力测评、用户效果测评三层测评体系,实现逐级测评准入。

  • 基础能力测评针对智能研发场景,聚焦代码编写、语义理解、数学运算、逻辑思维四大基础能力,以业界标准测评集及框架实现测评,比对基座模型及业界模型指标。

  • 研发力能测评针对工行软开发中心研发场景,聚焦智能研发能力,建立私有化测评集,覆盖业务及技术领域案例,通过自动+人工的方式完成测评量化评估。

  • 用户试点测评针对真实研发场景,灰度发布模型版本进行用户试点评估,通过埋点数据形成试点运营指标,通过用户试点测评后正式进行模型版本发布。

打开网易新闻 查看精彩图片

工行软开发中心研发大模型微调测评体系建设

智能研发使用效果及展望

工行软开中心通过构建了基于大模型的智能研发体系,编码助手生成代码量占总代码量的比值达到32%以上,单元测试生成行覆盖率60%以上,显著提升研发效能。工行软开发中心未来计划打造专注于研发场景的大模型能力优化体系,一方面是基于行业金融场景的标准化代码,通过指令微调、强化学习等优化手段打造金融及标准定制化模型;另一方面计划建立研发层面统一的提示词模板,探索思维链、自问答、自我一致等提示词优化方式,覆盖单元测试、代码解释、代码注释生成等场景,提升优化研发场景下的性能表现并拓展更多应用场景。