CN117992033A - 一种基于aigc的编程方法、装置、设备及存储介质 - Google Patents
一种基于aigc的编程方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117992033A CN117992033A CN202410139878.7A CN202410139878A CN117992033A CN 117992033 A CN117992033 A CN 117992033A CN 202410139878 A CN202410139878 A CN 202410139878A CN 117992033 A CN117992033 A CN 117992033A
- Authority
- CN
- China
- Prior art keywords
- programming
- aigc
- content
- description definition
- requirement
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 230000004044 response Effects 0.000 claims abstract description 58
- 238000011161 development Methods 0.000 claims abstract description 55
- 230000006870 function Effects 0.000 claims abstract description 39
- 238000013461 design Methods 0.000 claims abstract description 29
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 22
- 238000012360 testing method Methods 0.000 claims description 43
- 238000004891 communication Methods 0.000 claims description 18
- 238000004458 analytical method Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 8
- 230000002452 interceptive effect Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 66
- 230000000694 effects Effects 0.000 abstract description 4
- 238000012549 training Methods 0.000 description 76
- 230000018109 developmental process Effects 0.000 description 54
- 238000012545 processing Methods 0.000 description 31
- 238000004422 calculation algorithm Methods 0.000 description 17
- 230000010354 integration Effects 0.000 description 17
- 238000002372 labelling Methods 0.000 description 17
- 238000005457 optimization Methods 0.000 description 14
- 238000010276 construction Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 11
- 238000010801 machine learning Methods 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 239000000047 product Substances 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000010200 validation analysis Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 230000002787 reinforcement Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000003058 natural language processing Methods 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000013515 script Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 3
- 230000035772 mutation Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- XSQUKJJJFZCRTK-NJFSPNSNSA-N UREA C 14 Chemical compound N[14C](N)=O XSQUKJJJFZCRTK-NJFSPNSNSA-N 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000013486 operation strategy Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 102000054765 polymorphisms of proteins Human genes 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000013526 transfer learning Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 241000380131 Ammophila arenaria Species 0.000 description 1
- 241000282320 Panthera leo Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种基于AIGC的编程方法、装置、设备及存储介质,首先获取编程设计要求内容;然后基于人工智能生成内容AIGC对编程设计要求内容进行解析,生成编程设计要求内容的响应结果;进而通过分析响应结果,可以生成编程操作描述定义;最后利用查询语言驱动执行编程操作描述定义,生成初始化开发环境和基础实现功能代码。本申请利用人工智能生成内容AIGC实现基于编程设计要求内容的自动化编程。相较于程序员根据业务需求进行人工编程的方案,不需要程序员重复同样的步骤流程,解决了编程过程繁琐冗余的问题,并且避免了受人工主观影响编程的效果较差的问题。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于AIGC的编程方法、装置、设备及存储介质。
背景技术
编程是程序员基于计算机语言(一般为高级语言)按照设计需要,结合算法和调用规则,实现业务功能或达成计算结果的创造性劳动。面向对象的程序设计(ObjectOriented Programming,OOP)是一种计算机编程架构。OOP的基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达成了软件工程的三个主要目标:复用性、灵活性和扩展性。OOP的基本概念包括:对象、类、集成、多态和消息,其核心概念是类和对象。
现有技术中,一般是程序员根据业务需求进行人工编程,一方面,面向对象的编程存在很多模式化的处理流程,在实际操作中总是需要重复同样的步骤流程;另一方面,人为交互过程中往往根据个人想法忽视或遗漏某些步骤或细节,虽然本质上不会对功能实现产生影响,但由此积累的负面因素往往是造成后续代码质量、可维护性和可扩展性的隐患或根结成因。因此,现有技术存在编程过程繁琐冗余,受人工主观影响编程的效果较差的问题。
发明内容
本申请提供了一种基于AIGC的编程方法、装置、设备及存储介质,用以解决人工编程带来的编程过程繁琐冗余,受人工主观影响编程的效果较差的问题。
第一方面,本申请提供了一种基于AIGC的编程方法,所述方法包括:
获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;
根据所述响应结果,生成编程操作描述定义;
利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
第二方面,本申请提供了一种基于AIGC的编程装置,所述装置包括:
编程设计要求内容获取模块,用于获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;
编程操作描述定义生成模块,用于根据所述响应结果,生成编程操作描述定义;
编程代码生成模块,用于利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
第三方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现所述的方法步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法步骤。
本申请提供了一种基于AIGC的编程方法、装置、设备及存储介质,所述方法包括:获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;根据所述响应结果,生成编程操作描述定义;利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
上述的技术方案具有如下优点或有益效果:
本申请中,首先获取编程设计要求内容;然后基于人工智能生成内容AIGC对编程设计要求内容进行解析,生成编程设计要求内容的响应结果;进而通过分析响应结果,可以生成编程操作描述定义;最后利用查询语言驱动执行编程操作描述定义,生成初始化开发环境和基础实现功能代码。本申请利用人工智能生成内容AIGC实现基于编程设计要求内容的自动化编程。相较于程序员根据业务需求进行人工编程的方案,不需要程序员重复同样的步骤流程,解决了编程过程繁琐冗余的问题。并且避免了受人工主观影响编程的效果较差的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的基于AIGC的编程过程示意图;
图2为本申请提供的基于AIGC的编程过程示意图;
图3为本申请提供的基于AIGC的编程系统架构图;
图4为本申请提供的基于AIGC的编程详细架构图;
图5为本申请提供的基于DAG构建指令节点处理器驱动执行构建应用的过程示意图;
图6为本申请提供的基于AIGC的编程详细流程图;
图7为本申请提供的基于AIGC的编程装置结构示意图;
图8为本申请提供的电子设备结构示意图。
具体实施方式
为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
面向对象的程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达成了软件工程的三个主要目标:复用性、灵活性和扩展性。OOP的基本概念包括:对象、类、集成、多态和消息,其核心概念是类和对象。
相关技术中,面向对象的程序开发流程如下:
1、程序员选取合适的面向对象开发语言,如:Java,Go,Python等;
2、针对选定的程序语言,结合开发业务功能,选择合适的程序框架。如:Java项目一般选取Spring Boot基础框架,叠加MyBatis-plus数据库框架和MVC Web服务框架等;
3、通过程序框架所受支持的依赖管理服务,实现技术框架的依赖配置和拉取装配。如:Python通过解析requirements.txt依赖清单文件,该文件包含框架功能所需依赖项名称及特定版本号,由pip工具实现从远端或本地私服库拉取依赖到项目开发指定的类路径下;
4、程序员按照框架配置要求,填写必需项或覆盖默认项满足定制化要求。如:Spring Boot项目配置文件为application.properties,该配置文件最小化可为空,即一切皆为默认值;如需定制Web服务端口号,则需添加ports=8088配置项;
5、程序员按照技术框架依赖注入要求,创建包结构,接口、实现类和注解配置。如:Go语言beego Web框架需按照文件目录的形式组织包结构,一般分为:models、controllers、services、dao和routes五类目录,分别对应存放模型类,Web请求响应处理器类,业务逻辑实现类,数据操作访问类和请求路由配置类代码内容;
6、根据功能编写单元测试代码。测试代码作为构建流程的重要环节,有助于高质量代码功能实现。如:Python语言使用pytest框架,以@testcase注解标识每条测试用例,以@fixture构建mock资源,框架约定函数名以test_作为前缀,pytest框架据此按包粒度驱动整个单元测试过程;
7、通过依赖打包工具,按照配置,完成编译、测试和打包过程。如:Java语言一般使用Maven打包工具,参照项目根目录下的pom.xml文件获取依赖资源,通过mvn package指令,该指令触发若干任务环节,一般包括:pre-compile、dependencies、compile、test和package处理环节;
8、配置自动化持续集成处理过程。如:Gitlab代码托管仓库提供Gitlab-CI持续集成定义、开发功能,通过在应用代码仓库编写.gitlab-ci.yml文件,以YAML格式编写shell脚本,在代码提交、合并事件发生时触发,在项目对应挂载的Gitlab-Runner中按照配置要求执行YAML定义操作,从而实现持续集成任务。
相关技术存在的技术问题为:
上述面向对象的编程存在很多模式化的处理流程,在实际操作中总是需要重复同样的步骤流程。人为交互过程中往往根据个人想法忽视或遗漏某些步骤或细节,虽然本质上不会对功能实现产生影响,但由此积累的负面因素往往是造成后续代码质量、可维护性和可扩展性的隐患或根结成因。如:程序开发人员往往会因为繁琐而忽视代码的测试用例编写,导致代码发布时由于用例验证不足导致出现Bug;另外,在代码开发设计环节忽视代码版本托管,协作开发和持续集成部署方案的设置,会造成集成调试阶段出现中断或错误,没有协作的开发过程更趋向于闭门造车,缺乏整体观、全局观,导致联调环节问题不断。程序开发设计人员在执行开发任务时,往往会深陷于同类繁冗重复的模式化流程,不能将主要精力发挥在业务设计、算法优化和性能改善等环节。基于目前AIGC能力凸显在编程领域的辅助支持效果,仅停留在提出问答,获取答案,而具体工作还得靠人工进行,没能将基于AIGC的全流程编程自动化打通。
本申请为了解决相关技术中存在的上述问题,提供了一种基于DAG与AIGC技术实现自动化编程,不仅可以避免重复编写繁长冗余的模式化代码,也可以确保大部分情况下程序不会从基础层面出现纰漏,如:内存泄漏,未初始化和配置与实现分离等,此外基于AIGC的生成方案也可以实现程序代码的具备良好的可维护性和可扩展性。
本申请提供的基于AIGC的编程方法所涉及的技术解释如下:
AIGC,即人工智能生成内容,是一种新型的内容创作方式,它继承了PGC(Professional-generated Content)专业生成内容和UGC(User-generated Content)用户生成内容的优点,并充分发挥技术优势,形成全新的内容生成与交互形态。
大模型训练,即通过对已有数据进行学习和模式识别,以适当的泛化能力生成相关内容的技术,可以基于人工智能生成文字、图像、音频等媒体内容。
AIGC技术的实现涉及多个方面,本申请主要涉及其中包含的机器学习、自然语言处理和优化算法方面的技术。
机器学习:
机器学习是AIGC技术的核心之一。它是一种通过数据训练模型来实现自主学习和智能决策的方法。本申请中,机器学习可作为创建智能代理,扮演程序开发者角色,根据输入的业务需求描述自动进行决策和执行不同的处理任务。
自然语言处理:
自然语言处理是另一个重要的AIGC技术。它使计算机能够理解和生成自然语言。在本申请中,自然语言处理可被利用为理解分析程序开发人员输入的业务需求内容,从对话形式的描述语句中,进行识别分析为应用模型进行决策提供依据。
优化算法:
优化算法是指通过计算机自动优化策略提高计算执行效率和性能。在本申请中,优化算法被用于机器学习的强化学习阶段对基本业务逻辑处理的优化和改进,提高根据需求描述自动产生的程序代码的质量和执行效率。
DAG(Directed Acyclic Graph)即有向无环图,是指任意一条边有方向且不存在环路的图。本申请使用该技术用于解析处理AIGC应答方案相关资源的依赖关系问题。把依赖关系建模成DAG,成为Graph中的Direct Edge,通过拓扑排序,不断遍历和剔除无依赖的节点,达到快速解决依赖的目的。
GraphQL是Facebook开发的一种API查询语言。GraphQL既是一种查询语言也提供了一个数据查询、变更操作的运行环境。通过提供一个DAG描述定义,可以通过客户端发送GraphQL查询语句,通过依次回调各环节点解析器(Resolver),实现在DAG描述定义的节点进行查询检索、变更修改数据内容的操作。
图1为本申请提供的基于AIGC的编程过程示意图,该过程包括以下步骤:
S101:获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果。
S102:根据所述响应结果,生成编程操作描述定义。
S103:利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
本申请提供的基于AIGC的编程方法应用于电子设备,该电子设备可以是PC、电脑等设备,也可以是服务器。
电子设备获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果。在获取编程设计要求内容时,可以通过问题生成的方式采集用户描述的包含编程设计要求内容的问题需求,通过解析问题需求,可以获取其中携带的编程设计要求内容。在采集用户描述的包含编程设计要求内容的问题需求时,本申请提供了两种方式。第一种方式:通过需求提问的方式,采集用户描述的包含编程设计要求内容的问题需求。第二种方式:通过需求选择的交互问答形式,采集用户描述的包含编程设计要求内容的问题需求。
电子设备通过需求提问或需求选择的交互问答形式,采集用户描述的包含编程设计要求内容的问题需求。通过解析问题需求,可以获取其中携带的编程设计要求内容。然后基于人工智能生成内容AIGC生成编程设计要求内容的响应结果。具体的,基于AIGC对问题需求进行描述预处理和问题要素提取,描述预处理和问题要素提取包括去除口语化,匹配、抽取、提炼问题要素的过程。然后将描述预处理和问题要素提取后的问题需求转换为向AIGC提问的内容形式,并生成内容形式的问题需求的响应结果。
电子设备基于AIGC生成编程设计要求内容的响应结果之后,根据响应结果,生成编程操作描述定义。具体的,将响应结果转换为有向无环图DAG的数据结构,根据DAG的数据结构生成DAG编程操作描述定义。其中,用户描述问题需求,通过提问或选择的交互问答形式,收集程序设计任务需求;AIGC Prompt生成服务生成精炼后的,即去除口语化,匹配、抽取、提炼问题要素的过程,AIGC基于精炼后的提问可提供明确有效的响应结果;之后,将提问发送至AIGC服务;AIGC服务响应解析服务负责接收并解析AIGC服务处理上步提问的应答内容;将响应内容通过分装为可被本申请作为DAG转换的数据交换结构形式;AIGC服务以若干步骤形式生成响应结果,DAG生成服务会参照先后步骤结合DAG转换数据结构生成可被查询语音解释服务执行的DAG描述定义,即编程操作描述定义。
电子设备生成编程操作描述定义之后,利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。查询语言包括但不限于是GraphQL查询语音。利用查询语言GraphQL驱动执行所述DAG编程操作描述定义,生成初始化开发环境和基础实现功能代码。
具体的,DAG编程操作描述定义中包括生成测试用例环节描述定义和生成持续集成配置环节描述定义。
生成DAG编程操作描述定义之后,通过解析DAG编程操作描述定义,可以获取到其中的生成测试用例环节描述定义和生成持续集成配置环节描述定义。
进而,获取所述DAG编程操作描述定义中的生成测试用例环节描述定义;利用查询语言GraphQL驱动执行所述生成测试用例环节描述定义,为已生成的所述初始化开发环境和基础实现功能代码,通过AIGC推理分析,生成匹配的测试用例代码。获取所述DAG编程操作描述定义中的生成持续集成配置环节描述定义;利用查询语言GraphQL驱动执行所述生成持续集成配置环节描述定义,关联配置匹配的版本管理仓库。
本申请提供的基于AIGC的编程方法中,程序设计人员提交编程设计要求内容给AIGC服务,通过AIGC推理分析,获取针对该需求设计描述的响应结果;基于本申请的装置及计算设备解析响应结果,生成配置、资源调用的DAG;基于生成的DAG有关配置、资源调用相关环节描述定义,通过GraphQL查询语言框架驱动执行该DAG描述定义,依次生成配置并获取资源,为程序设计人员配置并初始化开发环境和基础实现功能代码;基于生成的DAG有关生成测试用例环节定义,通过GraphQL查询语言框架驱动执行所述部分DAG描述定义,为已生成的初始化开发环境和基础实现功能代码,通过AIGC推理分析,自动生成匹配的测试用例代码;基于生成的DAG有关生成持续集成配置环节描述定义,通过GraphQL查询语言框架驱动执行所述部分DAG描述定义,关联配置合适的版本管理仓库,例如Gitlab、JFrog、Gogits等。实现针对该AIGC生成程序开发项目的自动持续集成方案。
本申请中,获取编程设计要求内容,基于人工智能生成内容AIGC技术中的机器学习生成所述编程设计要求内容的响应结果。
机器学习涉及的模型训练过程说明如下:
机器学习涉及的模型为可在本地化部署的通用大语言模型(LLM),如:Llama2-7B,Llama2-13B,baichuan2-7B,baichuan2-13B等。
训练过程一般为:无监督预训练和监督微调两部分。
无监督预训练过程说明如下:
预训练属于迁移学习的范畴。神经网络通过预训练过程,一般基于反向传播(BackPropgration)算法,先对网络中的参数进行随机初始化,再利用随机梯度下降(StochasitcGradient Descent,SDG)等优化算法不断优化模型参数。
预训练的思想是,模型参数不再是随机初始化的,而是通过一些任务进行预训练而得到的一套模型参数,然后基于这套参数对模型进行初始化,再进行训练。
即通过大量的程序设计过程和算法推理代码文本进行无监督的预训练过程。预训练过程能够捕获程序开发人员在开发过程中编写代码的基本内容特征,使得大语言模型形成理解程序开发人员编程的关键内容的基础结构。一般而言,模型参数越多:7B,10B,130B(B为10亿),需要的预训练数据就越多,预训练完成后的推理能力就越好。
本申请采用无监督预训练在于使用大量未标记的程序设计过程和算法推理代码文本训练语言模型,使其能够理解和生成满足需要的程序开发语言代码内容。在进行无监督预训练时,通过上下文的词来预测下一个词。如,给定一个无监督的算法描述语料,U={u1,u2,…,un},来预测下一个代码片段内容,属于自回归模型,即AR模型。AR模型从上文学习,并将上一步的结果作为回归模型的输入,以预测下一组程序代码片段内容。在预测时,AR模型只能看到上文的词,而不知晓下文的词。AR模型通常用于生成式任务,尤其是长代码内容的生成过程。
监督微调过程说明如下:
监督微调是在预训练完成的语言模型基础上,通过使用有标注的特定任务数据进一步微调,从而使得模型具备遵循指令的能力。无监督的预训练后,模型只具备下一个程序指令的预测能力,还不能够理解并遵循程序开发一般的代码书写过程。为了能够使得模型具有理解并响应程序开发人员编写代码的能力,需要采用监督学习、奖励模型以及强化学习进行进一步的微调,即RLHF。具体可以分为三个步骤:
第一步:SFT监督微调训练监督策略模型。即在训练大语言模型过程中,需要标注者参与监督过程。
第二步:奖励模型训练。借助标注者标注信息,训练奖励模型,为监督策略建立评价标准。
第三步:PPO强化学习模型训练。采用近端策略优化进行强化学习。近端策略优化简称PPO,是一种(无模型)基于策略优化梯度的算法。该算法旨在学习一种策略,可以根据训练期间的经验最大化获得的累积奖励。通过监督学习生成PPO模型,将最优结果用于优化和迭代原有的PPO模型参数。
模型训练和部署的应用过程说明如下:
1、数据采集与集成。
2、定义数据需求:根据程序设计和算法实现的代码需求,确定数据的类型和数据特征。
找到数据源:确定数据来源。这包括公开的业务代码片段、算法示例,推导过程等数据集。
数据收集:从选择的数据源中收集数据。从大量脱敏后的程序代码文件里面获取数据。
数据存储:将收集到的数据存储按照不同语言、算法分类存储在OSD对象库。
数据集成:如果数据来自多个来源,需要对数据进行排序,数据分组,或将同一纬度数据进行合并。
3、数据清洗与预处理。
收集的原始数据通常含有噪声、缺失值、错误数据等,所以首先要对数据进行清洗。清洗后的数据要进行一系列预处理操作,如归一化、编码转换等,使其适合输入到模型中。数据清洗和预处理是模型训练重要步骤。
数据质量检查:这是数据清洗的第一步,其中涉及识别和处理数据集中的错误、重复值、缺失值和异常值。需要验证数据的完整性、一致性和准确性,确保所有的记录都是准确的,与实际情况相符。
处理缺失值:有多种方法可以处理数据集中的缺失值。包括:删除包含缺失值的记录;用特定值(如列的平均值、中位数或众数)填充缺失值;使用预测模型(如KNN或回归)预测缺失值;或者使用一种标记值来表示缺失值。
处理重复值:如果数据集中存在重复的记录,若是数据收集过程中的错误导致,那么需要删除这些重复的记录。若重复的记录是有业务意义的,则需要根据具体业务情况来判断。
处理异常值:异常值是那些远离其他观察值的值,这些值可能由测量错误或其他原因产生。处理异常值的方法包括:删除这些异常值;使用统计方法(如四分位数间距法)将它们替换为更合理的值;或者使用算法对其进行预测。
数据转换:将数据转换为适合进行分析或建模的形式,例如json格式。
规范化或标准化:将数值特征缩放到同一范围内,如0到1,或者转换为具有零均值和单位方差的值。
4、数据标注。或称数据标记,是一项为原始数据添加元信息的工作,以帮助大模型更好地理解和学习数据。对于监督学习任务,模型需要有标签的数据进行训练,数据标注的目标就是为数据提供特征标签。
数据标注详细流程说明如下:
理解任务需求:首先需要确定标注的数据特征以及数据标注的方式。例如,图像分类任务,需要给每个图像一个分类标签;如果物体检测任务,则需要在图像中的每个目标物体周围画一个边界框,并给出这个物体的分类标签。
制定标注规范:详细解释如何进行数据标注的指南,包括哪些数据应该被标记,应该如何标记,以及如何处理可能出现的问题或歧义。清晰、详细的标注规范可以帮助保持标注的一致性,并提高标注的质量。
选择或开发标注工具:有许多可用的数据标注工具,可以用于各种类型的数据标注任务。标注工具应该方便使用,提高标注效率,并尽可能减少错误。我们使用的标注工具是Label Studio。
进行数据标注:按照标注规范,使用标注工具进行数据标注。
质量检查:检查标注的数据,确保标注的质量。可随机抽查一部分数据,并检查它们是否被正确和一致地标注。
反馈和修正:根据质量检查的结果,如果发现任何问题或不一致,需要及时反馈给标注团队,并修正错误的标注。
5、训练及测试数据准备。
数据通常被划分为训练集、验证集和测试集。训练集用于模型训练,验证集用于超参数调整和模型选择,测试集用于最后的模型性能评估。数据集划分是大模型项目中的一个重要步骤,它可以帮助我们更好地理解模型在未见过的数据上的性能。
数据集划分的详细流程说明如下:
确定划分策略:确定数据集划分的策略,这主要取决于数据集的大小和特性。一般的策略是将数据集划分为训练集、验证集和测试集。在大多数情况下,数据被划分为80%的训练集,10%的验证集和10%的测试集,但具体的划分比例需要根据实际情况来确定。常用的划分方式如下:
随机划分:为了确保每个划分的数据分布与原始数据集相似,通常需要对数据进行随机划分。这可以通过洗牌数据索引来实现。
分层抽样:在某些情况下,需要确保每个划分中各类别的数据比例与整个数据集相同。这称为分层抽样。例如,数据集是一个二分类问题,则训练集、验证集和测试集中正负样本的比例都与整个数据集中的比例相同。
时间序列数据的划分:对于时间序列数据,数据划分的策略可能会不同。通常,我们不能随机划分数据,而是基于时间来划分数据。例如,我们可能会使用前80%的数据作为训练集,然后使用接下来10%的数据作为验证集,最后10%的数据作为测试集。
分割数据:按照你选择的策略,使用编程语言或者数据处理工具来划分数据。
保存数据:保存划分后的数据集,以便于后续的训练和测试。确保训练数据、验证数据和测试数据被正确地保存,并且可以方便地加载。
6、预训练。
数据准备:将经过数据标注与清洗过后的数据进行整理,转化为符合Pre-training格式的训练数据。
模型选择:选择适当的Transformer模型架构的开源大模型,如Baichuan2-13B-Base。
训练框架选择:选择适当的开源大模型训练框架,如LLaMA-Factory。
超参数调整:针对选定的模型和任务,调整超参数,如学习率(learning_rate)、批量大小(batch_size)等,以优化模型训练结果。
硬件资源:大模型的训练通常需要大量的计算资源,包括GPU或者TPU等。确保有足够的硬件资源支持训练过程。在此过程中,我们使用到了8*4090(24G显存)的单机多卡裸金属服务器。
分布式训练:使用分布式训练框架,将模型参数分散在多张显卡或多个设备上进行并行训练,以加速训练过程。在此过程中,为加速训练过程和合理分配显存使用,我们使用到了DeepSpeed Stage3分布式训练方案。
迭代训练:大模型的训练需要经过多个迭代轮次,每轮次都需要对模型进行评估和超参数调整。通常情况下,我们会在某个Epoch或某些Step后,暂停训练过程并进行模型评估,适时调整超参数,以优化模型训练结果。
模型评估:对训练得到的模型进行评估,使用一些标准的评估指标来衡量其训练结果。最直接的方式是查看Loss下降是否平滑,是否存在尖突,下降数值是否处在合理范围内。除此之外,还有C-Eval、CMMLU、MMLU等模型评估方式,分别对模型的不同主题分类进行评估并打分。
微调和下游任务:预训练完成后,还需要通过微调将模型应用到具体的下游任务。
7、微调。
数据准备:将经过数据标注与清洗过后的数据进行整理,转化为符合SFT格式的训练数据。
模型选择:使用上述预训练后的Base模型,或选择适当的开源Chat模型。
训练框架选择、d.超参数调整、e.硬件资源、f.分布式训练、g.迭代训练、h.模型评估:与上述基本一致,不再过多阐述。
模型验证:大模型除在微调外还需要进行模型验证,通常情况下会将训练数据以7-3、8-2、或9-1的比例划分为训练集和验证集,对大模型分别进行训练和验证。如未对大模型进行验证,很可能会出现大模型对训练数据回答很好,对新输入的数据回答差强人意的过拟合显现。
RLHF和下游任务:微调完成后,如有更多的资源,还可以对大模型进行RLHF,以让大模型生成更优质且更符合人类习惯的回答和更安全的隐私机制。
8、模型部署。
大模型部署是指将庞大、复杂的机器学习或深度学习模型应用于实际业务环境的过程。这个过程通常包括多个阶段,涉及到硬件、软件、网络、安全等多个方面。
采用GPU机器,如8卡RTX4090作为大模型运行环境,安装对应的显卡驱动、CUDA、CUDNN,安装相关的pytorch库等相关依赖。如果资源受到所采用模型参数规模(13B以上)限制,可采用8bit量化的方式在每一个GPU上启动一个模型,启动多个模型为了增加模型的并发性。
优化算法在机器学习强化学习(RLHF)的优化处理过程说明如下:
预训练优化的技术策略。
混合精度加速:
混合精度加速是一种利用低精度数据类型(如16位或32位浮点数)进行计算,同时保持模型的高性能的方法。这种技术通过减少数据类型的位宽来降低计算和存储需求,从而提高预训练效率。常见的混合精度加速方法包括自动混合精度(AMP)、BF16等。这些方法在保持模型性能的同时,显著降低了预训练过程中的计算和内存开销。
模型缩放:
模型缩放技术通过利用较小模型的信息来指导较大模型的预训练,从而提高预训练效率。这些方法包括渐进式堆叠、多阶段层训练(MSLT)、复合增长等。它们通过在预训练过程中逐步增加模型的规模、深度和宽度,实现了更快的收敛速度和更高的性能。
初始化技术:
合适的初始化方法对于预训练过程的收敛速度和模型性能至关重要。一些研究者提出了特定的初始化技术,如函数保留初始化(FPI)和高级知识初始化(AKI),以提高大型模型预训练的效率。这些方法通过在预训练初期为大型模型提供良好的初始状态,有助于加快收敛速度并提高最终性能。
优化策略:
优化策略在预训练过程中起到了关键作用。使用优化器,如Lion和Sophia,以提高预训练效率。这些优化器通过调整学习率、动量等超参数,以及引入第二阶信息,实现了更快的收敛速度和更高的内存利用率。此外,通过分布式预训练技术,如数据并行、流水线并行和张量并行等,以利用多设备并行计算来加速预训练过程。
微调数据选择。
微调数据的选择关注于为特定任务选取合适的训练数据。高效的微调数据选择可以降低微调成本,提高模型在目标任务上的性能。
微调数据选择:
任务相关性:选择与目标任务紧密相关的数据,以便模型能快速学习任务特定的知识。
数据筛选:通过评估数据与目标任务的相似性,筛选出最具代表性和价值的样本。
在线学习:利用在线学习策略,根据模型在验证集上的表现动态调整微调数据。
少样本学习:通过元学习、迁移学习等技术,利用少量标注数据实现高效的微调。
参数高效微调。
参数高效微调方法旨在通过减少模型参数的更新来提高微调效率。这些方法主要包括适配器调优、低秩适应和前缀调优等。
适配器调优:适配器调优是一种将适配器模块集成到LLMs中的方法,这些适配器模块可以在微调过程中更新,而模型的其他部分保持不变。适配器可以是串联适配器,每个LLM层都添加一个适配器模块;也可以是并联适配器,每个适配器模块与LLM层并行。适配器调优的典型技术包括LLM-Adapters、Compacter、(IA)3、Meta-Adapters等。
低秩适应:低秩适应(LoRA)是一种通过引入两个低秩矩阵来更新模型参数的方法。在微调过程中,原始模型参数保持不变,而是更新这两个低秩矩阵。LoRA及其变体(如LoRA-FA、LongLoRA等)在保持较高性能的同时,显著降低了微调过程中的计算和内存需求。
前缀调优:
前缀调优在LLMs的每一层添加一系列可训练的前缀令牌,这些令牌针对特定任务进行定制。前缀调优的典型技术包括Prefix Tuning、P-Tuning v2和LLaMA-Adapter。通过使用前缀令牌,这些方法可以在微调过程中实现参数效率和性能提升。
图2为本申请提供的基于AIGC的编程过程示意图,该过程包括以下步骤:
S201:通过需求提问或需求选择的交互问答形式,采集用户描述的包含编程设计要求内容的问题需求;基于AIGC对所述问题需求进行描述预处理和问题要素提取,将所述问题需求转换为向所述AIGC提问的内容形式,并生成所述内容形式的问题需求的响应结果。
S202:将所述响应结果转换为有向无环图DAG的数据结构,根据所述DAG的数据结构生成DAG编程操作描述定义。
S203:利用查询语言GraphQL驱动执行所述DAG编程操作描述定义,生成初始化开发环境和基础实现功能代码。
S204:获取所述DAG编程操作描述定义中的生成测试用例环节描述定义;利用查询语言GraphQL驱动执行所述生成测试用例环节描述定义,为已生成的所述初始化开发环境和基础实现功能代码,通过AIGC推理分析,生成匹配的测试用例代码。
S205:获取所述DAG编程操作描述定义中的生成持续集成配置环节描述定义;利用查询语言GraphQL驱动执行所述生成持续集成配置环节描述定义,关联配置匹配的版本管理仓库。
图3为本申请提供的基于AIGC的编程系统架构图,包括需求采集装置31、问题生成装置32、AIGC响应分析装置33、DAG驱动执行装置34、测试用例生成装置35和持续集成配置装置36。需求采集装置31,用于通过问答或预制选项的形式输入或选择需求描述。问题生成装置32,用于生成优化后的、明确的AIGC提问Prompt内容。AIGC响应分析装置33,用于生成可被GraphQL驱动解析的DAG描述定义。DAG驱动执行装置34,用于为GraphQL执行实现初始化、资源获取接口和上下文环境。测试用例生成装置35,用于将已生成的程序基础功能代码,提交AIGC获取指导,据此生成测试用例。持续集成配置装置36,用于根据采集的需求选项,对接已有或创建新的代码托管仓库并完成持续集成基础配置工作。
本申请提供了一种基于DAG与AIGC的自动化编程方法,通过本申请提供的需求采集装置,为程序设计人员提供输入设计需求或选取预置选项需求采集服务;通过本申请提供的问题生成装置,将描述的问题或需求内容转换为向AIGC提问的内容形式(Prompt),由AIGC生成针对该问题或需求描述的响应处理方案;通过本申请提供的AIGC响应分析装置,生成可被GraphQL驱动执行的DAG操作定义描述;通过本申请提供的DAG驱动执行装置,为GraphQL执行提供初始化操作和获取资源的相关接口;通过本申请提供的测试用例生成装置,分析AIGC已生成的基础功能代码,为其生成相应的测试用例;通过本申请提供的持续集成配置装置,结合需求采集装置获取的代码托管要求,为应用程序配置关联相应代码仓库并配置完成预置的持续集成流程。
图4为本申请提供的基于AIGC的编程详细架构图。如图4所示,包括问答采集服务、AIGC Prompt生成服务、AIGC响应解析服务、DAG生成服务、GraphQL执行环境、环节指令执行服务和AIGC人工智能内容生成服务。程序设计人员通过提问或选择的方式描述问题需求并发送至问答采集服务。AIGC Prompt生成服务和AIGC响应解析服务分别与AIGC人工智能内容生成服务进行交互。GraphQL执行环境包括资源查询子服务和变更操作子服务。GraphQL执行环境获取创建配置资源过程的DAG,并向环节指令执行服务下发DAG环节指令。环节指令执行服务包括环节指令执行策略及资源。其中,环节指令执行服务通过Maven仓库、Chart仓库、Nexus制品仓库或者Docker镜像仓库获取资源,并且环节指令执行服务可以向Maven仓库、Chart仓库、Nexus制品仓库或者Docker镜像仓库提交资源,以及向GraphQL执行环境进行DAG环节执行反馈。环节指令执行服务集成或创建代码托管仓库、配置持续集成能力。环节指令执行服务执行Gitlab或者其它代码托管仓库,进而创建基础代码功能和测试用例,通过克隆创建基础代码功能和测试用例,以支持开发人员继续进行本地开发。
图5为本申请提供的基于DAG构建指令节点处理器驱动执行构建应用的过程示意图。包括构建应用策略、构建应用指令节点处理器、准备应用开发环境、获取项目依赖、选取开发框架、所选框架整合生成的配置和代码、生成配置和基础代码。其中,准备应用开发环境可以是通过工作区、虚拟环境和模块定义准备应用开发环境。获取项目依赖可以是通过maven工具、pip工具和go mod工具获取项目依赖。选取开发框架可以是通过Spring Boot工具、Go工具和Flask工具选取开发框架。生成配置和基础代码包括基础功能代码、测试用例、Makefile和持续集成配置。
图6为本申请提供的基于AIGC的编程详细流程图,包括以下步骤:
S601:用户描述问题需求,由问答采集服务子模块提供提问或选择的交互问答形式,收集程序设计任务需求;
S602:AIGC Prompt生成服务生成精炼后的,即去除口语化,匹配、抽取、提炼问题要素的过程,AIGC基于精炼后的提问可提供明确有效的响应结果;之后,将提问发送至AIGC服务;
S603:AIGC响应解析服务负责接收并解析AIGC服务处理上步提问的应答内容;将响应内容通过分装为可被本发明作为DAG转换的数据交换结构形式;
S604:AIGC服务以若干步骤形式生成响应结果,DAG生成服务会参照先后步骤结合DAG转换数据结构生成可被GraphQL解释服务执行的DAG描述定义;
S605:GraphQL执行服务以收到的DAG描述定义,生成GraphQL语句,按类型划分为:获取相关任务执行信息和依赖资源的查询类语句,由资源查询子服务生成;执行配置生成、变更和资源创建的操作类语句,由变更操作子服务生成;
S606:GraphQL执行服务负责生成并执行GraphQL语句,该语句基于DAG描述定义,即若干步骤依次执行操作的有向无环图形式;
执行解释每个步骤操作需要调用由环节指令执行服务提供的环节指令执行策略和相关资源,即每个业务的具体实现处理过程(过程的实现形式可以是一个程序组件,一段执行脚本或SQL存储过程等),指令执行服务会根据环节指令匹配的处理过程内容,关联资源依赖,选择合适的方法策略来实现执行当前环节指令;
S607:环节指令执行服务为AIGC服务生成的基础功能代码通过环节指令执行策略生成对应基础功能代码的测试用例;
S608:环节指令执行服务在执行策略任务时,获取关联的资源依赖可以来源但不限于:Java语言依赖存储的Maven仓库,云原生Kubernetes应用打包Helm Chart仓库,一般制品库Nexus仓库和容器类镜像仓库Docker Registry(Harbor)等;
环节指令执行服务在执行过程中或完成后的产物也会通过各仓库提供的接口推送至目的端点作为阶段或最终产成品的存储空间;
S609:环节指令执行服务在执行完定制的策略任务时,默认为提交的自动化编程任务项目配置或创建一个代码版本托管服务,该类服务可以但不限于:Gitlab,JFrog,Gogits等通用代码托管仓库;
S610:环节指令执行服务在完成配置或创建代码版本托管服务后,会执行对应代码版本托管仓库的持续集成基础服务的生成、配置工作,以实现代码存储,分支版本管理,需求/问题工单,协作开发和持续集成、发布的全链路配置。
本申请提供了一种基于DAG与AIGC的自动化编程方法,利用有效的AIGC Prompt提问形式,通过AIGC人工智能内容生成服务返回具体详细的实现、操作步骤信息;基于该步骤信息,通过分析、转换为DAG描述定义,以GraphQL技术进行查询、变更操作;该类操作会按有向无环图的形式依次选取、关联并调用任务执行实现策略;最终将AIGC人工智能内容生成的任务文字描述落地为可被实际使用的应用项目开发部署方案。将程序设计开发人员从模式化的需求任务分析、环境搭建、资源配置、基础代码实现、测试用例编写、代码版本托管和持续集成配置等若干执行操作中解脱出来,投入更多精力到业务完善、算法优化和性能提升的挑战性工作中去。
本申请提出了一种有效利用基于AIGC人工智能内容生成服务改进、提升程序设计人员开发工作执行效率,代码开发质量和开发流程完备的解决方案;为获取有效、完备的AIGC应答响应形式,本申请通过提供AIGC Prompt生成装置,可以将口语化、有歧义的问题转化提炼为有效的、可被AIGC正确利用并产生有效响应的反馈内容;为解析、转化AIGC响应的分步骤应答结果,本申请提供响应解析和DAG模式生成,将文字步骤表述转化为可被计算机执行的有向无环图执行操作序列形式,为“人机交互”转换提供了基础条件;为驱动执行有向无环图DAG描述定义,本申请提供GraphQL执行环境,作为DAG的落地实现技术,实现分步骤环节的查询、变更操作实现;为支持、辅助分步骤的环节GraphQL查询、变更操作,本申请提供环节指令操作装置,该装置基于环节指令操作策略和资源管理,实现GraphQL驱动的DAG各环节操作的信息查询、配置变更和资源获取、存储等多个任务流程操作;为提升生成代码质量,本申请在通过AIGC自动生成并完成创建基础功能代码的同时会为对应基础功能代码生成测试用例代码;为形成程序设计开发任务闭环,本申请提供配置、创建持续集成服务的环节指令操作策略,为有效代码版本管理、问题追踪和协作开发提供可追溯、多协同、自动化的持续集成部署基础配置能力。
下面通过具体示例对本申请提供的基于AIGC的编程过程进行详细说明。
用户描述的问题需求举例如下:
提问:需要搭建一套使用何种技术栈的开发环境?1、Java 2、Python 3、Go;
回答:1、Java。
提问:需要使用何种环境构建工具?1、Maven 2、Gradle;
回答:1、Maven。
提问:需要使用何种开发框架?1、Spring MVC 2、Struts2 3、JSF 4、JSP;
回答:1、Spring MVC。
提问:需要使用何种数据库服务?1、MySQL 2、Postgres 3、SQLite;
回答:1、MySQL。
AIGC基于提问得到的响应结果和数据交换结构示例如下:
基于上述提问作答映射的响应结构为:
开发环境:Java;构建工具:Maven;开发框架:SpringMVC;数据库服务:MySQL。
构造DAG语句并向DAG引擎发送Mutation变更语句:
根据DAG描述定义,生成GraphQL语句的过程举例如下:
GraphQL代码生成器旨在解决一个问题:在很多情况下,我们发现自己写的是GraphQL已经描述过的东西,只是格式不同;例如:开发语言、框架、构建工具等。通过对schema分析并对其解析,GraphQL代码生成器可以基于预定义插件或基于用户自定义插件输出多种格式代码。
1.定义GraphQL类型
转化为特定语言的数据结构(在此定义为TypeScript语言语法)例如:
安装依赖资源举例如下:
yarn add graphql
yarn add-D@graphql-codegen/cli//用于将GraphQL定义转换为TypeScript语法的工具。
运行命令,将从DAG引擎获取上述GraphQL定义schema,参照TypeScript类型定义生成GraphQL语句对应的查询或操作变更实现。
yarn generate;
创建codegen.yml,用于生成GraphQL对应语言环境的实现。
schema字段:指向GraphQLSchema,可以通过多种方式指定并加载GraphQLSchema,可以指定一个schema字符串,也可以指定多个schemas合并为一个schema。
documents字段:指向自定义的GraphQL语句。query(查询)、mutation(变更操作),subscription(订阅)和fragment(服用片段)。
config字段:将配置传递给插件。
require字段:可以加载外部文件作为补充资料。
使用该配置文件,执行如下命令生成代码;
yarn graphql-codegen-config codegen.yml;
通过插件自动生成的代码举例:
节点处理器。
节点处理器对应于GraphSQL引擎的mutation操作过程实现。
GraphQL操作包括:
查询(query)只读取数据;
变更(mutation)先写入后抓取;
订阅(subscription)响应源事件抓取数据的持久请求;
GraphQL文档可以包含一个或多个此类操作(如多个请求、变更和订阅)对于该节点处理器对应的GraphQL语句可以为:
输入参数$todo传递给节点处理器一个构建描述:创建一个Java Web MVC应用。
通过解析输入的构建描述参数由构建应用策略处理过程选取合适的构建应用节点处理器:Java Web应用构建处理器。
由选中的Java Web应用构建处理器依次执行预定的构建处理环节:准备应用开发环境处理环节,获取项目依赖处理环节,选取并预设开发框架处理环节,生成配置和基础代码处理环节和所选框架整合配置和代码的处理环节。
各处理环节根据DAG图定义的流转方向依次完成各自所定义动作:首先由准备应用开发环境处理环节完成工作区、虚拟环境搭建和各模块定义引用过程;与此同时,获取项目依赖处理环节完成选取对应开发环境依赖的构建工具;在上述两项任务执行完成后,由准备应用开发环境处理环节触发选取开发框架处理环节,根据应用开发环境需求和项目构建依赖情况选取合适的开发框架;基于选取的框架技术栈,由生成配置和基础代码处理环节生成基础功能代码,测试用例,构建过程脚本和持续集成配置信息;最终,由框架整合生成配置和代码处理环节完成开发应用项目代码和配置各相关项的搭建。
图7为本申请提供的基于AIGC的编程装置结构示意图,所述装置包括:
编程设计要求内容获取模块71,用于获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;
编程操作描述定义生成模块72,用于根据所述响应结果,生成编程操作描述定义;
编程代码生成模块73,用于利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
编程设计要求内容获取模块71,用于采集用户描述的包含编程设计要求内容的问题需求,基于AIGC对所述问题需求进行描述预处理和问题要素提取,将所述问题需求转换为向所述AIGC提问的内容形式,并生成所述内容形式的问题需求的响应结果。
编程设计要求内容获取模块71,用于通过需求提问或需求选择的交互问答形式,采集用户描述的包含编程设计要求内容的问题需求。
编程操作描述定义生成模块72,用于将所述响应结果转换为有向无环图DAG的数据结构,根据所述DAG的数据结构生成DAG编程操作描述定义。
编程代码生成模块73,用于利用查询语言GraphQL驱动执行所述DAG编程操作描述定义,生成初始化开发环境和基础实现功能代码。
编程代码生成模块73,用于获取所述DAG编程操作描述定义中的生成测试用例环节描述定义;利用查询语言GraphQL驱动执行所述生成测试用例环节描述定义,为已生成的所述初始化开发环境和基础实现功能代码,通过AIGC推理分析,生成匹配的测试用例代码。
编程代码生成模块73,用于获取所述DAG编程操作描述定义中的生成持续集成配置环节描述定义;利用查询语言GraphQL驱动执行所述生成持续集成配置环节描述定义,关联配置匹配的版本管理仓库。
本申请还提供了一种电子设备,如图8所示,包括:处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信;
所述存储器803中存储有计算机程序,当所述程序被所述处理器801执行时,使得所述处理器801执行以上任一方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口802用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
本申请还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现以上任一方法步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种基于AIGC的编程方法,其特征在于,所述方法包括:
获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;
根据所述响应结果,生成编程操作描述定义;
利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
2.如权利要求1所述的方法,其特征在于,所述获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果包括:
采集用户描述的包含编程设计要求内容的问题需求,基于AIGC对所述问题需求进行描述预处理和问题要素提取,将所述问题需求转换为向所述AIGC提问的内容形式,并生成所述内容形式的问题需求的响应结果。
3.如权利要求2所述的方法,其特征在于,所述采集用户描述的包含编程设计要求内容的问题需求包括:
通过需求提问或需求选择的交互问答形式,采集用户描述的包含编程设计要求内容的问题需求。
4.如权利要求1所述的方法,其特征在于,根据所述响应结果,生成编程操作描述定义包括:
将所述响应结果转换为有向无环图DAG的数据结构,根据所述DAG的数据结构生成DAG编程操作描述定义。
5.如权利要求4所述的方法,其特征在于,所述利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码包括:
利用查询语言GraphQL驱动执行所述DAG编程操作描述定义,生成初始化开发环境和基础实现功能代码。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述DAG编程操作描述定义中的生成测试用例环节描述定义;
利用查询语言GraphQL驱动执行所述生成测试用例环节描述定义,为已生成的所述初始化开发环境和基础实现功能代码,通过AIGC推理分析,生成匹配的测试用例代码。
7.如权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述DAG编程操作描述定义中的生成持续集成配置环节描述定义;
利用查询语言GraphQL驱动执行所述生成持续集成配置环节描述定义,关联配置匹配的版本管理仓库。
8.一种基于AIGC的编程装置,其特征在于,所述装置包括:
编程设计要求内容获取模块,用于获取编程设计要求内容,基于人工智能生成内容AIGC生成所述编程设计要求内容的响应结果;
编程操作描述定义生成模块,用于根据所述响应结果,生成编程操作描述定义;
编程代码生成模块,用于利用查询语言驱动执行所述编程操作描述定义,生成初始化开发环境和基础实现功能代码。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一项所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410139878.7A CN117992033A (zh) | 2024-01-31 | 2024-01-31 | 一种基于aigc的编程方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410139878.7A CN117992033A (zh) | 2024-01-31 | 2024-01-31 | 一种基于aigc的编程方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992033A true CN117992033A (zh) | 2024-05-07 |
Family
ID=90894805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410139878.7A Pending CN117992033A (zh) | 2024-01-31 | 2024-01-31 | 一种基于aigc的编程方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992033A (zh) |
-
2024
- 2024-01-31 CN CN202410139878.7A patent/CN117992033A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180373986A1 (en) | Machine learning using dynamic multilayer perceptrons | |
US20220100963A1 (en) | Event extraction from documents with co-reference | |
EP3699753A1 (en) | Systems and methods for virtual programming by artificial intelligence | |
Burgueno et al. | A generic LSTM neural network architecture to infer heterogeneous model transformations | |
US11934441B2 (en) | Generative ontology learning and natural language processing with predictive language models | |
Le et al. | Interactive program synthesis | |
US11995573B2 (en) | Artificial intelligence system providing interactive model interpretation and enhancement tools | |
CN115964273A (zh) | 基于深度学习的航天器测试脚本自动生成方法 | |
EP4222635A1 (en) | Lifecycle management for customized natural language processing | |
Jackson et al. | From natural language to simulations: Applying gpt-3 codex to automate simulation modeling of logistics systems | |
CN117806980B (zh) | 一种基于大语言模型的测试用例自动生成装置 | |
CN115952298A (zh) | 供应商履约风险分析方法及相关设备 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
Draschner et al. | Distrdf2ml-scalable distributed in-memory machine learning pipelines for rdf knowledge graphs | |
Nilsson et al. | Ai concepts for system of systems dynamic interoperability | |
CN111723021B (zh) | 一种基于知识库和表示学习的缺陷报告自动分派方法 | |
CN110928535B (zh) | 衍生变量部署方法、装置、设备及可读存储介质 | |
Ajgaonkar | Practical Automated Machine Learning Using H2O. ai: Discover the power of automated machine learning, from experimentation through to deployment to production | |
EP4254279A1 (en) | Machine learning pipeline augmented with explanation | |
Ibias et al. | Using ant colony optimisation to select features having associated costs | |
CN117992033A (zh) | 一种基于aigc的编程方法、装置、设备及存储介质 | |
Watson | Deep learning in software engineering | |
Morais et al. | x 2OMSAC-An Ontology Population Framework for the Ontology of Microservices Architecture Concepts | |
Amin | DeepKAF: a knowledge intensive framework for heterogeneous case-based reasoning in textual domains | |
CN118312167B (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 |