CN117369783A - 一种安全代码生成模型的训练方法及装置 - Google Patents

一种安全代码生成模型的训练方法及装置 Download PDF

Info

Publication number
CN117369783A
CN117369783A CN202311665188.7A CN202311665188A CN117369783A CN 117369783 A CN117369783 A CN 117369783A CN 202311665188 A CN202311665188 A CN 202311665188A CN 117369783 A CN117369783 A CN 117369783A
Authority
CN
China
Prior art keywords
code
prompt
chain
safety
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311665188.7A
Other languages
English (en)
Other versions
CN117369783B (zh
Inventor
张音捷
王之宇
张奕鹏
白冰
刘恬
范逸飞
查超
朱桢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311665188.7A priority Critical patent/CN117369783B/zh
Publication of CN117369783A publication Critical patent/CN117369783A/zh
Application granted granted Critical
Publication of CN117369783B publication Critical patent/CN117369783B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

在本说明书提供的一种安全代码生成模型的训练方法及装置中,根据第一业务需求指令与第一安全代码,确定思维链提示文本,以及将安全提示词、第二业务需求指令以及该思维链提示文本,输入安全代码生成模型,生成第二安全代码。根据第二业务需求指令,通过该安全代码生成模型,生成业务代码,根据该业务代码与该第二安全代码的差异,确定损失,并以损失最小为优化目标训练该安全代码生成模型。通过引入思维链提示文本,使生成的第二安全代码兼顾了安全风险,及以该第二安全代码与业务代码的损失最小为优化目标训练模型,使训练完的安全代码生成模型仅根据业务需求指令,就可生成满足该业务需求且兼顾安全风险的安全代码,节约了代码开发的成本。

Description

一种安全代码生成模型的训练方法及装置
技术领域
本说明书涉及计算机技术领域,尤其涉及一种安全代码生成模型的训练方法及装置。
背景技术
随着深度学习技术的发展,由于语言模型具备优秀的逻辑能力和思维能力,使其开始在代码生成的业务开发流程中发挥着重要作用,并将这类用于代码生成的语言模型称为代码生成模型。
目前,代码生成模型可通过用户输入的业务需求指令,生成满足用户需求的代码。但是,代码生成模型在生成代码时,过于注重业务需求,忽略了代码存在的安全风险,尤其是对于涉及敏感数据处理的业务需求,代码生成模型生成的代码,不具备基础的抗攻击能力,可能会导致出现数据隐私泄露的问题。所以,一般代码生成模型生成的代码,还需专业开发人员对其进行审查和安全性测试,反而使代码开发流程更加繁琐以及开发成本提高。
基于此,本说明书提供了一种安全代码生成模型的训练方法及装置。
发明内容
本说明书提供了一种安全代码生成模型的训练方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种安全代码生成模型的训练方法,所述方法包括:
本说明书提供了一种安全代码生成模型的训练方法,包括:
获取第一业务需求指令,并确定所述第一业务需求指令的第一安全代码;
根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本;
确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型;
根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码;
根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
可选的,确定所述第一业务需求指令对应的第一安全代码,具体包括:
确定存储的各候选安全代码实现的业务功能;
根据所述第一业务需求指令,从各候选安全代码中,确定实现的业务功能与所述第一业务需求指令匹配的候选安全代码,作为所述第一业务需求指令对应的第一安全代码;
确定所述第一安全代码的解析文本。
可选的,根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本,具体包括:
将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入预设的思维链提示模版,确定思维链提示文本。
可选的,确定所述第一业务需求指令的第一安全代码,具体包括:
针对预设的每一种编程语言类型,确定该编程语言类型对应的所述第一业务需求的第一安全代码;
确定所述第一安全代码的解析文本。
可选的,根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本,具体包括:
针对预设的每一种编程语言类型,确定该编程语言类型的思维链提示模版;
将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入该编程语言类型的思维链提示模版,确定该编程语言类型的思维链提示文本。
可选的,根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,具体包括:
确定所述第二业务需求指令包括的编程语言类型;
从各编程语言类型的思维链提示文本中,选取所述编程语言类型对应的思维链提示文本,作为所述第二业务需求指令的思维链提示文本;
将所述安全提示词、所述思维链提示文本以及所述第二业务需求指令,输入待训练的安全代码生成模型,生成第二安全代码。
可选的,根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码,具体包括:
确定普通提示词;
将所述普通提示词以及所述第二业务需求指令拼接,并输入所述安全代码生成模型,生成业务代码。
本说明书提供了一种安全代码生成模型的训练装置,包括:
获取模块,用于获取第一业务需求指令,并确定所述第一业务需求指令对应的第一安全代码;
思维链提示文本模块,用于根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本;
第一生成模块,用于确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型;
第二生成模块,用于根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码;
损失模块,用于根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现一种安全代码生成模型的训练方法。
本说明书提供了一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现一种安全代码生成模型的训练方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:在本说明书提供的一种安全代码生成模型的训练方法中,通过将获取的第一业务需求指令与确定的该第一业务需求指令的第一安全代码,填入预设的思维链提示模版,确定思维链提示文本。以及通过将确定的安全提示词、确定的第二业务需求指令以及该思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码。根据第二业务需求指令,通过该安全代码生成模型,生成业务代码,根据该业务代码与该第二安全代码的差异,确定损失,并以损失最小为优化目标训练该安全代码生成模型。
从上述方法可以看出,通过引入思维链提示文本,使生成的第二安全代码更符合代码应用时的实际需求,即考虑了代码应用时存在的安全风险。进而以该第二安全代码和业务代码的损失最小化为优化目标训练模型,使训练完成的安全代码生成模型可仅根据业务需求指令,就可生成满足该业务需求且兼顾安全风险的安全代码,该安全代码可直接应用于代码开发中,进而提高了代码的开发效率以及节约了开发成本。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中提供的一种安全代码生成模型的训练方法的流程示意图;
图2为本说明书中提供的输入安全提示词、思维链提示文本以及第二业务需求指令的结构示意图;
图3为本说明书中提供的确定损失的示意图;
图4为本说明书提供的一种安全代码生成模型的训练方法对应的装置结构示意图;
图5为本说明书提供的用于实现一种安全代码生成模型的训练方法对应的电子设备结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
目前,代码生成模型可根据用户输入的业务需求指令,生成满足该业务需求指令对应的代码,但由于代码生成模型在生成代码时,忽略了代码应用时存在的安全风险,即未考虑代码的实际应用需求。尤其是涉及敏感数据处理类的业务需求,代码生成模型生成的该类业务需求的代码由于不具备抗攻击能力,存在较大的安全风险,使得该代码无法直接应用于业务开发流程。
基于此,本说明书提供了一种安全代码生成模型的训练方法,使得安全代码生成模型可基于用户提供的目标业务需求指令,生成该目标业务需求指令的安全代码。其中,安全代码指的是满足业务需求且兼顾安全风险的业务代码。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种安全代码生成模型的训练方法的流程示意图,包括以下步骤:
S100:获取第一业务需求指令,并确定所述第一业务需求指令的第一安全代码。
在本说明书一个或多个实施例中,不限制具体由何种设备实行一种安全代码生成模型的训练方法的过程,例如,个人电脑、移动终端以及服务器等。但由于后续步骤涉及到数据处理等操作,而这种对计算资源的要求较高的操作一般都由服务器来执行,因此本说明书后续也以服务器实现一种安全代码生成模型的训练方法为例进行描述。其中,该服务器可以是单独的一台设备,或者由多台设备组成,例如,分布式服务器,本说明书对此不做限制。
在本说明书一个或多个实施例中,为了在后续步骤中确定思维链提示文本,所以,在本步骤服务器可获取第一业务需求指令,并确定该第一业务需求指令的第一安全代码。
具体的,服务器获取第一业务需求指令。并通过确定数据源存储的各候选安全代码实现的业务功能,确定实现的业务功能与该第一业务需求指令匹配的各候选安全代码,从匹配的各候选安全代码中随机选取一个,作为该第一业务需求指令的第一安全代码,以及确定该第一安全代码的解析文本。其中,解析文本用于解析第一安全代码是如何防御安全风险的。
需要说明的是,第一安全代码和解析文本均可从在线资源库、第三方代码网站、预设的数据库等数据源中获取,也可是专业开发人员根据第一业务需求指令确定的代码和解析。
S102:根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本。
在本说明书一个或多个实施例中,为了在后续步骤中使待训练的安全代码生成模型可以根据确定的第二业务需求指令与思维链提示文本,生成满足业务需求且兼顾安全风险的第二安全代码,所以,在本步骤服务器可根据第一业务需求指令、第一安全代码以及预设的思维链提示模版,确定思维链提示文本。
具体的,该服务器可将步骤S100中获取的第一业务需求指令、确定的第一安全代码以及第一安全代码的解析文本,填入预设的思维链提示模板,确定思维链提示文本。例如,思维链提示文本可为:“我希望你生成一些具有抗攻击的编程代码,以下是一些例子:(第一业务需求指令),(第一安全代码),(解析文本)”。其中,思维链提示文本用于给待训练的安全代码生成模型,提供根据业务需求指令得到安全代码的示例。
可选的,服务器可针对预设的每一种编程语言类型,确定该编程语言类型对应的第一业务需求指令的第一安全代码,以及确定该第一安全代码的解析文本。并根据预设的思维链提示模版,确定该编程语言的思维链提示模版。最后,将步骤S100中获取的第一业务需求指令、确定的第一安全代码以及第一安全代码的解析文本,填入预设的思维链提示模板,确定思维链提示文本。在此本说明书并不限制编程语言类型的数量和具体类型,可根据实际需求设置。其中,由于不同编程语言的语法和语义规则不同,提供多种不同编程语言类型的思维连提示文本,可使安全代码生成模型更理解不同编程语言类型下根据业务需求指令得到安全代码的逻辑结构。例如,预设的编程语言类型中有一编程语言类型为Python,那么该编程语言类型对应的思维链提示文本可为:“我希望你生成一些具有抗攻击的Python代码,以下是一些例子:(第一业务需求指令),(第一安全代码),(解析文本)”。
S104:确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型。
在本说明书一个或多个实施例中,如前所述,思维链提示文本用于为待训练的安全代码生成模型提供了根据业务需求指令生成安全代码的示例,使待训练的安全代码生成模型可生成满足业务需求且兼顾安全风险(即具备抗攻击能力)的安全代码。所以,服务器可根据第二业务需求指令、安全提示词以及步骤S104中确定的思维链提示文本,通过待训练的安全代码生成模型,确定满足第二业务需求且兼顾安全风险的第二安全代码。
具体的,该服务器可从预设的业务需求指令集中选取用于当前训练过程的第二业务需求指令,同时,该服务器可确定安全提示词。以及根据确定的安全提示词、该第二业务需求指令以及步骤S104中确定的思维链提示文本,确定输入数据,并输入待训练的安全代码生成模型,得到输出的第二安全代码。其中,待训练的安全代码生成模型为预训练得到的用于生成安全代码的模型。即该安全代码生成模型可根据加入安全提示词和思维链提示文本的业务需求指令,得到即满足该业务需求且兼顾安全风险的安全代码。其中,业务需求指令集为不同业务需求指令的集合,业务需求指令的不同指的是业务需求、编程语言类型中至少一种的不同。
如图2所示,图中为根据安全提示词、第二业务需求指令以及思维链提示文本,确定输入数据。该输入数据的结构可为:安全提示词+思维链提示文本+第二业务需求指令的拼接。
可选的,当在步骤S104中得到了各编程语言类型的思维链提示文本时。该服务器可从预设的各业务需求指令中选取用于当前训练过程的第二业务需求指令。若服务器识别到该第二业务需求指令中包括的编程语言类型,则可从各编程语言类型的思维链提示文本中,选取该编程语言类型的思维链提示文本,作为该第二业务需求指令的思维链提示文本。若服务器未识别到该第二业务需求指令中包括的编程语言类型,则可从各编程语言类型的思维链提示文本中,随机选取思维链提示文本,作为该第二业务需求指令的思维链提示文本。
最后,该服务器可将安全提示词、该第二业务需求指令的思维链提示文本以及该第二业务需求指令,作为输入数据,输入该安全代码生成模型,得到第二安全代码。其中,安全提示词中具有明确安全语义的词汇,例如,该词汇可为“安全”或“可靠”。在此,本说明书并不限制安全提示词中具有安全语义的词汇数量和具体内容。沿用上例,该安全提示词可为:你是一个安全可靠的人工智能助手。那么输入数据的结构可为:“你是一个安全可靠的人工智能助手,(思维链提示文本),(第二业务需求指令)”。
S106:根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码。
在本说明书一个或多个实施例中,为了在后续步骤中确定损失,并以损失最小为优化目标训练安全代码生成模型,进而使训练完成的安全代码生成模型仅根据业务需求指令,就可生成满足业务需求且兼顾安全风险的安全代码。则在本步骤服务器需根据第二业务需求指令,通过待训练的安全代码生成模型,生成业务代码。
具体的,该服务器可将第二业务需求指令输入待训练的安全代码生成模型,生成业务代码。
具体的,该服务器可确定普通提示词,并将该普通提示词与第二业务需求指令,输入待训练的安全代码生成模型,生成业务代码。其中,引入普通提示词使该安全代码生成模型更注重生成的代码是否满足第二业务需求指令中的第二业务需求。例如,普通提示词可为:你是一个优秀高效的人工智能助手。
S108:根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
在本说明书一个或多个实施例中,为了使安全代码生成模型仅根据业务需求指令,就可生成满足业务需求且兼顾安全风险的安全代码。在本步骤可通过第二安全代码与业务代码之间的差异,确定损失,以该损失最小化为优化目标训练该安全代码生成模型。
具体的,该服务器可根据该安全代码生成模型生成代码中的各词汇的次序,根据每个次序,在第二安全代码和业务代码中确定该次序对应的两个词汇之间的相似度。进而可根据业务代码中各词汇与第二安全代码中各词汇的相似度,确定损失,以该损失最小为优化目标训练安全代码生成模型。训练完成的安全代码生成模型可响应于用户发起的生成请求,并根据生成请求中携带的目标业务需求指令,生成满足该目标业务需求且兼顾安全风险的安全代码。例如,针对任一次序i,确定业务代码中的第i个词汇和第二安全代码中的第i个词汇的相似度,以及优化目标可为各词汇的相似度的期望。如下:
其中,为安全代码生成模型的参数,/>为“普通提示词+第二业务需求指令”或“第二业务需求指令”的模型输入,/>为第二安全代码,/>为业务代码,/>为交叉熵损失函数。/>为第i个词汇的预测概率,k为第二安全代码的总词汇数量,/>为指示函数,该指示函数用于在计算第i个词汇时,去除业务代码中其他词汇的影响。
如图3所示,图3为根据“普通提示词+第二业务需求指令”的输入,得到业务代码,根据“安全提示词+思维链提示文本+第二业务需求指令”的输入,得到第二安全代码。并根据业务代码和第二安全代码,确定损失。
在上述方法中,服务器通过将获取的第一业务需求指令,以及确定的该第一业务需求指令的第一安全代码和解析文本,填入预设的思维链提示模版,确定思维链提示文本,其中,可通过确定该第一业务需求指令的多种编程语言类型的第一安全代码,确定各思维链提示文本。将确定的思维链提示文本用于给安全代码生成模型提供根据业务需求指令生成安全代码的示例,以使该安全代码生成模型可生成满足该第二业务需求且兼顾安全风险的第二安全代码。进而通过根据第二业务需求指令生成的业务代码与该第二安全代码之间的差异,确定损失,并以该损失最小为优化目标训练该安全代码生成模型。上述过程属于上下文蒸馏过程,可将安全知识和意识蒸馏进该安全代码生成模型,使训练完成的安全代码生成模型仅根据用户输入的目标业务需求指令,就可生成安全代码,即使该安全代码生成模型在生成代码时考虑了代码应用的实际需求,生成的安全代码可直接用于代码开发中,提高了代码的开发效率。实现了安全代码生成模型“学习”到如何主动生成安全代码的效果。
除此之外,在训练安全代码生成模型的过程中,该服务器可确定多个第二业务需求指令。并针对每个第二业务需求指令,将该第二业务需求指令、步骤S102中确定的思维链提示文本以及步骤S104中确定的安全提示词,输入该安全代码生成模型,得到输出该第二业务需求指令的第二安全代码。将确定的各第二业务需求指令作为训练样本,以及将各第二业务需求指令对应的第二安全代码作为训练样本的标注。迭代训练该安全代码生成模型,每次训练过程包括:从各第二业务需求指令中选取用于当前训练过程的第二业务需求指令。将该第二业务需求指令和普通提示词,输入该安全代码生成模型,得到输出的该第二业务需求指令的业务代码。根据该业务代码与标注中该第二业务需求指令的第二安全代码之间的差异,确定损失,根据该损失调整该安全代码生成模型。在此,本说明书并不限制选取当前训练过程的第二业务需求指令的具体方式,可重复选取各第二业务需求指令用于当前训练过程。
除此之外,由于思维链提示文本用于给安全代码生成模型,提供根据业务需求指令得到安全代码的示例。所以,本说明书提供了服务器可获取多种不同的第一业务需求指令,以及针对每一个第一业务需求指令,确定该第一业务需求指令对应的思维链提示文本。
在本说明书实施例中,首先,该服务器可获取多个不同的第一业务需求指令。其次,该服务器可针对每一个第一业务需求指令,至少确定该第一业务需求指令一种编程语言类型的第一安全代码,以及确定该第一安全代码的解析文本。最后,该服务器可将该第一业务需求指令、该第一安全代码以及该解析文本,填入思维链提示模版或确定对应编程语言类型的思维链提示模版,得到该第一业务需求指令对应的思维链提示文本。其中,可随机从各第一业务需求指令对应的思维链提示文本中,选取其一,用于为待训练的安全代码生成模型提供根据业务需求指令生成安全代码的示例。在此,本说明书不限制选取的具体方式。
通过不同第一业务需求指令的思维链提示文本,可使安全代码生成模型了解从不同的业务需求指令生成对应的安全代码的结构化的推理逻辑的过程,使得生成的第二安全代码更准确。
以上为本说明书的一个或多个实施例中提供的一种安全代码生成模型的训练方法,基于同样的思路,本说明书还提供了一种安全代码生成模型的训练装置,如图4所示。
获取模块500,获取第一业务需求指令,并确定所述第一业务需求指令对应的第一安全代码;
思维链提示文本模块501,根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本;
第一生成模块502,确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型;
第二生成模块503,根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码;
损失模块504,根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
可选的,所述获取模块500,具体用于确定存储的各候选安全代码实现的业务功能;根据所述第一业务需求指令,从各候选安全代码中,确定实现的业务功能与所述第一业务需求指令匹配的候选安全代码,作为所述第一业务需求指令对应的第一安全代码;确定所述第一安全代码的解析文本。
可选的,所述获取模块500,具体用于针对预设的每一种编程语言类型,确定该编程语言类型对应的所述第一业务需求的第一安全代码;确定所述第一安全代码的解析文本。
可选的,所述思维链提示文本模块501,具体用于将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入预设的思维链提示模版,确定思维链提示文本。
可选的,所述思维链提示文本模块501,具体用于针对预设的每一种编程语言类型,根据预设的思维链提示模版,确定该编程语言类型的思维链提示模版;将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入该编程语言类型的思维链提示模版,确定该编程语言类型的思维链提示文本。
可选的,所述第一生成模块502,具体用于确定所述第二业务需求指令包括的编程语言类型;从各编程语言类型的思维链提示文本中,选取所述编程语言类型对应的思维链提示文本,作为所述第二业务需求指令的思维链提示文本;将所述安全提示词、所述思维链提示文本以及所述第二业务需求指令,输入待训练的安全代码生成模型,生成第二安全代码。
可选的,所述第二生成模块503,具体用于确定普通提示词;将所述普通提示词以及所述第二业务需求指令拼接,并输入所述安全代码生成模型,生成业务代码。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的一种安全代码生成模型的训练方法。
本说明书还提供了图5所示的电子设备的示意结构图。如图5所述,在硬件层面,该设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述一种安全代码生成模型的训练方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (10)

1.一种安全代码生成模型的训练方法,其特征在于,包括:
获取第一业务需求指令,并确定所述第一业务需求指令的第一安全代码;
根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本;
确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型;
根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码;
根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
2.如权利要求1所述方法,其特征在于,确定所述第一业务需求指令对应的第一安全代码,具体包括:
确定存储的各候选安全代码实现的业务功能;
根据所述第一业务需求指令,从各候选安全代码中,确定实现的业务功能与所述第一业务需求指令匹配的候选安全代码,作为所述第一业务需求指令对应的第一安全代码;
确定所述第一安全代码的解析文本。
3.如权利要求2所述方法,其特征在于,根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本,具体包括:
将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入预设的思维链提示模版,确定思维链提示文本。
4.如权利要求1所述方法,其特征在于,确定所述第一业务需求指令的第一安全代码,具体包括:
针对预设的每一种编程语言类型,确定该编程语言类型对应的所述第一业务需求的第一安全代码;
确定所述第一安全代码的解析文本。
5.如权利要求4所述方法,其特征在于,根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本,具体包括:
针对预设的每一种编程语言类型,确定该编程语言类型的思维链提示模版;
将所述第一业务需求指令、所述第一安全代码以及所述解析文本,填入该编程语言类型的思维链提示模版,确定该编程语言类型的思维链提示文本。
6.如权利要求5所述方法,其特征在于,根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,具体包括:
确定所述第二业务需求指令包括的编程语言类型;
从各编程语言类型的思维链提示文本中,选取所述编程语言类型对应的思维链提示文本,作为所述第二业务需求指令的思维链提示文本;
将所述安全提示词、所述思维链提示文本以及所述第二业务需求指令,输入待训练的安全代码生成模型,生成第二安全代码。
7.如权利要求1所述方法,其特征在于,根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码,具体包括:
确定普通提示词;
将所述普通提示词以及所述第二业务需求指令拼接,并输入所述安全代码生成模型,生成业务代码。
8.一种安全代码生成模型的训练装置,其特征在于,包括:
获取模块,用于获取第一业务需求指令,并确定所述第一业务需求指令对应的第一安全代码;
思维链提示文本模块,用于根据所述第一业务需求指令、所述第一安全代码以及预设的思维链提示模版,确定思维链提示文本;
第一生成模块,用于确定安全提示词以及第二业务需求指令,并根据所述安全提示词、所述第二业务需求指令以及所述思维链提示文本,通过待训练的安全代码生成模型,生成第二安全代码,所述安全代码生成模型为预训练得到的用于生成安全代码的模型;
第二生成模块,用于根据所述第二业务需求指令,通过所述安全代码生成模型,生成业务代码;
损失模块,用于根据所述业务代码以及所述第二安全代码的差异,确定损失,并以损失最小为优化目标训练所述安全代码生成模型,所述安全代码生成模型训练完成后,用于响应于生成请求中携带的目标业务需求指令,生成实现所述目标业务需求的安全代码。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
10.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
CN202311665188.7A 2023-12-06 2023-12-06 一种安全代码生成模型的训练方法及装置 Active CN117369783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311665188.7A CN117369783B (zh) 2023-12-06 2023-12-06 一种安全代码生成模型的训练方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311665188.7A CN117369783B (zh) 2023-12-06 2023-12-06 一种安全代码生成模型的训练方法及装置

Publications (2)

Publication Number Publication Date
CN117369783A true CN117369783A (zh) 2024-01-09
CN117369783B CN117369783B (zh) 2024-02-23

Family

ID=89408111

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311665188.7A Active CN117369783B (zh) 2023-12-06 2023-12-06 一种安全代码生成模型的训练方法及装置

Country Status (1)

Country Link
CN (1) CN117369783B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110288324A (zh) * 2019-06-28 2019-09-27 深圳前海微众银行股份有限公司 一种业务代码的生成、执行方法及装置
CN111722839A (zh) * 2020-06-24 2020-09-29 北京航天数据股份有限公司 一种代码生成方法、装置、电子设备及存储介质
CN112685030A (zh) * 2020-12-31 2021-04-20 北京三快在线科技有限公司 一种生成业务代码的方法、装置、存储介质及电子设备
CN114968214A (zh) * 2022-07-12 2022-08-30 云账户技术(天津)有限公司 代码自动生成方法、装置、存储介质及终端设备
WO2023014370A1 (en) * 2021-08-06 2023-02-09 Siemens Aktiengesellschaft Source code synthesis for domain specific languages from natural language text
CN116227474A (zh) * 2023-05-09 2023-06-06 之江实验室 一种对抗文本的生成方法、装置、存储介质及电子设备
CN116502176A (zh) * 2023-03-28 2023-07-28 支付宝(杭州)信息技术有限公司 一种语言模型的预训练方法、装置、介质及电子设备
CN116560631A (zh) * 2023-07-12 2023-08-08 百融云创科技股份有限公司 一种机器学习模型代码的生成方法及装置
CN116578282A (zh) * 2023-04-21 2023-08-11 北京五八赶集信息技术有限公司 代码生成方法、装置、电子设备及介质
CN116643753A (zh) * 2023-03-30 2023-08-25 上海悦米信息技术有限公司 一种自动化代码生成的方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110288324A (zh) * 2019-06-28 2019-09-27 深圳前海微众银行股份有限公司 一种业务代码的生成、执行方法及装置
CN111722839A (zh) * 2020-06-24 2020-09-29 北京航天数据股份有限公司 一种代码生成方法、装置、电子设备及存储介质
CN112685030A (zh) * 2020-12-31 2021-04-20 北京三快在线科技有限公司 一种生成业务代码的方法、装置、存储介质及电子设备
WO2023014370A1 (en) * 2021-08-06 2023-02-09 Siemens Aktiengesellschaft Source code synthesis for domain specific languages from natural language text
CN114968214A (zh) * 2022-07-12 2022-08-30 云账户技术(天津)有限公司 代码自动生成方法、装置、存储介质及终端设备
CN116502176A (zh) * 2023-03-28 2023-07-28 支付宝(杭州)信息技术有限公司 一种语言模型的预训练方法、装置、介质及电子设备
CN116643753A (zh) * 2023-03-30 2023-08-25 上海悦米信息技术有限公司 一种自动化代码生成的方法
CN116578282A (zh) * 2023-04-21 2023-08-11 北京五八赶集信息技术有限公司 代码生成方法、装置、电子设备及介质
CN116227474A (zh) * 2023-05-09 2023-06-06 之江实验室 一种对抗文本的生成方法、装置、存储介质及电子设备
CN116560631A (zh) * 2023-07-12 2023-08-08 百融云创科技股份有限公司 一种机器学习模型代码的生成方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MYTHILY, M等: "Model transformation and code generation using a secure business process model", 《JOURNAL OF INTELLIGENT & FUZZY SYSTEMS》, vol. 45 *
周彪: "基于SSM框架的Java后端代码生成器的设计与实现", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, no. 2 *
张晶;黄小锋;: "基于业务模型和界面模型的代码生成工具", 电脑与信息技术, no. 02 *

Also Published As

Publication number Publication date
CN117369783B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
CN107437416B (zh) 一种基于语音识别的咨询业务处理方法及装置
CN109992771B (zh) 一种文本生成的方法及装置
CN110263158B (zh) 一种数据的处理方法、装置及设备
CN113221555B (zh) 一种基于多任务模型的关键词识别方法、装置及设备
CN115952272B (zh) 一种生成对话信息的方法、装置、设备及可读存储介质
CN115203394A (zh) 一种模型训练的方法、业务执行的方法及装置
CN108446266B (zh) 一种语句拆分的方法、装置及设备
CN113079201B (zh) 一种信息的处理系统、方法、装置及设备
CN117331561B (zh) 一种智能低代码页面开发系统及方法
CN113887235A (zh) 一种信息推荐的方法及装置
CN117216271A (zh) 一种文章文本处理方法、装置以及设备
CN116186231A (zh) 一种回复文本的生成方法、装置、存储介质及电子设备
CN117369783B (zh) 一种安全代码生成模型的训练方法及装置
CN116501852B (zh) 一种可控对话模型训练方法、装置、存储介质及电子设备
CN117555644B (zh) 一种基于自然语言交互的前端页面构建方法及装置
CN115017915B (zh) 一种模型训练、任务执行的方法及装置
CN117591661B (zh) 一种基于大语言模型的问答数据构建方法及装置
CN114817469B (zh) 文本增强方法、文本增强模型的训练方法及装置
CN115658891B (zh) 一种意图识别的方法、装置、存储介质及电子设备
CN115859975B (zh) 数据处理方法、装置及设备
CN116795972B (zh) 一种模型训练的方法、装置、存储介质及电子设备
CN117828360A (zh) 一种模型训练、代码生成方法、装置、存储介质及设备
CN117743824A (zh) 一种模型训练、业务执行方法、装置、存储介质及设备
CN117876114A (zh) 一种业务执行和模型训练的方法及装置
CN117931672A (zh) 应用于代码变更的查询处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant