本申请涉及人工智能应用技术领域,提供了一种代码生成与缺陷修复方法和装置。该方法包括:构建有监督的代码生成语料库,以及基于代码生成语料库,对大语言模型进行预训练;输入代码生成需求和/或缺陷描述至经过预训练的大语言模型,以便对大语言模型进行微调后,获得生成代码和/或代码缺陷修复建议;依据代码编译器对生成代码的编译测试结果,采用强化学习类算法,对生成代码和/或代码缺陷修复建议进行评估,以便更新大语言模型的参数,直至模型收敛。本申请实施例的在对生成代码或者需要进行缺陷修复的代码进行修改或者修复时,能够有效检测评估代码缺陷以及代码缺陷修复准确性。效检测评估代码缺陷以及代码缺陷修复准确性。效检测评估代码缺陷以及代码缺陷修复准确性。
【技术实现步骤摘要】
一种代码生成与缺陷修复方法和装置
[0001]本申请涉及人工智能应用
,尤其涉及一种代码生成与缺陷修复方法和装置。
技术介绍
[0002]近年来,随着人工智能技术的发展,特别是大语言模型的运用颠覆了传统的由程序员进行软件开发软件的模式,形成了代码生成技术。由于软件代码缺陷在软件开发过程中本身是不可避免的,加之软件规模在不断增加软件代码缺陷的数量也在随之增加,再叠加代码自动生成的新模式,更是给开发过程中出现的软件代码缺陷修复工作,带来了新的挑战。软件代码缺陷自动修复技术的发展,吸引了来自软件工程、程序语言、人工智能、形式化验证等多领域的交叉研究。
[0003]然而,基于大语言模型的代码生成技术也存在一些问题和挑战。由于大语言模型通常是基于海量文本数据进行训练而得到的,并不一定能够完全符合编程规范和逻辑。在使用大语言模型生成代码时,可能会出现一些错误或者不合理之处,导致代码不能正常运行或者达不到预期效果。
[0004]因此,在对生成代码或者需要进行缺陷修复的代码进行修改或者修复时,如何有效检测评估代码中是否存在缺陷以及缺陷修复的准确性,是亟待解决的技术问题。
技术实现思路
[0005]有鉴于此,本申请实施例提供了一种代码生成与缺陷修复方法、装置、电子设备及计算机可读存储介质,以解决现有技术在有效检测评估代码中是否存在缺陷以及缺陷修复准确性的问题。
[0006]本申请实施例的第一方面,提供了一种代码生成与缺陷修复方法,大语言模型与代码编译器相连,所述方法包括:构建有监督的代码生成语料库,以及基于所述代码生成语料库,对所述大语言模型进行预训练;输入代码生成需求和/或缺陷描述至经过预训练的所述大语言模型,以便对所述大语言模型进行微调后,获得生成代码和/或代码缺陷修复建议;依据所述代码编译器对所述生成代码的编译测试结果,采用强化学习类算法,对所述生成代码和/或所述代码缺陷修复建议进行评估,以便更新所述大语言模型的参数,直至模型收敛。
[0007]本申请实施例的第二方面,提供了一种代码生成与缺陷修复装置,适用于上述的代码生成与缺陷修复方法,大语言模型与代码编译器相连,所述装置包括:模型训练模块,能够构建有监督的代码生成语料库,以及基于所述代码生成语料库,对所述大语言模型进行预训练;代码与缺陷修复建议生成模块,能够输入代码生成需求和/或缺陷描述至经过预
训练的所述大语言模型,以便对所述大语言模型进行微调后,获得生成代码和/或代码缺陷修复建议;模型参数更新模块,能够依据所述代码编译器对所述生成代码的编译测试结果,采用强化学习类算法,对所述生成代码和/或所述代码缺陷修复建议进行评估,以便更新所述大语言模型的参数,直至模型收敛。
[0008]本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现第一方面所述方法的步骤。
[0009]本申请实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述方法的步骤。
[0010]本申请实施例与现有技术相比存在的有益效果至少包括:本申请实施例中大语言模型与代码编译器相连,通过构建有监督的代码生成语料库并对大语言模型进行预训练,然后输入代码生成需求或者缺陷描述至经过预训练的大语言模型,微调大语言模型后,获得生成代码和/或代码缺陷修复建议;接着依据代码编译器对生成代码的编译测试结果,采用强化学习类算法对所述生成代码和/或所述代码缺陷修复建议进行评估,以便更新所述大语言模型的参数,直至模型收敛。本申请实施例结合了大语言模型,基于海量的文本数据上进行训练的优势以及强化学习方法,利用测试用例作为奖励函数,优化语言模型的输出结果,节省人工标注成本,可以使大语言模型自行校验代码结果是否符合用户需求和规范,提升生成代码的准确性和可用性,从而有效减少人工编程的成本和错误。
附图说明
[0011]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0012]图1是本申请实施例提供的一种代码生成与缺陷修复方法的流程示意图之一;图2是本申请实施例提供的seq2seq模型工作原理示意图;图3是本申请实施例提供的一种代码生成与缺陷修复方法的流程示意图之二;图4是本申请实施例提供的一种代码生成与缺陷修复装置的结构示意图;图5是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0013]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0014]下面将结合附图详细说明根据本申请实施例的一种代码生成与缺陷修复方法、装置、电子设备和存储介质。
[0015]如
技术介绍
,在计算机领域,编程是一种将人类思维转化为机器可执行指令的过
程。随着人工智能技术的发展,大语言模型Large Language Model作为一种能够理解自然语言并生成文本内容的技术,受到了广泛关注和应用。在代码领域,既可以基于人类自然语言命令来生成计算机程序代码的技术,也可以通过自然语言命令来调优有问题的代码,从而提高编程效率和质量,降低编程门槛和成本。目前已经有很多基于大语言模型的代码生成工具出现在市场上,并受到了很多代码开发工程师的欢迎和使用。
[0016]大语言模型代码生成是一个涉及软件工程和人工智能领域的研究话题,其核心在于针对给定的程序需求说明,生成符合需求的程序代码。大语言模型是指具有大量参数和数据的深度神经网络模型,如GPT
‑
3、CodeGeeX等。它们通常使用自回归或自编码的架构,利用Transformer或LSTM等结构来学习代码或自然语言的表示。给定一个自然语言或伪代码的需求描述,作为输入序列;使用预训练好的大语言模型来生成输出序列,以满足用户需求。
[0017]常见的大语言模型包括GPT(Generative Pre
‑
trained Transformer)、BERT(Bidirectional Encoder Representations from Transformers)、XLNet等,它们在自然语言处理任务中表现优秀,得到了广泛的应用。
[0018]以GPT为例,这是一种基于Transformer架构的大规模神经语言模型,由OpenAI提出。其基本思想是在海量文本数据上进行预训练,然后在特定任务上进行微调,以实现更好的性能。其基本原理是基于Transformer本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种代码生成与缺陷修复方法,其特征在于,大语言模型与代码编译器相连,所述方法包括:构建有监督的代码生成语料库,以及基于所述代码生成语料库,对所述大语言模型进行预训练;输入代码生成需求和/或缺陷描述至经过预训练的所述大语言模型,以便对所述大语言模型进行微调后,获得生成代码和/或代码缺陷修复建议;依据所述代码编译器对所述生成代码的编译测试结果,采用强化学习类算法,对所述生成代码和/或所述代码缺陷修复建议进行评估,以便更新所述大语言模型的参数,直至模型收敛。2.根据权利要求1所述的方法,其特征在于,所述有监督的代码生成语料库的数据包括代码片段、对应功能描述和预期输出。3.根据权利要求1所述的方法,其特征在于,对所述大语言模型进行微调包括采用编码解码结构的seq2seq序列到序列模型训练方法。4.根据权利要求1所述的方法,其特征在于,所述强化学习类算法包括策略梯度算法、Q
‑
Leaning、DQN、PPO和/或A3C。5.根据权利要求4所述的方法,其特征在于,当采用所述策略梯度算法时,包括:采用策略梯度对所述大语言模型的梯度进行更新,计算所述策略梯度为,其中为评分函数,表示大语言模型及其参数,表示输出,表示输入,表示依据所述代码编译器对所述生成代码的编译测试结果评价;基于所述策略梯度,对所述大语言模型的所述参数进行更新,更新所述参数为,其中,为权重因子,为所述大语言模型的所述参数。6.根据权利要求5所述的方法,其...
【专利技术属性】
技术研发人员:徐琳,王芳,暴宇健,
申请(专利权)人:深圳须弥云图空间科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。