代码生成方法、设备、存储介质及程序产品与流程
本说明书一个或多个实施例涉及人工智能,尤其涉及一种代码生成方法、设备、存储介质及程序产品。
背景技术:
1、随着人工智能技术的发展,利用语言模型基于业务需求自动化生成软件代码已逐渐成为热点。相关技术中,可以采用“氛围式编程”,即直接将自然语言形式的业务需求输入至语言模型,由语言模型输出代码。然而,此类方法由于语言模型缺乏对项目整体上下文的深度理解,生成的代码质量较低,尤其是在涉及复杂业务逻辑和既有代码库的真实工程场景中,此类方法往往难以保证生成代码的稳定性、一致性与可维护性。
2、为了提升语言模型生成代码的可靠性,业界逐渐意识到需要引入中间层的约束与规范。比如,在编码前形成技术规范(即结构化的技术说明),让语言模型在技术规范的约束下输出代码。语言模型输出代码的质量往往取决于形成的技术规范的质量。然而,相关技术中,在生成技术规范时,部分重流程的方案虽然生成的技术规范质量较高,但成本较高,落地困难,一些轻量级的方案则往往因上下文完整性不足,难以支撑复杂系统的开发需求。并且,相关技术中,用于生成技术规范的数据来源比较单一,生成的技术规范质量不够理想,且由于缺乏对已有代码库的感知和利用,进而基于技术规范生成的代码可能会与已有系统脱节或不兼容。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种代码生成方法、设备、存储介质及程序产品。
2、为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
3、根据本说明书一个或多个实施例的第一方面,提出了一种代码生成方法,包括:
4、获取与软件开发任务关联的多源异构数据,所述多源异构数据至少包括存量代码以及所述软件开发任务的需求文档数据;
5、至少对所述需求文档数据进行语义解析和特征提取,得到描述所述开发需求的结构化需求信息;
6、调用代码分析工具对所述存量代码进行解析,得到结构化代码知识,其中,所述结构化代码知识至少包括代码架构信息,所述代码架构信息用于描述所述存量代码中的已有功能模块之间的依赖关系;
7、将所述结构化需求信息和所述结构化代码知识输入至第一语言模型,并引导所述第一语言模型根据所述结构化需求信息确定所述软件开发任务待开发的软件产品包含的功能模块集合,以及根据所述代码架构信息,将所述功能模块集合映射至所述存量代码的已有功能模块,生成与所述存量代码兼容的新代码架构信息,以输出至少包括所述新代码架构信息的结构化技术规范;
8、将所述结构化技术规范输入至第二语言模型,通过所述第二语言模型生成所述软件产品对应的开发代码。
9、根据本说明书实施例的第二方面,提供一种电子设备,包括:
10、处理器;
11、用于存储处理器可执行指令的存储器;
12、其中,所述处理器执行所述可执行指令时,用于实现第一方面所述的方法。
13、根据本说明书实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述方法的步骤。
14、根据本说明书实施例的第四方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面所述方法的步骤。
15、根据本说明书实施例的第五方面,提供一种代码生成系统,所述系统包括数据采集与预处理智能体、技术规范生成智能体、质量审核智能体、以及代码生成智能体;
16、所述数据采集与预处理智能体用于获取与软件开发任务关联的多源异构数据,所述多源异构数据至少包括存量代码以及所述软件开发任务的需求文档数据,至少对所述需求文档数据进行语义解析和特征提取,得到描述所述软件开发任务开发需求的结构化需求信息;调用代码分析工具对所述存量代码进行解析,得到结构化代码知识,其中,所述结构化代码知识至少包括代码架构信息,所述代码架构信息用于描述所述存量代码中的已有功能模块之间的依赖关系;
17、所述技术规范生成智能体用于根据所述结构化需求信息确定所述软件开发任务待开发的软件产品包含的功能模块集合,以及根据所述代码架构信息,将所述功能模块集合映射至所述存量代码的已有功能模块,生成与所述存量代码兼容的新代码架构信息,以输出至少包括所述新代码架构信息的结构化技术规范;
18、所述质量审核智能体用于对所述结构化技术规范进行质量评估,以确定所述结构化技术规范的质量评分;在对所述结构化技术规范进行质量评估的过程中,生成反馈数据,所述反馈数据用于反映所述质量评分的评分依据以及未通过评估的原因;在所述质量评分低于预设阈值的情况下,将所述反馈数据、所述结构化技术规范发送给所述技术规范生成智能体,以使所述技术规范生成智能体基于所述反馈数据对所述结构化技术规范进行迭代优化;
19、所述代码生成智能体用于接收所述技术规范生成智能体发送的迭代优化后的结构化技术规范,并基于所述结构化技术规范生成所述软件产品对应的开发代码。
20、本说明书的实施例提供的技术方案可以包括以下有益效果:
21、本说明书实施例中,在生成技术规范时,可以引入与当前软件开发任务相关的多源异构数据,通过对多源异构数据进行整合,得到更完善的约束信息,用于约束语言模型生成代码。其中,该多源异构数据引入了与软件开发任务相关的存量代码,通过对存量代码进行解析,可以得到结构化代码知识。其中,结构化代码知识至少包括描述存量代码中已有功能模块的依赖关系的代码架构信息,语言模型可以基于该代码架构信息,建立待开发软件产品所包含的功能模块集合与存量代码中的已有功能模块之间的映射关系,进而可以生成整合了该软件产品的功能模块且兼容存量代码的新代码架构信息。从而,语言模型最终输出的技术规范中可以包括与存量代码兼容的新代码架构信息,进而可以减少基于该技术规范生成的代码与已有系统不兼容的问题,此外,由于整合了多源信息,生成的技术规范更完善,可以提供更多的约束信息,进而提高生成代码的质量。
22、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
1.一种代码生成方法,包括:
2.根据权利要求1所述的方法,所述多源异构数据还包括语音格式的会议纪要,所述至少对所述需求文档数据进行语义解析和特征提取,得到描述所述开发需求的结构化需求信息,包括:
3.根据权利要求1或2所述的方法,所述多源异构数据还包括业务知识库,所述至少对所述需求文档数据进行语义解析和特征提取,得到描述所述开发需求的结构化需求信息,包括:
4.根据权利要求1或2所述的方法,所述多源异构数据还包括业务知识库,所述结构化代码知识还包括所述存量代码的接口定义,所述方法还包括:
5.根据权利要求1或2所述的方法,所述结构化技术规范还包括所述软件产品对应的单元测试用例、集成测试用例、验收标准以及自动化测试脚本,所述第一语言模型还用于执行以下操作:
6.根据权利要求1所述的方法,在所述第一语言模型输出所述结构化技术规范之后,所述方法还包括:
7.根据权利要求6所述的方法,其中,所述质量评分基于以下一个或多个评估维度的评估结果确定:
8.根据权利要求6或7所述的方法,所述方法还包括:
9.根据权利要求1或2所述的方法,在所述第一语言模型输出所述结构化技术规范之后,所述方法还包括:
10.根据权利要求1所述的方法,所述方法还包括:
11.根据权利要求1所述的方法,所述方法还包括:调用图形绘制工具,基于所述新代码架构信息绘制代码架构图,并将所述代码架构图插入到描述所述结构化技术规范的文档中;和/或
12.一种代码生成系统,所述系统包括数据采集与预处理智能体、技术规范生成智能体、质量审核智能体、以及代码生成智能体;
13.一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1~11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1~11中任一项所述方法的步骤。
15.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如权利要求1~11中任一项所述方法的步骤。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com