CN117008923A - 基于ai大模型的代码生成和编译部署方法、平台和设备 - Google Patents
基于ai大模型的代码生成和编译部署方法、平台和设备 Download PDFInfo
- Publication number
- CN117008923A CN117008923A CN202311275121.2A CN202311275121A CN117008923A CN 117008923 A CN117008923 A CN 117008923A CN 202311275121 A CN202311275121 A CN 202311275121A CN 117008923 A CN117008923 A CN 117008923A
- Authority
- CN
- China
- Prior art keywords
- code
- codes
- data
- api interface
- automatically
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000010354 integration Effects 0.000 claims description 14
- 230000002085 persistent effect Effects 0.000 claims description 6
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 4
- 238000013499 data model Methods 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 230000008676 import Effects 0.000 claims 1
- 238000013473 artificial intelligence Methods 0.000 abstract description 31
- 230000008569 process Effects 0.000 abstract description 16
- 238000011161 development Methods 0.000 abstract description 8
- 230000003993 interaction Effects 0.000 abstract description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 39
- 230000006870 function Effects 0.000 description 23
- 238000007726 management method Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004458 analytical method Methods 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
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了基于AI大模型的代码生成和编译部署方法、平台和设备,属于人工智能技术领域。该方法包括,将项目按照功能结构化拆分为微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,完成数据表结构字段和数据类型定义;调用AI大模型分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;保存所生成的所有代码,并自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将容器镜像部署到服务器集群中。本发明集成了整个软件开发和部署过程,适用于前后端数据交互的复杂场景,提高了开发效率。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及基于AI大模型的代码生成和编译部署方法、平台和设备。
背景技术
大模型是一种基于神经网络和自监督学习技术的,在大规模、广泛来源数据集上训练得到的人工智能基础模型。随着AI大模型能力的突出展现,一个重要的特性就是对软件源代码的理解和代码的生成能力,通过对代码数据训练出来的大模型在代码补全和代码提示方面有着很好的表现。
代码生成用于基于上下文的代码进行下一句代码的推测和补全,或者基于代码注释的描述信息生成一段函数方法的代码片段。通过分析当文件内的已有代码,去推断出下一句代码的可能性,并能减少拼写错误和其他常见的编码错误,以此来加快编码的过程。主要功能包括根据注释生成代码片段、简单的静态界面、简单的单机游戏等使用场景,给予开发者以一定的提示和补全。
尽管现有的代码生成模型有一定的辅助功能,但现有的技术方案存在一些明显的不足和缺陷,主要表现在以下几个方面:首先,现有技术仅能提供代码补全提示或者生成代码片段,无法有效处理包含有前后端数据交互的复杂场景。其次,现有技术无法规范数据交互过程中的数据包格式,无法保证数据传递的一致性和可靠性。此外,现有技术仅了解当前代码文件内的部分代码片段,不了解项目内其他文件的功能和用途,对项目的理解不具备连贯性,即无法从项目完整性的角度去推断和补全,也无法生成比较符合用户需求的代码,能提高的开发效率有限。
发明内容
为了解决现有技术中代码生成过程存在的上述问题,本发明提供了如下技术方案。
本发明在第一方面提供了一种基于AI(人工智能)大模型的代码生成和编译部署方法,包括:
将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口(Application Program Interface,应用程序接口)文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义;
调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;
保存所生成的所有代码,将代码自动提交到GitLab(用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务)仓库,自动触发CICD(CI:Continuous Integration,CD:Continuous Delivery,持续集成、持续交付和持续部署)模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
优选地,所述API接口文档包括字段名称、字段类型、字段描述、是否必填项、是否列表结构、输入类型和输出类型。
优选地,所述定义相应的业务逻辑,进一步包括:
接收接口文档定义的传入参数和传出参数;
将需要实现的业务逻辑编写成提示信息;
将所述提示信息中用户选中的结构替换成已经录入的相关结构的信息。
优选地,所述分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码,进一步包括:
开发针对Scala(一种多范式的编程语言)和TypeScript(一种开源的编程语言)的代码生成器,所述代码生成器基于项目信息存储的数据,结合配置文件、模板信息与AI大模型,自动生成各个层次的代码文件。
优选地,方法进一步包括:
为每一个后端微服务创建专用的Git Submodule(子模块),用于存储公共的API接口定义和数据类型定义,并分别供前后端使用;微服务或前端项目将Submodule添加为子模块,并通过共享代码文件的形式获取API接口定义和数据类型定义;在后端微服务中,生成API接口定义的前后端代码文件,并将这些文件存储在对应Git Submodule中;其他微服务通过引用这些共享的代码文件,导入共享的数据类型定义,实现对API接口的访问和调用。
优选地,所述将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中,进一步包括:
将生成的代码文件直接上传到所述项目所对应的GitLab仓库,一旦代码提交至GitLab,则自动触发CICD模块,用于自动检索代码、执行构建操作并生成容器镜像;其中持续集成CI用于自动集成代码变更到共享代码仓库,持续交付CD基于持续集成,用于自动将代码交付到生产环境或其他部署环境;所述服务器集群为Kubernetes(开源的容器集群管理系统)集群,该Kubernetes集群按照预先设定的规则,将容器部署到服务器节点上,实现对代码的持续集成与持续部署。
优选地,使用结构化数据库PostgreSQL来存储所述项目的各种实体关系、属性和配置信息,所述配置信息包括数据模型、业务逻辑需求、API接口定义,所述结构化数据库提供统一的数据源,供其他模块使用。
本发明在第二方面提供了一种基于AI大模型的代码生成和编译部署平台,包括:
结构化拆分单元,用于将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义;
大模型代码生成单元,用于调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;
编译和部署单元,用于保存所生成的所有代码,将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
本发明第三方面提供了一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器用于读取所述指令并执行前述第一方面的方法。
本发明第四方面提供了一种存储介质,所述存储介质存储有多条指令,所述多条指令可被处理器读取并执行前述第一方面的方法。
本发明的有益效果是:
本发明的基于AI大模型的代码生成和编译部署方法和平台,集成了整个软件开发和部署过程,适用于前后端数据交互的复杂场景,将繁琐的手动操作自动化,从而提高开发效率,减少错误。用户无需精通开发语言,只需要设计API接口和数据结构的字段名称和字段类型,通过快捷操作选择涉及到的表格、数据结构,辅助以自然语言描述函数的业务逻辑,即可交由大模型来生成相应的实现代码,使项目结构清晰,降低了代码的耦合度,便于扩展功能。通过项目代码分块完成来提高大模型代码生成质量。本发明实现了自动编译部署发布上线。
附图说明
图1示出了本发明所述的基于AI大模型的代码生成和编译部署平台的系统架构示意图。
图2示出了本发明所述的基于AI大模型的代码生成和编译部署方法的流程图。
图3示出了本发明所述的自动化代码生成和编译部署平台的操作步骤流程图。
具体实施方式
为了更好地理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案做详细的说明。
本发明提供的方法可以在如下的终端环境中实施,该终端可以包括一个或多个如下部件:处理器、存储器和显示屏。其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行以实现下述实施例所述的方法。
处理器可以包括一个或者多个处理核心。处理器利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行终端的各种功能和处理数据。
存储器可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。存储器可用于存储指令、程序、代码、代码集或指令。
显示屏用于显示各个应用程序的用户界面。
除此之外,本领域技术人员可以理解,上述终端的结构并不构成对终端的限定,终端可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端中还包括射频电路、输入单元、传感器、音频电路、电源等部件,在此不再赘述。
本发明将微服务的设计思想与生成式AI大模型相融合,通过文档填写的方法,实现代码的自动生成、编译和部署。利用自动化代码生成和编译部署平台,以结构化的方式存储项目信息,生成后端Scala与前端TypeScript代码,整合前端、后端、GitLab、Kubernetes(K8s)环境以及数据库,实现了自动化的项目创建、代码生成、提交、构建和部署。本发明将项目拆解为多个模块,每个模块下包含接口文档(APIMessage)、数据类型定义(Shared)、数据表结构字段(Table)、业务逻辑处理(Planner)等重要组成部分,调用大模型时,将项目的各个模块的信息以结构化的格式发送给大模型,指导模型生成符合业务场景需要的代码,代码生成之后会自动提交到与平台路径一致的Gitlab仓库中,从而实现了从文档到代码的转变,流水线的方式集成了代码生成、代码提交入库、自动编译及部署上线的功能,从而使用户可以实时在线预览效果。本发明集成了整个软件开发和部署过程,将繁琐的手动操作自动化,从而提高开发效率,减少错误。
实施例一
如图2所示,本发明第一方面提供了一种基于AI大模型的代码生成和编译部署方法,包括:
S101、将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义。
在具体的实施例中,所述步骤S101进一步包括以下步骤:
S111、应用模块的功能拆分。
首先,将项目的各项功能进行有序地拆分。将相互关联的功能划分至各个微服务中,如图1中的第一层“Views”所示。这种拆分方法有助于功能模块的独立性和高效管理。每个模块都承担明确的权责,整体结构清晰。
S112、定义微服务的API接口文档(APIMessage)。
在微服务内,每个功能模块会被进一步细分为多个API接口,每个API接口用于一个具体功能,平台用户需要为API接口设计接口文档APIMessage,包括字段名称、字段类型、字段描述、是否为必填项、是否为列表结构、输入类型和输出类型等要素,参见图1中第二层API接口。每个API接口为最小的调度指令,用于前端与微服务、以及微服务之间的数据通讯。
可选地,前端界面基于Web技术,使得开发人员可以通过交互方式输入项目接口与业务逻辑的要求、数据类型等信息。界面允许用户切换分支,同时提供实时的预览功能,让开发人员能够即时查看生成的代码样例。
S113、根据接口文档定义业务逻辑(Planner)。
在该流程中,首先接收接口文档APIMessage定义的传入参数、传出参数。为了简化操作,平台提供通过特殊字符选择已经录入过的表格、数据结构等功能。用户将需要实现的业务逻辑按照执行步骤进行描述,编写各步骤的Prompt提示信息,将表格的基础操作函数组装成复杂的业务逻辑,例如从某表格里面查询某数据,调用某接口获取某个数据结构,将数据结构按照APIMessage的传出参数格式进行组装,返回给APIMessage。其中Prompt提示信息是用户或系统向语言模型提供的输入文本或问题,用于引导模型生成相应的输出。Prompt 的设计和内容可以明显地影响模型的响应和生成结果。它可以是一个问题、一段描述、一句话,甚至是一组指令,用于启发模型生成特定主题、风格或内容的文本。在使用基于语言模型的系统时,设计好的 Prompt 可以帮助引导模型产生更符合预期的回答或文本。
平台自动将Prompt提示信息内用户选中的结构替换成已经录入的相关结构的信息,使用组装后的Prompt信息调用AI大模型,生成相应的处理代码。
S114、创建数据表结构字段(Table)。
数据表结构字段Table用于详细记录用于数据存储的表格行的字段信息,以及针对表格的基础操作函数,涵盖对表格数据的增加、删除、修改、查询等基本功能,参见图1中第四层表格结构。该步骤用于为业务逻辑Planner提供可用的最基本的原子操作,由Planner组成更复杂的业务处理逻辑。
S115、完成数据类型定义(Shared)。
数据类型定义Shared用于记录用户在数据交互过程中传递数据包的格式,包含了字段名、字段描述、字段类型、是否可空等信息,参见图1中第五层数据。确定的数据格式有助于保障数据在传输和交互过程中的完整性和正确性。
通过以上一系列有序的步骤,能够将项目逐步转换成结构化的对象,确保功能的精确定义、接口的清晰设计、以及保证了数据结构的准确传递,为大模型的理解和代码生成奠定基础。
根据优选的实施例,在项目信息存储中,使用结构化数据库PostgreSQL来存储项目的各种实体关系、属性和配置信息。所述配置信息包括数据模型、业务逻辑需求、API接口定义等。数据库提供了一个统一的数据源,供其他模块使用。
S102、调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码。
在本发明的具体实施例中,将项目代码的生成任务分解成为生成各个节点代码的子任务,通过这种策略,能够更好地引导大模型对每个子任务进行有意义的推断,每个子任务都能够被大模型理解,且让大模型了解到当前任务与其他关联任务之间的关系。在调用大模型之前,平台还会根据不同的节点类型填充以不同的实例代码格式,从而提高大模型生成子任务代码的质量。通过这种策略,能够更好地引导大模型对每个子任务进行有意义的推断,从而逐步生成完整的代码。
根据具体的实施例,可以开发针对Scala和TypeScript的代码生成器。Scala是一种现代化的编程语言,它结合了面向对象编程和函数式编程的特性。Scala 运行在 Java虚拟机(JVM)上,具有强大的类型系统,使得开发人员能够填写更安全、可靠且高性能的代码。TypeScript 是一种开源的编程语言,它是 JavaScript 的超集。TypeScript 添加了静态类型和更多面向对象的特性,这有助于在开发大型应用程序时提供更好的代码组织、可维护性和错误检测能力。所述代码生成器基于项目信息存储的数据,结合配置文件、模板信息与大模型,自动生成各个层次的代码文件。根据不同的要求生成不同的模板代码,确保生成的代码符合项目需求和规范。
代码生成器不仅生成代码文件,还创建项目的文件和目录结构,以及初始代码框架,为开发人员提供开箱即用的项目起点。每个子模块代码各自生成之后,将代码按照用户创建项目的结构层级关系,填充到平台提供的代码框架内对应的文件路径下,触发后续的打包部署环节。
代码生成器将为每一个生成的后端微服务创建专用的Git Submodule,用于存储公共的API接口定义和数据类型定义,并分别供前后端使用。生成的微服务或前端项目可以将Submodule添加为子模块,并通过共享代码文件的形式获取API接口定义和数据类型定义。在生成的后端微服务中,代码生成器将生成API接口定义的前后端代码文件,并将这些文件存储在对应Git Submodule中。其他微服务可以通过引用这些共享的代码文件,包括导入共享的数据类型定义,实现对API接口的访问和调用,从而促进不同微服务之间的集成和协作,确保在不同微服务之间的数据传输和解析的一致性。使用Git Submodule,后端微服务与前端之间的API接口和数据类型得到了版本管理和更新的支持。当Submodule中的API或数据类型发生变化时,开发人员可以通过平台自动地更新Submodule,并在生成的微服务中同步这些变化,保持代码的一致性。
可选地,除了生成代码之外,平台还将项目信息和代码生成配置信息保存为YAML文件。YAML是一种可读性高,人类友好的用来表达数据序列化的格式,用于配置文件和数据描述。该文件包括项目实体关系、属性、API接口和模板配置。它使用简单的缩进和结构来表示数据,易于阅读和编写,被广泛用于配置文件、持续集成流程、部署描述等场景。平台能够比较和合并不同分支的YAML文件。开发人员可以在分支上开发不同功能,通过合并YAML文件,实现Gitlab中分支的合并。
利用AI大模型还可以进一步读取产品文档、识别流程图、思维导图、原型图等类型的项目信息,生成项目框架结构,根据框架结构补全对应的代码,并部署测试操作。
S103、保存所生成的所有代码,将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
当开发人员在前端界面中输入了代码要求后,后端处理模块会根据输入信息从项目信息存储中提取相应数据,并调用代码生成器生成代码文件。生成的文件会被直接上传到生成的项目所对应的GitLab仓库,以供后续步骤使用,确保代码的版本管理和团队协作。
GitLab是用于版本控制和源代码管理的网络平台。它提供了一个集成的环境,允许开发团队协同工作、追踪问题、管理项目、进行持续集成和部署等。一旦代码提交至GitLab,则将自动触发自动化持续集成与交付(CICD)模块。该模块用于自动检索代码、执行构建操作并生成容器镜像。其中持续集成(CI)是开发团队通过频繁地自动集成代码变更到共享代码仓库中,以确保快速发现和解决问题。持续交付(CD)是基于持续集成,自动将代码交付到生产环境或其他部署环境,从而实现快速、稳定的软件交付流程。随后,该模块将所生成的镜像上传到Kubernetes(K8s)集群,同时启动自动部署流程。Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。Kubernetes 管理容器化应用程序的运行,确保它们在不同的服务器上高效地进行负载均衡和扩展。Kubernetes集群会按照预先设定的规则,将容器部署到服务器节点上,从而实现对代码的持续集成与持续部署。以上自动化流程保障了代码的高效交付与部署,使得软件开发的整体流程更为流畅和可靠,同时可以实现实时预览的效果。
参见图3,以下以自动化代码生成和编译部署平台的操作步骤为例,说明本发明的自动化代码生成方法的具体过程:
1.用户在代码生成和编译部署平台上创建项目,添加项目名称和项目描述信息。作为替代方案,文档信息可选地通过语音输入用户指令。
2.创建项目下的各个微服务,填写微服务的名称和微服务的用途描述,其中每个微服务都对应Gitlab中的一个代码仓库组,并对应Kubernetes中一个应用实例。
3.创建微服务下的数据结构,填写字段信息及字段描述,调用AI大模型,生成前后端的数据结构代码。
4.定义微服务下的表结构,填写表结构信息,填写表的操作要求,调用AI大模型,生成表格的后端表格代码。
5.定义微服务对外通讯的API接口,填写API接口的传入参数、传出参数信息、调用AI大模型,生成前后端的接口代码。
6.定义API的执行Planner函数,描述业务操作的步骤,调用AI大模型生成业务逻辑的后端代码。
7.在平台上保存文档,自动触发CICD、编译通过后自动部署到云服务器上。可选地,在触发CICD之前,AI大模型自动执行代码审核、单元测试等操作。
8.用户通过实时验收效果,如果不满意则返回修改数据接口,如果满意即可通过域名访问。在进一步的实施例中,可以通过多轮对话的形式理解用户的要求,并提供实时预览的功能确认用户需求,不断调整变更直到达到用户满意。
可以看出,本发明的上述基于AI大模型的代码生成和编译部署方法集成了整个软件开发和部署过程,适用于前后端数据交互的复杂场景,将繁琐的手动操作自动化,从而提高开发效率,减少错误。首先,降低了用户编程门槛,用户无需精通开发语言即可用本平台实现代码的开发和上线,只需要设计API接口和数据结构的字段名称和字段类型,通过快捷操作选择涉及到的表格、数据结构,辅助以自然语言描述函数的业务逻辑,即可交由大模型来生成相应的实现代码,在平台点击保存后,即可自动部署到服务端。其次,使项目结构清晰,微服务之间解耦。从API接口的维度对项目进行拆分,各个微服务相对独立,前端与微服务、微服务之间通过API接口进行通讯。降低了代码的耦合度,便于扩展功能。再者,通过项目代码分块完成来提高大模型代码生成质量。平台检测用户输入的信息是否包含平台录入的各个模块,如果检查到可以询问模型是否需要获取相应的数据结构,如果模型生成代码过程中需要获取用户输入的复杂数据或者结构的类型,内置LangChain,可以自动调用平台提供的接口,查询所需的信息。此外,本发明实现了自动编译部署发布上线。在平台保存文档后,即可自动触发代码提交至Gitlab,触发CICD模块开始自动化构建操作,生成容器镜像并将镜像上传到k8s集群,部署到适当节点,实现代码的自动发布上线。
实施例二
本发明的另一方面还包括与前述实施例一的基于AI大模型的代码生成和编译部署方法完全对应一致的功能模块架构,即提供了一种基于AI大模型的代码生成和编译部署平台,包括:
结构化拆分单元,用于将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义;
大模型代码生成单元,用于调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;
编译和部署单元,用于保存所生成的所有代码,将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
该平台可通过上述实施例一提供的基于AI大模型的代码生成和编译部署方法实现,具体的实现方式可参见实施例一中的描述,在此不再赘述。
实施例三
本发明还提供了一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器用于读取所述指令并执行前述实施例一中的任一种方法。其中处理器和存储器可以通过总线或者其他方式连接,以通过总线连接为例。处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的基于AI大模型的代码生成和编译部署方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的基于AI大模型的代码生成和编译部署方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例四
本发明还提供了一种存储介质,所述存储介质存储有多条指令,所述指令可被处理器加载并执行,以使所述处理器能够执行如实施例一中的任意一种方法。该存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于AI大模型的代码生成和编译部署方法,其特征在于,包括:
将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义;
调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;
保存所生成的所有代码,将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
2.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,所述API接口文档包括字段名称、字段类型、字段描述、是否必填项、是否列表结构、输入类型和输出类型。
3.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,所述定义相应的业务逻辑,进一步包括:
接收所述API接口文档中定义的传入参数和传出参数;
将需要实现的业务逻辑编写成提示信息;
将所述提示信息中用户选中的结构替换成已经录入的相关结构的信息。
4.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,所述生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码,进一步包括:
开发针对Scala和TypeScript的代码生成器,所述代码生成器基于项目信息存储的数据,结合配置文件、模板信息与AI大模型,自动生成各个层次的代码文件。
5.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,进一步包括:
为每一个后端微服务创建专用的Git Submodule,用于存储公共的API接口定义和数据类型定义,并分别供前后端使用;微服务或前端项目将Submodule添加为子模块,并通过共享代码文件的形式获取API接口定义和数据类型定义,其他微服务通过引用这些共享的代码文件,导入共享的数据类型定义,实现对API接口的访问和调用。
6.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,所述将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中,进一步包括:
将生成的代码文件直接上传到所述项目所对应的GitLab仓库,一旦代码提交至GitLab,则自动触发CICD模块,用于自动检索代码、执行构建操作及生成容器镜像;其中持续集成CI用于自动集成代码变更到共享代码仓库,持续交付CD基于持续集成,用于自动将代码交付到生产环境或其他部署环境;所述服务器集群为Kubernetes集群,该Kubernetes集群按照预先设定的规则,将容器部署到服务器节点上,实现对代码的持续集成与持续部署。
7.根据权利要求1所述的基于AI大模型的代码生成和编译部署方法,其特征在于,使用结构化数据库PostgreSQL来存储所述项目的各种实体关系、属性和配置信息,所述配置信息包括数据模型、业务逻辑需求、API接口定义,所述结构化数据库PostgreSQL提供统一的数据源,供其他模块使用。
8.一种基于AI大模型的代码生成和编译部署平台,其特征在于,包括:
结构化拆分单元,用于将软件系统中的项目按照功能结构化拆分为多个微服务,定义每个微服务的API接口文档并定义相应的业务逻辑,并完成数据表结构字段和数据类型定义;
大模型代码生成单元,用于调用AI大模型读取所述API接口文档、业务逻辑、数据表结构字段和数据类型,分别生成前后端API接口代码、业务逻辑代码、表格代码和数据结构代码;
编译和部署单元,用于保存所生成的所有代码,将代码自动提交到GitLab仓库,自动触发CICD模块编译生成容器镜像,并将所述容器镜像部署到服务器集群中。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有多条指令,所述处理器用于读取所述指令并执行如权利要求1至7任一项所述的基于AI大模型的代码生成和编译部署方法。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述多条指令可被处理器读取并执行如权利要求1至7任一项所述的基于AI大模型的代码生成和编译部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311275121.2A CN117008923B (zh) | 2023-09-28 | 2023-09-28 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311275121.2A CN117008923B (zh) | 2023-09-28 | 2023-09-28 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117008923A true CN117008923A (zh) | 2023-11-07 |
CN117008923B CN117008923B (zh) | 2023-12-29 |
Family
ID=88571297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311275121.2A Active CN117008923B (zh) | 2023-09-28 | 2023-09-28 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117008923B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311683A (zh) * | 2023-11-24 | 2023-12-29 | 浙江口碑网络技术有限公司 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
CN117311697A (zh) * | 2023-11-28 | 2023-12-29 | 浙江城市数字技术有限公司 | 基于aigc大语言模型自反馈式创建流程的方法和系统 |
CN117472336A (zh) * | 2023-12-28 | 2024-01-30 | 芯瞳半导体技术(山东)有限公司 | 基于程序api的代码生成装置及其方法、设备及介质 |
CN117539438A (zh) * | 2024-01-05 | 2024-02-09 | 阿里云计算有限公司 | 软件开发方法 |
CN117724683A (zh) * | 2024-02-07 | 2024-03-19 | 深圳海云安网络安全技术有限公司 | 一种基于大语言模型的业务逻辑编码框架生成方法及系统 |
CN117891447A (zh) * | 2024-03-14 | 2024-04-16 | 蒲惠智造科技股份有限公司 | 一种企业管理软件开发方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675830A (zh) * | 2022-03-08 | 2022-06-28 | 南京南瑞继保电气有限公司 | 部署边缘ai和构建可视化ai编程平台的方法、装置及电子设备 |
CN115237428A (zh) * | 2021-04-24 | 2022-10-25 | 华为云计算技术有限公司 | Ai应用部署方法及相关平台、集群、介质、程序产品 |
WO2023039741A1 (zh) * | 2021-09-15 | 2023-03-23 | 国云科技股份有限公司 | 基于微服务体系的在线开发方法、装置、设备及存储介质 |
CN116382843A (zh) * | 2023-03-07 | 2023-07-04 | 合肥城市云数据中心股份有限公司 | 一种基于Kubernetes容器技术的工业AI算力PaaS平台 |
CN116541020A (zh) * | 2023-07-06 | 2023-08-04 | 腾讯科技(深圳)有限公司 | 基于领域模型的代码生成方法、装置、设备、介质及产品 |
CN116594601A (zh) * | 2023-05-22 | 2023-08-15 | 南京大学 | 一种基于知识库和多步提示的预训练大模型代码生成方法 |
CN116643753A (zh) * | 2023-03-30 | 2023-08-25 | 上海悦米信息技术有限公司 | 一种自动化代码生成的方法 |
CN116719520A (zh) * | 2023-08-07 | 2023-09-08 | 支付宝(杭州)信息技术有限公司 | 代码生成方法及装置 |
-
2023
- 2023-09-28 CN CN202311275121.2A patent/CN117008923B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115237428A (zh) * | 2021-04-24 | 2022-10-25 | 华为云计算技术有限公司 | Ai应用部署方法及相关平台、集群、介质、程序产品 |
WO2023039741A1 (zh) * | 2021-09-15 | 2023-03-23 | 国云科技股份有限公司 | 基于微服务体系的在线开发方法、装置、设备及存储介质 |
CN114675830A (zh) * | 2022-03-08 | 2022-06-28 | 南京南瑞继保电气有限公司 | 部署边缘ai和构建可视化ai编程平台的方法、装置及电子设备 |
CN116382843A (zh) * | 2023-03-07 | 2023-07-04 | 合肥城市云数据中心股份有限公司 | 一种基于Kubernetes容器技术的工业AI算力PaaS平台 |
CN116643753A (zh) * | 2023-03-30 | 2023-08-25 | 上海悦米信息技术有限公司 | 一种自动化代码生成的方法 |
CN116594601A (zh) * | 2023-05-22 | 2023-08-15 | 南京大学 | 一种基于知识库和多步提示的预训练大模型代码生成方法 |
CN116541020A (zh) * | 2023-07-06 | 2023-08-04 | 腾讯科技(深圳)有限公司 | 基于领域模型的代码生成方法、装置、设备、介质及产品 |
CN116719520A (zh) * | 2023-08-07 | 2023-09-08 | 支付宝(杭州)信息技术有限公司 | 代码生成方法及装置 |
Non-Patent Citations (3)
Title |
---|
ROMAN-VALENTYN TKACHUK ET AL.: "Towards a Secure Proxy-based Architecture for Collaborative AI Engineering", 《IEEE XPLORE》 * |
杨鸥 等: "微服务架构在容器云中的应用实践", 电脑与电信, no. 07 * |
王博 等: "自动代码生成技术的发展现状与趋势", 西安邮电大学学报, no. 03 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311683A (zh) * | 2023-11-24 | 2023-12-29 | 浙江口碑网络技术有限公司 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
CN117311683B (zh) * | 2023-11-24 | 2024-03-19 | 浙江口碑网络技术有限公司 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
CN117311697A (zh) * | 2023-11-28 | 2023-12-29 | 浙江城市数字技术有限公司 | 基于aigc大语言模型自反馈式创建流程的方法和系统 |
CN117311697B (zh) * | 2023-11-28 | 2024-02-27 | 浙江城市数字技术有限公司 | 基于aigc大语言模型自反馈式创建流程的方法和系统 |
CN117472336A (zh) * | 2023-12-28 | 2024-01-30 | 芯瞳半导体技术(山东)有限公司 | 基于程序api的代码生成装置及其方法、设备及介质 |
CN117472336B (zh) * | 2023-12-28 | 2024-04-12 | 芯瞳半导体技术(山东)有限公司 | 基于程序api的代码生成装置及其方法、设备及介质 |
CN117539438A (zh) * | 2024-01-05 | 2024-02-09 | 阿里云计算有限公司 | 软件开发方法 |
CN117539438B (zh) * | 2024-01-05 | 2024-04-30 | 阿里云计算有限公司 | 软件开发方法 |
CN117724683A (zh) * | 2024-02-07 | 2024-03-19 | 深圳海云安网络安全技术有限公司 | 一种基于大语言模型的业务逻辑编码框架生成方法及系统 |
CN117724683B (zh) * | 2024-02-07 | 2024-04-26 | 深圳海云安网络安全技术有限公司 | 一种基于大语言模型的业务逻辑编码框架生成方法及系统 |
CN117891447A (zh) * | 2024-03-14 | 2024-04-16 | 蒲惠智造科技股份有限公司 | 一种企业管理软件开发方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117008923B (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117008923B (zh) | 基于ai大模型的代码生成和编译部署方法、平台和设备 | |
US11755461B2 (en) | Asynchronous consumer-driven contract testing in micro service architecture | |
CN114625353A (zh) | 模型框架代码生成系统及方法 | |
US9720656B2 (en) | Method and apparatus for enabling agile development of services in cloud computing and traditional environments | |
CN112860260B (zh) | 一种在高校场景下基于web的跨平台应用构建工具及方法 | |
US10572278B2 (en) | Smart controls for user interface design and implementation | |
CN111026634A (zh) | 一种接口自动化测试系统、方法、装置及存储介质 | |
JP2022548180A (ja) | 対話ロボット生成方法、対話ロボット管理プラットフォーム及び記憶媒体 | |
Grassi et al. | Klaper: An intermediate language for model-driven predictive analysis of performance and reliability | |
US20240086239A1 (en) | Services development and deployment for backend system integration | |
US20220284371A1 (en) | Method, device and medium for a business function page | |
Ramalho et al. | From Builders to editors: bidirectional transformations of Low-code Models | |
CN112363700A (zh) | 智能合约的协同创建方法、装置、计算机设备和存储介质 | |
Dokuka et al. | Hands-on reactive programming in Spring 5: build cloud-ready, reactive systems with Spring 5 and Project Reactor | |
Efendioglu et al. | Modelling method design: An adoxx realisation | |
Radeck et al. | Modeling and calculating capabilities of composite web applications for assisted end user development | |
Brumbulli et al. | Verification of bpmn models | |
Révész et al. | Stack Traces in Function as a Service Framework. | |
CN116521155B (zh) | 基于JSON描述动态生成Restful接口的方法 | |
US20240126624A1 (en) | Automatically generating application programming interfaces | |
WO2022089613A1 (zh) | 应用机器学习的文本分类方法、装置和电子设备 | |
Queirós et al. | SOS-simple orchestration of services | |
Chebanyuk et al. | An Approach for Design of Architectural Solutions Based on Software Model-To-Model Transformation | |
Fischer | Model-driven code generation for REST APIs | |
Bevilacqua et al. | Automatic generation of concrete compositions in adaptive contexts |
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 |