CN117252251A - 一种私域数据的生成方法、装置、设备和存储介质 - Google Patents

一种私域数据的生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN117252251A
CN117252251A CN202311546225.2A CN202311546225A CN117252251A CN 117252251 A CN117252251 A CN 117252251A CN 202311546225 A CN202311546225 A CN 202311546225A CN 117252251 A CN117252251 A CN 117252251A
Authority
CN
China
Prior art keywords
api
pair
data
private domain
code
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
CN202311546225.2A
Other languages
English (en)
Other versions
CN117252251B (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.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
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 New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN202311546225.2A priority Critical patent/CN117252251B/zh
Publication of CN117252251A publication Critical patent/CN117252251A/zh
Application granted granted Critical
Publication of CN117252251B publication Critical patent/CN117252251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种私域数据的生成方法、装置、设备和存储介质,该方法包括:获取API数据源,根据私域的API数据组合出若干条目,并根据若干条目和数据结构得到至少一个第一QA对,对至少一个第一QA对进行模糊化处理得到至少一个第二QA和映射关系表,对至少一个第二QA对进行深化拓展得到至少一个第三QA对;根据映射关系表对至少一个第三QA对进行清晰化处理得到至少一个第四QA对,并作为符合私域API的有监督微调SFT数据集传输至训练模型,以使利用SFT数据集训练出大语言模型。本方法随机生成大量覆盖多个业务范围的SFT用例,从而增加了QA对广度;并且通过对生成的第一QA对进行模糊化处理提高私域代码的安全性。

Description

一种私域数据的生成方法、装置、设备和存储介质
技术领域
本发明涉及计算机领域,尤其是涉及一种私域数据的生成方法、装置、设备和存储介质。
背景技术
OpenAI开发了一种聊天机器人chatGPT,包括GPT4,GPT3.5,统称为ChatGPT,当其主要应用在企业的私有代码生成方面时会遇到两个主要问题,导致其无法落地,具体体现在如下两个方面:
一方面,chatGPT作为闭源模型无法进行本地部署。企业如果想要使用chatGPT必须将用户数据(如私有代码/信息)交给chatGPT的运营商(例如OpenAI或者微软)。这些数据因此可能泄密,例如有可能被OpenAI/微软用来继续训练chatGPT或者其他模型,而攻击者可以通过被训练的模型获取企业的私有信息。
另一方面,chatGPT使用公域数据(如开源代码)进行训练,缺少企业私域相关的知识,导致在私域特有的任务上表现不好。例如代码生成任务上,chatGPT由于不知道私域相关API定义/业务逻辑等信息,无法正确生成代码。
针对代码生成领域,目前一种做法是,如图1所示,根据私域API数据源在其包含的基础数据集上通过chatGPT(特别是GPT4)进行不断演化,构造出大量的高质量SFT(Supervised Fine Tuning,有监督微调)数据集,这种方法对于需要保密的私域代码来存在弊端,因为将这些私域代码信息存储时存在泄露的风险,容易被截获和盗用。此外,chatGPT缺少私域知识,无法做广度扩展,即无法组合多个私有领域组合扩展。
发明内容
有鉴于此,本发明提供了一种私域数据的生成方法、装置和设备,用以提高私域代码安全性,且同时增加私域数据源的广度。
第一方面,本发明提供了一种私域数据的生成方法,该方法包括:
获取应用程序编程接口API数据源,API数据源中包括私域的API数据以及用于描述API数据的数据结构;
根据私域的API数据组合出若干条目,以及根据若干条目和数据结构,得到至少一个第一QA对;
按照预设规则,对至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表,所述映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的对应关系;
对至少一个第二QA对进行深化拓展,得到至少一个第三QA对;
根据映射关系表,对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集;
将所述至少一个第四QA对作为符合私域API的有监督微调SFT数据集传输至训练模型,以使训练模型利用SFT数据集训练出大语言模型。
结合第一方面,在一种可能的实施方式中,私域的API数据包括:第一API基础数据和第二API基础数据,第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集;
根据所述私域的API数据组合出若干条目,具体包括:将从第一API集合中选择出的一个或多个的API子集,与,从第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,该条目具有被选出的所有API子集的功能。
结合第一方面,在另一种可能的实施方式中,根据若干条目和数据结构,生成至少一个第一QA对,具体包括:将所述组合生成的条目填充至预设模板中,生成第一指令;将所述第一指令输入至AI算法模型中,输出第一QA对。
结合第一方面,在又一种可能的实施方式中,按照预设规则,对至少一个第一QA对进行模糊化处理,得到至少一个第二QA对,具体包括:获取每个第一QA对所对应的代码;改变每个第一QA对的代码所在的条件空间、或者改变代码的函数风格、或者改变代码的函数参数,得到至少一个第二QA对。
结合第一方面,在又一种可能的实施方式中,改变每个第一QA对的代码所在的条件空间,包括:利用本地大语言模型LLM将第一QA对的代码所在的条件空间变换为与当前领域不同的领域。
改变代码的函数风格,包括:将代码的函数命名风格改变。
改变代码的函数参数,包括:在函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序。
结合第一方面,在又一种可能的实施方式中,根据映射关系表对至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,包括:利用映射关系表,对至少一个第三QA对做逆向变换,得到至少一个第四QA对,并将至少一个第四QA对作为SFT数据集。
第二方面,本发明提供了一种私域数据的生成装置,所述装置包括:
获取模块,用于获取应用程序编程接口API数据源,API数据源中包括私域的API数据以及用于描述所述API数据的数据结构;
混合模块,用于根据私域的API数据组合出若干条目,并根据所述若干条目和所述数据结构,得到至少一个第一QA对,其中,每个第一QA对包括问题和答案;
模糊化模块,用于按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表,所述映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的关系;
拓展模块,用于对所述至少一个第二QA对进行深化拓展,生成至少一个第三QA对;
清晰化模块,用于根据所述映射关系表,对至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集;
输出模块,用于将至少一个第四QA对作为符合私域API的有监督微调SFT的数据集传输至训练模型,以使所述训练模型利用所述SFT的数据集训练出大语言模型。
结合第二方面,在一种可能的实施方式中,私域的API数据包括:第一API基础数据和第二API基础数据,第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集;
模糊化模块,具体用于将从第一API集合中选择出的一个或多个的API子集,与,从第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,条目具有被选出的所有API子集的功能。
结合第二方面,在另一种可能的实施方式中,模糊化模块,具体用于将组合生成的条目填充至预设模板中,生成第一指令,以及将第一指令输入至AI算法模型中,输出第一QA对。
结合第二方面,在又一种可能的实施方式中,模糊化模块,具体用于获取每个第一QA对所对应的代码;改变每个第一QA对的代码所在的条件空间、或者改变代码的函数风格、或者改变代码的函数参数,生成至少一个第二QA对。
结合第二方面,在又一种可能的实施方式中,模糊化模块,具体用于利用本地大语言模型LLM将第一QA对的代码所在的条件空间变换为与当前领域不同的领域;将代码的函数命名风格改变;以及在函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序。
结合第二方面,在又一种可能的实施方式中,清晰化模块,具体用于利用映射关系,对至少一个第三QA对做逆向变换,得到至少一个第四QA对,并将至少一个第四QA对作为SFT数据集。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的私域数据的生成方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的私域数据的生成方法。
本发明提供的方法、装置和设备,通过对私域的API数据进行组合,生成若干条目,以此增加了chatGPT私域数据源的广度,对私域的基础数据进行广度上扩展,得到高质量的私域数据集。并且,通过对生成的至少一个QA对进行模糊化处理,增加每个QA对的复杂度和多样性,防止私域API数据在演化过程中被窃取和信息泄露,本方法提高了私域代码的安全性,以及在构建阶段将模糊化的QA对清晰化处理,生成符合私域API的SFT数据集,为后续模型训练提供依据。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的一种私域数据训练的流程示意图;
图2是本发明实施例提供的一种私域数据的生成方法的流程示意图;
图3是本发明实施例提供的一种私域数据的生成方法的示意图;
图4是本发明实施例提供的一种私域数据的生成方法装置的结构框图;
图5是本发明实施例提供的一种计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供的技术方案应用于计算机领域,尤其是基于chatGPT功能的软件开发。
目前有一些开源可本地部署的LLM(Large Language Model,大语言模型)作为chatGPT的替代。例如Meta公司的LLaMa系列,当其应用在私域时,主要体现在以下两点:
1. 开源模型的能力与chatGPT存在着很大的差距。
2. 开源模型基于公域数据进行训练,同样缺少私域知识。如果企业想要将私域知识加入到开源大语言模型LLM(比如LLaMa、清华chatGLM)中,需要大量高质量的私域相关的有监督微调SFT数据集。而通常情况下,企业是没有这些SFT数据集的。作为替代方法,企业一般是通过自监督将知识灌入。但从效果来看,如果私有数据遵循长尾分布(典型的如代码数据),对于数量较少/质量较低的数据,这种方式的效果并不好。
其中,LLM是指规模庞大的语言模型,它是一种基于深度学习的人工智能模型,旨在处理和生成自然语言文本。LLM的训练通常基于大规模的文本语料库,通过预测下一个单词或字符的方式来学习语言的概率分布和语义关系。
本实施例中,大规模语言模型LLM可以是LLaMa、清华chatGLM等模型的统称。
对于这种有保密要求,存在长尾分布的私域任务,“开源模型+微调”方式得到在私域部署的LLM,部署得到的LLM性能表现不好。以代码生成为例,有一个小众模块X的应用程序编程接口API调用库,得到数据,使用该API的代码总体占比很低,则这种“开源模型+微调”的方式会使得模型对于X模块的API掌握的很差。但对于该模块的开发人员来讲,X模块的API是其日常开发主要遇到的,LLM对其的熟练程度直接影响了该开发人员的开发效率。即,LLM通常对于这种少数派的(代码量较少的模块)考虑不够,需要加强这方面的能力。
以机器学习(包括前文提到的LLM)为代表的人工智能,提升其能力最重要的方法就是提高数据质量,数据质量包含两方面含义:数据的质和数据的量。如微软Orca的研究表明,增加思维链(Chain-of-Thought,CoT)内容有助于被训练模型的推理能力,这对数据集的质提出了非常高的要求。同样的,数据集的多样性也对模型泛化的能力至关重要。只有通过大量高质量的数据,模型才能学到正确的模式。而前面提到的少数派,正是由于其相关的数据质和量都比较低,导致模型无法学习到其特征并正确的应用。
其中,思维链CoT是指,通过让大语言模型(LLM)将一个问题拆解为多个步骤,一步一步分析,逐步得出正确答案。需指出,针对复杂问题,LLM直接给出错误答案的概率比较高。思维链可以看成是一种指令微调(Instruction FineTuning)。其中,指令微调针对已经存在的预训练模型,给出额外的指令或者标注数据集来提升模型的性能。
传统人工方式构建高质量的SFT数据集方法需要投入大量的人力资源,消耗巨大,且产出效率较低。为此,需要提出一种通过使用chatGPT来构造高质量数据集的方法。
针对代码生成领域,目前比较先进的方法就是Evo-instruct。Evo-instruct在基础数据集上通过GPT4进行不断演化,构造出大量的高质量SFT数据集。其核心的方法是,针对原始数据集中的QA对(Question Answer),让GPT4增加Q的难度,生成新的问题Q1,之后让GPT4对Q1进行回答,生成对应的答案A1,构成新的QA对,比如问题Q1和答案A1组成的Q1-A1对。之后在Q1和A1的基础上继续不断演化。SFT数据集内部由一系列的QA对组成。针对代码领域而言,Evo-instruct增加难度的方法包括:
第一、增加原问题的时间复杂度,和/或,空间复杂度。
第二、增加原问题的推理步骤。
第三、为原问题增加不相干的干扰条件等。
上述通过Evo-instruct方法可以构造出大量高质量的QA对,作为有监督微调SFT的原料,构造成高质量SFT数据集。Evo-instruct利用chatGPT(特别是GPT4)的强大能力实现进化,但对于需要保密的私域代码来说这却不合适,因为私域代码知识存在泄露风险,且chatGPT缺少私域知识,无法做广度扩展。
另外,chatGPT等类似的LLM的核心原理是基于概率的自回归模型。所谓自回归模型,指的是chatGPT会将之前的输入和输出合并成新一轮的输入,在此基础上预测下一个词,并将概率最高的词输出。不断进行这个过程,直到达到某些条件。而基于概率则表示,模型在输出下个Token时会考虑前面的Token(令牌),即计算如下的条件概率:
具体来说,给定前i-1个Token,预测词汇表中各个token在此情景下的概率,并将概率最高的Token输出。如果OpenAI使用的用户并不想公开的私域数据进行训练,那么模型就有可能记住这些私域数据。在特定的场景下,如受到攻击时,模型就会泄露出这些敏感信息,比如用户的代码API等。
比如上述提到的攻击方法,可以是通过上下文引出模型的记忆,例如提示模型“***账号和密码分别是”,如果模型的训练数据中包含了类似的片段并且模型进行了记忆,那么模型就有可能输出训练资料中的数据,将敏感信息透露出去。
为了使用chatGPT安全高效的生成私域的SFT训练集,本实施例提出一种混合-模糊化(Mix-Obfuscate)的构建Evo-Instruct方法。用于克服上述两个缺点,分别是:1.chatGPT使用传统Evo-instruct无法进行私域的广度扩展;2.安全性问题。
下面对本申请实施例提供的技术方案进行详细说明。
根据本发明实施例,提供了一种高质量私域数据的生成方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
如图2所示,是本实施例提供的一种私域数据的生成方法的流程示意图,可应用于一种计算机设备,具体地,该方法包括:
步骤S101:获取应用程序编程接口API数据源,所述API数据源中包括私域的API数据以及用于描述API数据的数据结构。
其中,所述私域的API数据为一些基础数据,比如私域的API数据中包括:接口管理相关数据、DTQ(double linked list,双向链表)相关数据和哈希数据等,分别可以对应不同的API集合以及相关的数据结构。所述用于描述API数据的数据结构,是指诸如API接口索引、接口描述、接口类型等信息,这些信息合并成结构体,这个结构体包括的内容可理解为“API数据的数据结构”。
上述私域的API数据可以从API域模块(Module API Domain)处接收和获取。具体地,API域模块按照模块和功能进行分类。套用一般编程手册进行类比,Module API Domain按照编程手册的模块和章节进行分类。例如按照接口管理编程手册中接口遍历的一组API,得到接口管理API数据和相关数据结构。
步骤S102:根据所述私域的API数据组合出若干条目,以及根据所述若干条目和所述数据结构,得到至少一个第一QA对。
其中,每个第一QA对包括问题和答案,且问题和答案之间一一对应。
具体地,步骤S102包括:根据私域的API数据中的基础数据,组合生成若干条目;然后根据若干条目和数据结构,得到至少一个第一QA对。一种实施方式是,从私域的API数据中随机抽取多个模块的功能(一般2~3个),交给本地LLM进行组合设计成为初始QA对。例如,随机抽取到了接口管理的接口API遍历功能,和DLL(Data Definition Language,数据定义语言)功能作为组合,将相关的API说明发送给本地AI算法模型,该AI算法模型运算后输出一个或多个第一QA对。
举例说明,私域的API数据组合后的一个条目为:
作为一个C语言考试出题者,请你使用下面的API出一道题目,题目的形式和HumanEval类似,被测试者要求完成一个函数来实现功能,下面是相关的API信息如下:
//DLL和接口遍历的API信息
请你给出问题和相应的答案。
基于上述信息,在步骤S102中,根据私域部署的LLM会反馈一个例子,如下所示:
题目为:
一个Q-A对为:
问题Q://遍历接口信息,并且将接口的索引按照DLL的方式存储返回;
DLL_HEAD getAllInterfacesInfo()
答案A:
本步骤利用本地AI算法模型,在***密的情况下,可以得到多个模块混合的初始QA对,即至少一个QA对。
步骤S103:按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表。
所述映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的对应关系,模糊化处理是指将第一QA对进行隐藏、加密或模糊化处理,使得输出的第二QA对在外表上看起来不能够识别出是通过第一QA对变化所得,从而提高第一QA对的安全性,类似于对明文加密,生成密文。该映射关系表可理解为密钥,用于还原第二QA对,生成第一QA对。
本步骤将LLM通过条件概率预测,为了避免私域代码信息被泄露、防止他人获取,需要改变代码,即对代码信息做模糊化处理(英文表示为“Obfuscate”),也称伪装处理。
具体地,一种实施方式是,获取每个第一QA对所对应的代码;改变每个第一QA对的代码所在的条件空间、或者改变所述代码的函数风格、或者改变所述代码的函数参数中的至少一种,生成至少一个第二QA对。
其中,上述改变每个第一QA对的代码所在的条件空间,包括:利用本地大语言模型LLM将所述第一QA对的代码所在的条件空间变换为与当前领域不同的领域,简称为“比喻方式改写”。具体地,根据至少一个第一QA对和若干条目(表示为“a1”),通过比喻的方式改变业务空间,生成至少一个第二QA对和对应的若干个条目(表示为“a2”),同时,还建立每个第二QA对与第一QA对之间的映射关系。
模糊化处理一:比喻方式改写
以上述接口遍历为例,利用本地LLM将其变换为其他领域的表现形式,举例说明:
Prompt(提示):路由器/交换机可以比作机场,那么接口可以比作什么呢?请以如下形式回答:“路由器<->机场”。
经过步骤S103后,在本地LLM返回的经过模糊化处理后示例如下:
接口<->航站楼
其中,接口<->航站楼,为模糊化前后执行的一种映射关系。
本实施例方式中,将原本网络设备的接口的遍历任务变为了机场航站楼的遍历任务。将原来接口相关的API伪装成了“航空运输相关的API”,例如:IF_IsValidIfIndex 判断是否是一个合法的接口索引,变更为Terminal_IsValidTerminal Index()。从而提高私域API数据的安全性。
可选的,还可以建立其他伪装关系,比如:
“接口管理(IF)<->航班管理(FLIGHT)”
“设备<->机场”
“接口<->航班”
“迭代器<->航班查看器”
“初始化<->启动”
“遍历<->查看”
“销毁<->关闭”
其中“<->”表示模糊化处理前和处理后的信息,模糊化管理之前,获取的条目和第一QA对为:
原始[接口管理(IF)API]
ULONG IF_IteratorInit(VOID);
该API用于初始化并返回一个迭代器,用于遍历设备上的接口。
IF_INDEX IF_GetNextIfIndexByIter(ULONG ulIter);
该API通过ulIter迭代器遍历返回接口。
VOID IF_IteratorFini(ULONG ulIter);
该API用于销毁IF_IteratorInit()返回的迭代器。
改写后的[航班管理(FLIGHT)API]
ULONG FLIGHT_ViewerStart(VOID);
该API用于启动并返回一个航班查看器,用于查看机场上的航班。
FLIGHT_INDEX FLIGHT_GetNextFlightIndexByViewer(ULONG ulViewer);
该API通过ulViewer航班查看器查看返回航班。
VOID FLIGHT_ViewerStop(ULONG ulViewer);
该API用于关闭FLIGHT_ViewerStart()返回的航班查看器。
请你根据这个伪装关系,改写下面的问题以及答案,使其适配改写后的API。
模糊化前的问题Q1为:题目
“你需要完成一个函数void StoreInterfaceInfo(), 该函数的功能是获取设备上的所有接口信息,并将这些接口信息存储到一个DTQ双向链表中。你需要在接口信息结构体中添加DTQ_NODE_S字段来存储接口信息。”
对应的,接口信息结构体定义为:
typedef struct tagInterfaceInfo {
IF_INDEX ifIndex;
DTQ_NODE_S stDtqNode;
} InterfaceInfo_S;
模糊化前的答案A1:
void StoreInterfaceInfo() {
DTQ_HEAD_S stList;
ULONG ulIter = IF_IteratorInit();
IF_INDEX ifIndex;
......
IF_IteratorFini(ulIter);
/ 打印接口信息 /
DTQ_NODE_S pstNode;
InterfaceInfo_S pstInterfaceInfo;
DTQ_FOREACH(&stList, pstNode) {
pstInterfaceInfo = DTQ_ENTRY(pstNode, InterfaceInfo_S, stDtqNode);
printf("Interface index: %d\n", pstInterfaceInfo->ifIndex);
}
}
经过步骤S103后,得到模糊化后的结果展示:本地LLM回答:
模糊化后的Q问题,即第二QA对中的Q2:
你需要完成一个函数void StoreFlightInfo(), 该函数的功能是获取机场上的所有航班信息,并将这些航班信息根据航班索引(FlightIndex)的大小顺序存储到一个DTQ双向链表中。你需要在航班信息结构体中添加DTQ_NODE_S字段来存储航班信息。
航班信息结构体定义为:
typedef struct tagFlightInfo {
FLIGHT_INDEX FlightIndex;
DTQ_NODE_S stDtqNode;
} FlightInfo_S;
模糊化后的答案A,即答案A2
答案:
void StoreFlightInfo(){
while ((FlightIndex = FLIGHT_GetNextFlightIndexByViewer(ulViewer)) !=0) {
FlightInfo_S pstFlightInfo = (FlightInfo_S )malloc(sizeof(FlightInfo_S));
pstFlightInfo->FlightIndex = FlightIndex;
if (DTQ_IsEmpty(&stList)) {
DTQ_AddTail(&stList,&(pstFlightInfo->stDtqNode));
} else {
......pstCurrentFlightInfo = DTQ_ENTRY(pstCurrentNode, FlightInfo_S,stDtqNode);
}
FLIGHT_ViewerStop(ulViewer);
/ 打印航班信息 /
DTQ_NODE_S pstNode;
FlightInfo_S pstFlightInfo;
DTQ_FOREACH(&stList, pstNode) {
pstFlightInfo = DTQ_ENTRY(pstNode, FlightInfo_S, stDtqNode);
printf("Flight index: %d\n", pstFlightInfo->FlightIndex);
}
}
以上示例为对第一QA对进行模糊化处理后,得到第二QA对的一个示例。
模糊化处理二:函数风格改写
上述改变所述代码的函数风格,包括:将代码的函数命名风格改变;简称为“函数风格改写”。该实施方式,将函数的命名风格替换,例如利用匈牙利命名法、下划线命名法替换,同时建立替换前后的映射关系,得到包含映射关系的映射关系表。
例如将上述至少一个第二QA对和对应的若干个条目(“a2”)经过函数风格改写处理后,生成至少一个新的QA对和若干条目(表示为“a3”),得到新的映射关系。
模糊化处理三:函数参数改写
上述改变所述代码的函数参数,包括:在所述函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序;简称为“函数参数改写”。比如对于原有的API数据,会通过LLM模型随机添加0个或者多个无用的参数,或者改变参数的顺序等使得生成的至少一个第二QA对和对应的若干个条目不易被识别和破译。
比如将上述经过函数风格改写后的QA对和若干条目(a3),通过函数参数改写处理后,生成新的QA对和新的若干条目(表示为“a4”),生成新的映射关系,更新映射关系表。
可选的,上述更新后的映射关系表均为1:1的映射关系,比如包括一个Q和一个A之间的映射关系,方便后续在去模糊化(即清晰化)处理过程中还原使用。
本实施例基于上述模糊化处理的三种改写中的至少一种处理后,可以极大的改变API信息所处的范围,使得其他人无法通过模型来获取私域知识信息,从而提高了私域数据的安全性。
步骤S104:对所述至少一个第二QA对进行深化拓展,得到至少一个第三QA对。
具体地,一种实施方式是,使用Evo-instruct方法对至少一个第三QA对进行深化拓展,使得第三QA对相比于第二QA对,结构更复杂、或更多样化,得到高质量的API数据信息。
其中,Evo-instruct方法出自WizardCoder提出的针对代码的Evo-instruct文献,利用大模型生成指令的方法,它可以生成相对复杂和多样的指令数据集。对模糊化生成的第二QA对做进一步演化,生成结构复杂、且具有多样化的第三QA对。所述结构复杂且多样化是指,在原QA对基础上增加难度(包括增加方向和条件),以及增加处理难度、要求等。
举例说明,在步骤S103中输出一个第二QA对,其中一个问题Q2为:
“你需要完成一个函数void StoreFlightInfo(), 该函数的功能是获取机场上的所有航班信息,并将这些航班信息根据航班索引(FlightIndex)的大小顺序存储到一个DTQ双向链表中。你需要在航班信息结构体中添加DTQ_NODE_S字段来存储航班信息。”
将该问题Q2经过步骤S104的Evo-instruct方法处理后,输出更复杂且多样化的问题Q3,该问题Q3为:
“你需要完成一个函数void StoreFlightInfo(), 该函数的功能是获取机场上的所有航班信息,并将这些航班信息根据航班索引(FlightIndex)的大小顺序存储到一个DTQ双向链表中。此外,你还需要将航班索引为偶数的航班存储在另一个DTQ双向链表中。你需要在航班信息结构体中添加DTQ_NODE_S字段来存储航班信息。”
比较上述问题Q2和Q3,经过Evo-instruct方法构建后,比问题Q3新增“你还需要将航班索引为偶数的航班存储在另一个DTQ双向链表中”的条件,所以增加了问题Q2的复杂度。更具体地,代码形式可以通过多种方式表现,本实施例对代码层面的具体表现形式不作限制。
需要说明的是,本步骤中,对第二QA对中的问题Q2和A2进行深化拓展,生成新的第三QA对,不对模糊化过程中Q2-A2之间的映射关系做改变,所以在下一步做清晰化处理过程中依然可以使用前述的映射关系表。
步骤S105:根据所述映射关系表,对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集。
其中,清晰化处理与前述步骤S103中的“模糊化处理”相对应,是对模糊化处理的一个解模糊化过程(英文表示为:De Obfuscate)。
具体地,利用前述步骤S103中的映射关系表,映射关系表包含至少一个QA对在模糊化前后的映射关系,对前述步骤S104中的至少一个第三QA对进行逆向变换,得到符合私域API的Evo-instruct后的代码或数据,比如得到Q4-A4对,包括问题Q4和答案A4。
举例说明,清晰化处理之前,输入信息如下:
下面是一个模块的原始API说明,以及相应的进行领域改写的API。
领域改写为:将某个特定领域的API伪装(比喻)成其他领域的API,两个领域之间有相似性。目的是使其他人无法得知这是该特定领域的API。对于通用的概念,可以不用改写。
例如,网络设备可以伪装(比喻)为机场,相应的数据包可以伪装(比喻)为航班。数据包的ID则直接可以比喻为航班ID,ID这个通用概念无需改写,只需修改修饰词“数据包的”即可。
伪装关系:
"接口管理(IF)<->航班管理(FLIGHT)"
"设备<->机场"
"接口<->航班"
"迭代器<->航班查看器"
"初始化<->启动"
"遍历<->查看"
"销毁<->关闭"
原始[接口管理(IF)API]
ULONG IF_IteratorInit(VOID);
该API用于初始化并返回一个迭代器,用于遍历设备上的接口。
IF_INDEX IF_GetNextIfIndexByIter(ULONG ulIter);
该API通过ulIter迭代器遍历返回接口。
VOID IF_IteratorFini(ULONG ulIter);
该API用于销毁IF_IteratorInit()返回的迭代器。
改写后的[航班管理(FLIGHT)API]
ULONG FLIGHT_ViewerStart(VOID);
该API用于启动并返回一个航班查看器,用于查看机场上的航班。
FLIGHT_INDEX FLIGHT_GetNextFlightIndexByViewer(ULONG ulViewer);
该API通过ulViewer航班查看器查看返回航班。
VOID FLIGHT_ViewerStop(ULONG ulViewer);
该API用于关闭FLIGHT_ViewerStart()返回的航班查看器。
请你根据这个伪装关系,改写下面的问题以及答案,使其适配原始的API。
[问题Q3]
你需要完成一个函数void StoreFlightInfo(), 该函数的功能是获取机场上的所有航班信息,并将这些航班信息根据航班索引(FlightIndex)的大小顺序存储到一个DTQ双向链表中。此外,你还需要将航班索引为偶数的航班存储在另一个DTQ双向链表中。你需要在航班信息结构体中添加DTQ_NODE_S字段来存储航班信息。
航班信息结构体定义为:
typedef struct tagFlightInfo {
FLIGHT_INDEX FlightIndex;
DTQ_NODE_S stDtqNode;
DTQ_NODE_S stOddDtqNode;
} FlightInfo_S;
[答案A3]:
void StoreFlightInfo(){
DTQ_HEAD_S stEvenList;
while ((FlightIndex = FLIGHT_GetNextFlightIndexByViewer(ulViewer)) !=0) {
FlightInfo_S pstFlightInfo = (FlightInfo_S )malloc(sizeof(FlightInfo_S));
pstFlightInfo->FlightIndex = FlightIndex;
......}
FLIGHT_ViewerStop(ulViewer);
/ 打印所有航班信息 /
DTQ_NODE_S pstNode;
FlightInfo_S pstFlightInfo;
DTQ_FOREACH(&stList, pstNode) {
pstFlightInfo = DTQ_ENTRY(pstNode, FlightInfo_S, stDtqNode);
printf("Flight index: %d\n", pstFlightInfo->FlightIndex);
}
/ 打印偶数索引航班信息 /
DTQ_FOREACH(&stEvenList, pstNode) {
pstFlightInfo = DTQ_ENTRY(pstNode, FlightInfo_S, stOddDtqNode);
printf("Even index Flight: %d\n", pstFlightInfo->FlightIndex);
}
}
经过步骤S105,处理后,输出第四QA对,即Q4-A4,例如:
[问题Q4]
你需要完成一个函数void StoreInterfaceInfo(), 该函数的功能是获取设备上的所有接口信息,并将这些接口信息根据接口索引(IfIndex)的大小顺序存储到一个DTQ双向链表中。此外,你还需要将接口索引为偶数的接口存储在另一个DTQ双向链表中。你需要在接口信息结构体中添加DTQ_NODE_S字段来存储接口信息。
接口信息结构体定义为:
typedef struct tagInterfaceInfo {
IF_INDEX IfIndex;
DTQ_NODE_S stDtqNode;
DTQ_NODE_S stOddDtqNode;
} InterfaceInfo_S;
[答案A4]:
void StoreInterfaceInfo(){
DTQ_HEAD_S stEvenList;
while ((IfIndex = IF_GetNextIfIndexByIter(ulIter)) != 0) {
InterfaceInfo_S pstInterfaceInfo = (InterfaceInfo_S )malloc(sizeof(InterfaceInfo_S));
pstInterfaceInfo->IfIndex = IfIndex;
......}
}
IF_IteratorFini(ulIter);
/ 打印所有接口信息 /
DTQ_NODE_S pstNode;
InterfaceInfo_S pstInterfaceInfo;
DTQ_FOREACH(&stList, pstNode) {
pstInterfaceInfo = DTQ_ENTRY(pstNode, InterfaceInfo_S, stDtqNode);
printf("Interface index: %d\n", pstInterfaceInfo->IfIndex);
}
/ 打印偶数索引接口信息 /
DTQ_FOREACH(&stEvenList, pstNode) {
pstInterfaceInfo = DTQ_ENTRY(pstNode, InterfaceInfo_S, stOddDtqNode);
printf("Even index interface: %d\n", pstInterfaceInfo->IfIndex);
}
}
本示例中,将模糊化处理后的第三QA对,去模糊化处理,得到与原第一QA对相匹配的第四QA对。比如将第三QA对中的Q3,“将这些航班信息根据航班索引(FlightIndex)的大小顺序存储到一个DTQ双向链表中。此外,你还需要将航班索引为偶数的航班存储在另一个DTQ双向链表中”,按照上述映射关系,“接口管理(IF)<->航班管理”做逆向变换,将航班信息还原为接口索引,得到问题Q4。
部分问题Q4如下:将这些接口信息根据接口索引(IfIndex)的大小顺序存储到一个DTQ双向链表中。此外,你还需要将接口索引为偶数的接口存储在另一个DTQ双向链表中。
步骤S106:将至少一个第四QA对作为符合私域API的有监督微调SFT数据集传输至训练模型,以使所述训练模型利用所述SFT数据集训练出大语言模型。
将上述经Evo-instruct深化拓展后的第四QA对传输至训练模型,以使所述训练模型利用所述Evo-instruct后的数据训练生成具备GPT4功能的大语言模型。具体地,将上述至少一个第四QA对,作为高质量的STF数据原料输入至训练模型中,训练后生成SFT数据集,进而得到具备诸如GPT4功能的私有模型LLM。
本实施例提供的方法,通过对私域的API数据进行组合,生成若干条目,随机生成大量覆盖多个业务范围的SFT用例,以此增加了chatGPT私域数据源的广度,对私域的基础数据进行广度上扩展,从而增加了广度;克服了chatGPT私域知识不足,无法广度扩展的问题。
另外,通过对至少一个QA对进行模糊化处理,增加每个QA对的复杂度和多样性,防止私域API数据在演化过程中被窃取和信息泄露,以及将私域数据安全的发送给公域的高性能模型进行扩展,从而得到高质量的私域SFT数据集,为后续模型训练提供依据。
可选的,在本实施例中,假设上述私域的API数据包括:第一API基础数据和第二API基础数据,其中第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集。比如,第一API集合中包括:API子集1、API子集2和API子集3,共3个子集。类似地,第二API集合中包括:API子集4~API子集8,共5个子集;每个API子集用于实现某一种功能,则第一API集合具备3个功能,第二API集合具备4个功能。
上述步骤S102,根据所述私域的API数据组合出若干条目,具体包括:将从所述第一API集合中选择出的一个或多个的API子集,与,从所述第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,所述条目具有被选出的所有API子集的功能。
其中,选择方式可以随机选择,比如从第一API集合中选择API子集1,与第二API集合中选择出的API子集4进行组合,生成一个包含API子集1和API子集4两个功能的第一条目,从而相比于组合前,新增了API功能,拓展了API数据功能。
可选的,上述组合还可以选择其他API子集做结合,比如API子集3与API子集4组合,生成第二条目;或者API子集1、API子集3和API子集5组合,生成第三条目,或者还可以包括其他更多组合,本实施例对此不做限制。
另外,根据上述组合生成的若干个条目,比如第一条目至第三条目,和用于描述所述API数据的数据结构,生成至少一个第一QA对,具体包括:将组合生成的条目填充至预设模板中,生成第一指令;将该第一指令输入至AI算法模型中,输出所述第一QA对。
其中,预设模板的生成过程如下:
先获取基础模板样本,在该基础模板样本上填充占位信息,生成第一指令,将该第一指令输入至本地AI算法模型中,输出一个第一QA对。同理地,将第二条目填充中该预设模板中,生成第二指令,将该第二指令输入至本地AI算法模型中,输出另一第一QA对。
本实施例通过对私域的API基础数据划分成不同的API子集,将不同API子集进行组合,生成若干条目,以此增加了chatGPT私域数据源的广度,使得对私域的基础数据进行广度上扩展。
可选的,上述实施例提供的方法,还可以通过多个模块来实现,例如图3所示,可通过以下模块实现:
获取模块,用于接收来自外部的API数据源,并将该API数据源发送至混合模块,对应于前述步骤S101。
混合模块(Mix模块),负责私域数据的广度扩展,可执行前述步骤S102,用于解决传统的Evo-instruct在私域数据上无法进行广度扩展的问题。
模糊化模块(Obfuscate模块),用于利用私有部署的LLM将私域知识进行伪装,并生成至少一个第二QA对,具体参见前述步骤S103。
拓展模块,又可称为Evo-instruct模块,用于在模糊化模块输出的第二QA对基础上,对代码数据上进行深度扩展,输出第三QA对,使得第三QA对相比于第二QA对,结构更复杂、更多样化,具体过程参见前述步骤S104。
清晰化模块(De-obfuscate模块),用于将拓展模块输出的第三QA对进行去模糊化处理,恢复成私有API数据相关的形式,得到第四QA对。
输出模块,用于将第四QA对作为符合私域API的SFT数据集输出至训练模型,为下一步训练模型模块提供训练数据,对应于前述步骤S106。
此外,在步骤S101之前,API数据源提供的步骤中,还可以通过API域模块(ModuleAPI Domain)生成并提供私域的API数据给混合模块。
具体地,上述各个模块的功能参见前述方法实施例的步骤S101至S106,本实施例不再赘述。
在本实施例中还提供了一种私域数据的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种私域数据的生成装置,如图4所示,该装置包括:获取模块410、混合模块420、模糊化模块430、拓展模块440、清晰化模块450和输出模块460。此外,该装置中还可以包括其他更多或更少的模块,比如存储模块,本实施例对此不作限制。
其中,获取模块410,用于获取应用程序编程接口API数据源。
混合模块420,用于根据所述私域的API数据组合出若干条目,并根据所述若干条目和所述数据结构,得到至少一个第一QA对。
模糊化模块430,用于按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表,该映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的关系。
拓展模块440,用于对所述至少一个第二QA对进行构建,生成至少一个第三QA对。
清晰化模块450,用于根据所述映射关系表,对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集。
输出模块460,用于将至少一个第四QA对作为符合私域API的有监督微调SFT的数据集传输至训练模型,以使所述训练模型利用所述SFT的数据集训练出大语言模型。
可选的,在一种具体的实施方式中,所述私域的API数据包括:第一API基础数据和第二API基础数据,第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集。
模糊化模块430,具体用于将从第一API集合中选择出的一个或多个的API子集,与,从第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,该条目具有被选出的所有API子集的功能。
可选的,在另一种具体的实施方式中,模糊化模块430,具体还用于将所述组合生成的条目填充至预设模板中,生成第一指令,以及将第一指令输入至AI算法模型中,输出所述第一QA对。
可选的,在又一种具体的实施方式中,模糊化模块430,具体还用于获取每个所述第一QA对所对应的代码;改变每个所述第一QA对的代码所在的条件空间、或者改变所述代码的函数风格、或者改变所述代码的函数参数,生成所述至少一个第二QA对。
可选的,在又一种具体的实施方式中,模糊化模块430,具体还用于利用本地大规模语言模型LLM将所述第一QA对的代码所在的条件空间变换为与当前领域不同的领域。
和/或,将所述代码的函数命名风格改变。
和/或,在所述函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序。
可选的,在又一种具体的实施方式中,清晰化模块450,具体用于利用映射关系表,对至少一个第三QA对做逆向变换,得到符合私域API的至少一个第四QA对,以及将至少一个第四QA对作为所述SFT的数据集,输出至输出模块460。
本实施例中的私域数据的生成装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例提供的装置,针对公域LLM,提出了一种框架,解决了传统Evo-instruct不适合私密数据的限制。其中,混合模块进行私域数据混合,组合出若干条目,从而扩展QA的广度。模糊化模块430和清晰化模块450分别对至少一个QA对进行模糊化和清晰化处理,从而提高数据的安全性,利用已有的Evo-instruct进行深度扩展,构建输出大量高质量SFT数据集,为后续模型训练生成具有chatGPT功能的LLM模型提供依据。
本发明实施例还提供一种计算机设备,具有上述图4所示的私域数据的生成装置。
请参阅图5,是本发明实施例提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。
在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图5中以一个处理器10为例。
处理器10可以是中央处理器CPU,网络处理器或其组合。此外,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行上述实施例示出的私域数据的生成方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。可选的,上述通信接口30的数量可以是一个或多个。
此外,上述计算机设备还包括输入装置和输出装置(在图5中未示出)。且处理器10、存储器20、输入装置和输出装置可以通过总线或者其他方式连接。
其中,输入装置可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的私域数据的生成方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (12)

1.一种私域数据的生成方法,其特征在于,所述方法包括:
获取应用程序编程接口API数据源,所述API数据源中包括私域的API数据以及用于描述所述API数据的数据结构;
根据所述私域的API数据组合出若干条目,并根据所述若干条目和所述数据结构,得到至少一个第一QA对;
按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表,所述映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的对应关系;
对所述至少一个第二QA对进行深化拓展,得到至少一个第三QA对;
根据所述映射关系表,对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集;
将所述至少一个第四QA对作为符合私域API的有监督微调SFT数据集传输至训练模型,以使所述训练模型利用所述SFT数据集训练出大语言模型。
2.根据权利要求1所述的方法,其特征在于,所述私域的API数据包括:第一API基础数据和第二API基础数据,第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集;
所述根据所述私域的API数据组合出若干条目,具体包括:
将从所述第一API集合中选择出的一个或多个的API子集,与,从所述第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,所述条目具有被选出的所有API子集的功能。
3.根据权利要求2所述的方法,其特征在于,所述根据所述若干条目和所述数据结构,生成至少一个第一QA对,具体包括:
将所述组合生成的条目填充至预设模板中,生成第一指令;
将所述第一指令输入至AI算法模型中,输出所述第一QA对。
4.根据权利要求1所述的方法,其特征在于,所述按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对,具体包括:
获取每个所述第一QA对所对应的代码;
改变每个所述第一QA对的代码所在的条件空间、或者改变所述代码的函数风格、或者改变所述代码的函数参数,得到所述至少一个第二QA对。
5.根据权利要求4所述的方法,其特征在于,所述改变每个所述第一QA对的代码所在的条件空间,具体包括:
利用本地大语言模型LLM将所述第一QA对的代码所在的条件空间变换为与当前领域不同的领域;
所述改变所述代码的函数风格,包括:将所述代码的函数命名风格改变;
所述改变所述代码的函数参数,包括:在所述函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述根据所述映射关系表对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,包括:
利用所述映射关系表,对所述至少一个第三QA对做逆向变换,得到至少一个第四QA对,并将所述至少一个第四QA对作为所述SFT数据集。
7.一种私域数据的生成装置,其特征在于,所述装置包括:
获取模块,用于获取应用程序编程接口API数据源,所述API数据源中包括私域的API数据以及用于描述所述API数据的数据结构;
混合模块,用于根据所述私域的API数据组合出若干条目,并根据所述若干条目和所述数据结构,得到至少一个第一QA对;
模糊化模块,用于按照预设规则,对所述至少一个第一QA对进行模糊化处理,得到至少一个第二QA对和映射关系表,所述映射关系表用于描述模糊化处理前后第一QA对与第二QA对之间的关系;
拓展模块,用于对所述至少一个第二QA对进行深化拓展,生成至少一个第三QA对;
清晰化模块,用于根据所述映射关系表,对所述至少一个第三QA对进行清晰化处理,得到至少一个第四QA对,第四QA对为符合私域API的有监督微调SFT数据集;
输出模块,用于将所述至少一个第四QA对作为符合私域API的有监督微调SFT数据集传输至训练模型,以使所述训练模型利用所述SFT的数据集训练出大语言模型。
8.根据权利要求7所述的装置,其特征在于,所述私域的API数据包括:第一API基础数据和第二API基础数据,第一API基础数据对应第一API集合,第二API基础数据对应第二API集合,每个API集合中包含一个或多个API子集;
所述模糊化模块,具体用于将从所述第一API集合中选择出的一个或多个的API子集,与,从所述第二API集合中选择出的一个或多个的API子集进行组合,生成一个条目,所述条目具有被选出的所有API子集的功能。
9.根据权利要求8所述的装置,其特征在于,所述模糊化模块,具体用于将所述组合生成的条目填充至预设模板中,生成第一指令,以及将所述第一指令输入至AI算法模型中,输出所述第一QA对。
10.根据权利要求7所述的装置,其特征在于,所述模糊化模块,具体用于获取每个所述第一QA对所对应的代码;改变每个所述第一QA对的代码所在的条件空间、或者改变所述代码的函数风格、或者改变所述代码的函数参数,生成所述至少一个第二QA对。
11.根据权利要求10所述的装置,其特征在于,所述模糊化模块,具体用于利用本地大语言模型LLM将所述第一QA对的代码所在的条件空间变换为与当前领域不同的领域;将所述代码的函数命名风格改变;以及在所述函数参数中随机添加至少一个无实质作用的参数,和/或,改变函数参数之间的顺序。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述清晰化模块,具体用于利用所述映射关系表,对所述至少一个第三QA对做逆向变换,得到至少一个第四QA对,并将所述至少一个第四QA对作为所述SFT数据集。
CN202311546225.2A 2023-11-20 2023-11-20 一种私域数据的生成方法、装置、设备和存储介质 Active CN117252251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311546225.2A CN117252251B (zh) 2023-11-20 2023-11-20 一种私域数据的生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311546225.2A CN117252251B (zh) 2023-11-20 2023-11-20 一种私域数据的生成方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN117252251A true CN117252251A (zh) 2023-12-19
CN117252251B CN117252251B (zh) 2024-03-12

Family

ID=89137351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311546225.2A Active CN117252251B (zh) 2023-11-20 2023-11-20 一种私域数据的生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN117252251B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130268357A1 (en) * 2011-09-15 2013-10-10 Stephan HEATH Methods and/or systems for an online and/or mobile privacy and/or security encryption technologies used in cloud computing with the combination of data mining and/or encryption of user's personal data and/or location data for marketing of internet posted promotions, social messaging or offers using multiple devices, browsers, operating systems, networks, fiber optic communications, multichannel platforms
CN113569263A (zh) * 2021-07-30 2021-10-29 拉扎斯网络科技(上海)有限公司 跨私域数据的安全处理方法、装置及电子设备
CN114970522A (zh) * 2022-05-20 2022-08-30 北京百度网讯科技有限公司 语言模型的预训练方法、装置、设备、存储介质
CN115062003A (zh) * 2022-05-26 2022-09-16 电子科技大学 基于gpt2的云erp社区生成式问答方法
CN116910217A (zh) * 2023-07-24 2023-10-20 上海数珩信息科技股份有限公司 基于小语言模型集群的自然语言问答方法、装置及介质
CN116910535A (zh) * 2023-06-07 2023-10-20 清华大学 一种基于编程的大语言模型免微调预训练方法和装置
CN117009490A (zh) * 2023-08-31 2023-11-07 之江实验室 基于知识库反馈的生成式大语言模型的训练方法和装置
CN117033608A (zh) * 2023-09-28 2023-11-10 中国电子科技集团公司第十研究所 一种基于大语言模型的知识图谱生成式问答方法及***

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130268357A1 (en) * 2011-09-15 2013-10-10 Stephan HEATH Methods and/or systems for an online and/or mobile privacy and/or security encryption technologies used in cloud computing with the combination of data mining and/or encryption of user's personal data and/or location data for marketing of internet posted promotions, social messaging or offers using multiple devices, browsers, operating systems, networks, fiber optic communications, multichannel platforms
CN113569263A (zh) * 2021-07-30 2021-10-29 拉扎斯网络科技(上海)有限公司 跨私域数据的安全处理方法、装置及电子设备
CN114970522A (zh) * 2022-05-20 2022-08-30 北京百度网讯科技有限公司 语言模型的预训练方法、装置、设备、存储介质
CN115062003A (zh) * 2022-05-26 2022-09-16 电子科技大学 基于gpt2的云erp社区生成式问答方法
CN116910535A (zh) * 2023-06-07 2023-10-20 清华大学 一种基于编程的大语言模型免微调预训练方法和装置
CN116910217A (zh) * 2023-07-24 2023-10-20 上海数珩信息科技股份有限公司 基于小语言模型集群的自然语言问答方法、装置及介质
CN117009490A (zh) * 2023-08-31 2023-11-07 之江实验室 基于知识库反馈的生成式大语言模型的训练方法和装置
CN117033608A (zh) * 2023-09-28 2023-11-10 中国电子科技集团公司第十研究所 一种基于大语言模型的知识图谱生成式问答方法及***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TING FANG TAN ET AL: "Generative Artificial Intelligence Through ChatGPT and Other Large Language Models in Ophthalmology: Clinical Applications and Challenges", 《OPHTHALMOLOGY SCIENCE》, pages 1 - 9 *
肖仰华: "生成式语言模型与通用人工智能:内涵、路径与启示", 《学术前沿》, pages 50 - 57 *

Also Published As

Publication number Publication date
CN117252251B (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
US11902413B2 (en) Secure machine learning analytics using homomorphic encryption
Liu et al. From distributed machine learning to federated learning: A survey
EP3168771B1 (en) Poly-logarythmic range queries on encrypted data
Zhang et al. Chaos synchronization in fractional differential systems
CN112106076A (zh) 使用可信执行环境的隐私性增强深度学习云服务
Mugunthan et al. Privacyfl: A simulator for privacy-preserving and secure federated learning
Han et al. Parameter-efficient fine-tuning for large models: A comprehensive survey
EP4147414A1 (en) Quantum computing machine learning for security threats
DE112021001760T5 (de) Tiefeneingeschränkte wissensdestillation für ein schlussfolgern anhand verschlüsselter daten
DE112021004694T5 (de) Trainieren eines frage-antwort-dialogsystems zum vermeiden von gegnerischen angriffen
CN113487024A (zh) 交替序列生成模型训练方法、从文本中抽取图的方法
DE112021000689T5 (de) Attestierung von neuronalen abläufen
Chen et al. Boosting with online binary learners for the multiclass bandit problem
CN117252251B (zh) 一种私域数据的生成方法、装置、设备和存储介质
Benson et al. Learning multifractal structure in large networks
DE102021127203A1 (de) Zugangskontrolle auf Grundlage von tastenspezifischem Fingerabdruck
Galárraga Interactive rule mining in knowledge bases
Davidson et al. Security gets smart with AI
Kovacs et al. Argumentation-based security requirements analysis: Bitmessage case study
CN109657456B (zh) Tcam验证方法及***
CN108959959B (zh) 一种对计算透明的数据隐私保护方法及***
US20240086506A1 (en) Authentication using temporal characters
Levin Submodular Optimization Under Uncertainty
Huang et al. Data mining integrated with domain knowledge
Patwary et al. Personalization in federated recommendation system using SVD++ with explainability

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