CN117311683B - 一种代码辅助系统、代码辅助处理方法、装置及电子设备 - Google Patents
一种代码辅助系统、代码辅助处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN117311683B CN117311683B CN202311588208.5A CN202311588208A CN117311683B CN 117311683 B CN117311683 B CN 117311683B CN 202311588208 A CN202311588208 A CN 202311588208A CN 117311683 B CN117311683 B CN 117311683B
- Authority
- CN
- China
- Prior art keywords
- code
- model
- auxiliary
- information
- prompt
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000011161 development Methods 0.000 claims abstract description 266
- 238000005538 encapsulation Methods 0.000 claims abstract description 39
- 238000004806 packaging method and process Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 9
- 230000003993 interaction Effects 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 26
- 230000002452 interceptive effect Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 14
- 230000000694 effects Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012795 verification Methods 0.000 claims description 6
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 5
- 230000015556 catabolic process Effects 0.000 claims description 4
- 238000006731 degradation reaction Methods 0.000 claims description 4
- 230000001149 cognitive effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 4
- 239000000463 material Substances 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 210000001503 joint Anatomy 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- ABKJCDILEUEJSH-MHWRWJLKSA-N 2-[(e)-(6-carboxyhexanoylhydrazinylidene)methyl]benzoic acid Chemical compound OC(=O)CCCCCC(=O)N\N=C\C1=CC=CC=C1C(O)=O ABKJCDILEUEJSH-MHWRWJLKSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013519 translation 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/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- 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/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码辅助系统、代码辅助处理方法、装置及电子设备。所述系统包括:开发环境插件层、业务封装层、模型调用层、模型实现层;所述开发环境插件层,包括一个或多个开发环境插件,通过业务封装层调用模型调用层针对代码辅助场景提供的大模型服务,所述大模型服务提供基于模型实现层实现的代码辅助能力;所述业务封装层,根据开发环境插件的调用请求调用大模型服务;所述模型调用层,根据代码辅助场景的信息调用目标模型的大模型接口;所述模型实现层,包括所述一个或多个代码辅助模型,代码辅助模型通过对应的大模型接口接收代码辅助场景的信息,并反馈对应的代码辅助信息。采用所述系统,解决了软件开发效率较低的问题。
Description
技术领域
本申请涉及计算机处理技术领域,具体涉及一种代码辅助系统。本申请同时还涉及一种代码辅助处理方法、装置、电子设备及存储介质。
背景技术
随着软件功能不断增加,软件项目规模越来越大,代码量随之更加庞大,一些大型项目的代码量高达几十万行甚至更多。这对软件项目的开发及维护提出了更高挑战。
现有技术中,一方面通过设计合理的软件架构、采用优化的开发流程等从多方面降低软件的开发、维护及扩展成本,以适应软件项目代码量急速增长的特征,虽然一定程度上提升了开发效率,但是在保障质量的情况下以尽量快的速度完成软件开发仍然是面临的难题。另一方面通过集成开发环境(integrated development environment,IDE)进行代码补全也在一定程度上降低编程者的工作量,提升开发效率;然而,由于软件项目的代码文件语义的复杂性,现有代码IDE难以根据对代码的理解进行符合开发团队规范的代码补全或代码生成,仍然存在开发效率低下的问题。
因此,如何提高软件开发的速度并保障代码质量是需要解决的问题。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,
因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请实施例提供的代码辅助系统,解决了软件开发的效率较低的问题。
本申请实施例提供一种代码辅助系统,包括:开发环境插件层、业务封装层、模型调用层、模型实现层,其中,所述开发环境插件层,包括一个或多个开发环境插件,每个开发环境插件根据使用所述代码辅助系统的开发端用户对应的代码辅助场景定制生成,并通过所述业务封装层提供的后端接口调用所述模型调用层针对所述代码辅助场景提供的大模型服务,所述大模型服务用于基于所述模型实现层实现针对所述代码辅助场景的代码辅助能力,使得所述开发端用户基于所述代码辅助能力进行辅助编码操作;所述业务封装层,获得所述开发环境插件层的任一开发环境插件针对所述业务封装层提供的后端接口的调用请求,根据所述调用请求识别代码辅助场景的信息,根据识别结果调用所述模型调用层提供的大模型服务;所述模型调用层,适配一个或多个代码辅助模型的大模型接口,向所述业务封装层提供所述大模型服务;获取调用所述大模型服务所传入的代码辅助场景的信息,根据所述代码辅助场景的信息选择所述代码辅助模型中的目标模型,调用所述目标模型的大模型接口;所述模型实现层,包括所述一个或多个代码辅助模型,每个代码辅助模型通过对应的大模型接口接收所述模型调用层传递的代码辅助场景的信息,并针对所述代码辅助场景反馈对应的代码辅助信息,使得所述开发端用户基于所述代码辅助信息执行开发活动。
可选的,所述多个开发环境插件,包括:第一开发环境插件,根据前端开发端用户对应的第一代码辅助场景的特征生成;第二开发环境插件,根据后端开发端用户对应的第二代码辅助场景的特征生成。
可选的,所述业务封装层,还用于:针对每一开发环境插件,统一封装前后端插件API接口,使得开发端用户可使用所述代码辅助系统针对前后端分离的软件项目进行辅助编码操作。
可选的,所述根据识别结果调用所述模型调用层提供的大模型服务,包括:根据所述识别结果以及预配置的提示模板生成提示信息;根据所述提示信息调用所述大模型服务;其中,所述识别结果包括所述开发端用户使用所述代码辅助系统过程中的交互上下文的信息。
可选的,所述提示模板包括以下信息至少之一:所述代码辅助模型的角色、执行的任务、任务要求、任务说明信息。
可选的,所述业务封装层,还用于:确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量;根据所述调用数量以及预设调用限额对大模型服务进行使用限制或降级服务。
可选的,所述确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量,包括:在调用日志中记录调用大模型服务的token信息;基于调用日志统计开发端用户对应的大模型服务的token数量,所述token数量用于表征所述调用数量,所述token数量用于针对开发端用户使用大模型服务进行计费处理。
可选的,所述业务封装层,具体用于:根据开发端用户的输入信息确定对应的提示类型,所述提示类型表征的使用场景作为所述代码辅助场景;根据所述代码辅助场景的信息以及所述代码辅助场景确定之后所述开发端用户输入的提示内容调用所述大模型服务。
可选的,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:展示候选提示类型;接收所述开发端用户从所述候选提示类型中选定目标类型,作为所述输入信息匹配到的提示类型。
可选的,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:接收所述开发端用户输入的提示内容;识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,作为所述输入信息匹配到的提示类型。
可选的,所述业务封装层,具体用于:针对开发端用户输入的交互上下文进行分步骤问答,一步骤的输出作为下一步骤的输入,以通过多次交互生成复杂任务的代码辅助信息。
可选的,所述模型调用层,还用于:根据所述识别结果确定所述目标模型的大模型控制参数,所述大模型控制参数用于控制所述目标模型用于提供所述代码辅助信息的准确度。
可选的,所述模型实现层,具体用于:若根据所述识别结果确定所述代码辅助场景包括代码生成级别为函数级生成且安全级别为低安全级的第一代码辅助场景,则通过认知服务接口调用第一目标模型提供对应的代码辅助能力;若根据所述识别结果确定所述代码辅助场景包括代码生成级别为工程级生成且安全级别为高安全级的第二代码辅助场景,则通过上下文问答服务接口调用第二目标模型提供对应的代码辅助能力。
可选的,所述系统还包括:扩展模块;所述扩展模块,用于提供代码辅助模型与开发端用户的交互模式;其中,所述交互模式包括:自动化GPT模式以及模型组合调用模式;所述自动化GPT模式,用于根据所述开发端用户输入的提示内容识别语义信息,并确定与所述语义信息匹配的提示类型,所述提示类型表征对应的代码辅助场景;其中,所述模型组合调用模式,包括:接收所述开发端用户输入的第一提示内容;识别所述第一提示内容的第一语义信息,确定与所述第一语义信息匹配的提示类型,作为所述第一提示内容匹配到的提示类型,所述提示类型表征对应的代码辅助场景;接收所述开发端用户输入的第二提示内容,根据所述提示类型对应的代码辅助场景的信息、所述第二提示内容以及预配置的提示模板生成第二提示内容对应的提示信息;根据所述提示信息调用所述大模型服务,使得所述开发端用户获得所述代码辅助信息。
可选的,所述扩展模块还包括:模型结果校准子模块;所述模型结果校准子模块,用于根据预设交叉验证规则对模型结果进行交叉验证。
可选的,所述代码辅助场景,包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景。
可选的,所述代码辅助系统还包括:场景服务模块;所述场景服务模块用于提供针对开发端用户定义的代码辅助场景进行配置的场景配置功能,所述场景配置功能包括场景注册功能、插件交互配置功能以及提示模板配置功能。
本申请实施例还提供一种代码辅助处理方法,包括:加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;确定所述开发端用户的辅助编码操作关联的代码编辑位置;在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。
可选的,根据针对所述代码辅助信息的操作指令执行开发活动,从而实现基于所述代码辅助模型辅助所述开发端用户进行编码。
可选的,所述根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息,包括:在所述交互界面接收所述开发端用户的第二输入信息,响应于针对所述第二输入信息的第二识别结果,确定所述代码编辑位置对应的代码编辑任务;根据所述代码辅助场景、所述代码编辑任务以及预配置的提示模板,生成提示信息;基于所述提示信息调用对应的大模型服务,生成所述代码辅助信息。
可选的,所述针对所述代码辅助信息的操作指令包括以下指令至少之一:代码插入指令、代码拷贝指令、代码比较指令。
可选的,所述代码辅助场景包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景。
可选的,还包括:展示候选提示类型;接收所述开发端用户从所述候选提示类型中选定目标类型,将所述目标类型作为针对第一输入信息的第一识别结果。
可选的,还包括:接收所述开发端用户输入的提示内容,作为所述第一输入信息;识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,将所述提示类型作为所述第一识别结果。
可选的,所述代码辅助模型,根据代码仓中的代码片段及标准化代码样例进行预训练得到。
本申请实施例还提供一种代码辅助处理装置,包括:交互单元,用于加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;编辑位置单元,用于确定所述开发端用户的辅助编码操作关联的代码编辑位置;场景识别单元,用于在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;辅助编码单元,用于根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。
本申请实施例还提供一种电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本申请实施例提供的所述方法。
本申请实施例还提供一种计算机存储介质,存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本申请实施例提供的所述方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的一种代码辅助系统,所述系统包括:开发环境插件层、业务封装层、模型调用层、模型实现层;开发环境插件层包括一个或多个开发环境插件,每个开发环境插件根据使用所述代码辅助系统的开发端用户对应的代码辅助场景定制生成,并通过所述业务封装层提供的后端接口调用所述模型调用层针对所述代码辅助场景提供的大模型服务,所述大模型服务用于基于所述模型实现层实现针对所述代码辅助场景的代码辅助能力,使得所述开发端用户基于所述代码辅助能力进行辅助编码操作;所述业务封装层,获得所述开发环境插件层的任一开发环境插件针对所述业务封装层提供的后端接口的调用请求,根据所述调用请求识别代码辅助场景的信息,根据识别结果调用所述模型调用层提供的大模型服务;所述模型调用层,适配一个或多个代码辅助模型的大模型接口,向所述业务封装层提供所述大模型服务;获取调用所述大模型服务所传入的代码辅助场景的信息,根据所述代码辅助场景的信息选择所述代码辅助模型中的目标模型,调用所述目标模型的大模型接口;所述模型实现层,包括所述一个或多个代码辅助模型,每个代码辅助模型通过对应的大模型接口接收所述模型调用层传递的代码辅助场景的信息,并针对所述代码辅助场景反馈对应的代码辅助信息,使得所述开发端用户基于所述代码辅助信息执行开发活动。代码辅助系统可以集成多个代码辅助模型与多个开发环境插件,从而为具有不同开发团队提供代码辅助功能,整体提升开发效率。进一步,代码辅助模型具有代码理解及代码生成能力,并且能够基于代码仓库中各开发团队的代码或代码片段提取物料进行训练,也可以结合标准代码样例进行训练,因而能够提供准确度较高、且与各开发团队的编码风格较一致的代码辅助信息;开发环境插件可以根据不同开发团队承担的软件项目工程特征、开发工具需求、团队开发习惯等定制化生成,并根据使用场景抽象出不同的细化的代码辅助场景,迭代拓展。因此,能较大程度降低开发端用户的工作量,提升开发效率并同时保证质量。
本申请实施例提供的一种代码辅助处理方法、装置、电子设备及存储介质,通过加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;确定所述开发端用户的辅助编码操作关联的代码编辑位置;在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。通过交互信息识别出代码辅助场景,从而便于通过代码辅助模型根据具体的代码辅助场景生成更加符合开发端用户的代码辅助需求、准确度较高的代码辅助信息,提升开发效率。进一步,开发端用户根据针对所述代码辅助信息的操作指令执行开发活动,从而实现基于所述代码辅助模型辅助所述开发端用户进行编码。进一步,通过预配置的提示模板能够按照一定格式约束传递给代码辅助模型作为输入信息的提示信息,使得开发端用户与代码辅助模型之间进行更精准、更高效的交互。
附图说明
图1是本申请第一实施例提供的一种代码辅助系统的示意图。
图2是本申请第一实施例提供的一种代码辅助系统的结构示意图之一。
图3是本申请第一实施例提供的一种代码辅助系统的结构示意图之二。
图4是本申请第二实施例提供的一种代码辅助处理方法的处理流程图。
图5是本申请第三实施例提供的一种代码辅助处理装置示意图。
图6是本申请提供的电子设备示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请实施例提供一种代码辅助系统。本申请还提供一种代码辅助处理方法、装置、电子设备及存储介质。在下面的实施例中逐一进行说明。
为便于理解,首先给出本申请的应用场景。该场景仅仅是应用代码辅助系统的一个场景实施例,提供此场景实施例的目的是便于理解本申请中提供的代码辅助系统,而并非用于限定本申请的代码辅助系统的应用或实现方法。本申请可以但不限于应用于软件开发场景,向开发团队提供包含代码编辑功能、代码生成功能、基于代码生成注释和/或生成解释性描述的功能、代码简化与优化功能等。本申请实施例的产品化形态可以为代码辅助类应用程序,其可以运行于开发端用户对应的终端设备,也可以运行于云端服务器。代码辅助类应用程序应用于软件开发实践活动中的代码辅助场景,基于代码辅助模型对复杂语言的理解能力以及学习能力执行辅助编码任务,为开发团队提供高效的程序开发环境。示例性的,代码辅助类程序可以响应于输入的包含任务描述的提示信息而生成符合任务描述的代码。示例性的,代码辅助类应用程序可以响应于输入或选定的代码而生成代码注释,代码注释以输入或选定的代码作为与代码辅助模型的交互上下文而生成。示例性的,代码辅助类应用程序可以响应于输入的代码得到代码编辑位置并显示备选代码(或代码选项),响应于针对备选代码(或代码选项)的操作指令而进行辅助编码操作。辅助编码操作可以包括代码插入、代码替换、代码比较、代码删除等操作。可以理解的是,代码辅助类应用也可以应用于代码纠错、生成单元测试代码、针对代码生成对应说明文档和/或属性描述文档等代码辅助场景。实际应用中,开发端用户可以在终端设备上运行代码辅助类应用程序,加载或创建代码文件,针对代码文件进行辅助编码操作;开发端用户也可以访问云端服务器提供的代码辅助类应用服务,从而使用辅助编码功能进行辅助编码操作。
需要说明的是,以上所公开的信息仅用于帮助对本申请进行理解,并不意味着构成对本领域普通技术人员已知的现有技术。
以下结合图1至图3对本申请第一实施例提供的代码辅助系统进行说明。图1所示的代码辅助系统,包括:开发环境插件层101、业务封装层102、模型调用层103、模型实现层104。
所述开发环境插件层101,包括一个或多个开发环境插件,每个开发环境插件根据使用所述代码辅助系统的开发端用户对应的代码辅助场景定制生成,并通过所述业务封装层提供的后端接口调用所述模型调用层针对所述代码辅助场景提供的大模型服务,所述大模型服务用于基于所述模型实现层实现针对所述代码辅助场景的代码辅助能力,使得所述开发端用户基于所述代码辅助能力进行辅助编码操作;
所述业务封装层102,获得所述开发环境插件层的任一开发环境插件针对所述业务封装层提供的后端接口的调用请求,根据所述调用请求识别代码辅助场景的信息,根据识别结果调用所述模型调用层提供的大模型服务;
所述模型调用层103,适配一个或多个代码辅助模型的大模型接口,向所述业务封装层提供所述大模型服务;获取调用所述大模型服务所传入的代码辅助场景的信息,根据所述代码辅助场景的信息选择所述代码辅助模型中的目标模型,调用所述目标模型的大模型接口;
所述模型实现层104,包括所述一个或多个代码辅助模型,每个代码辅助模型通过对应的大模型接口接收所述模型调用层传递的代码辅助场景的信息,并针对所述代码辅助场景反馈对应的代码辅助信息,使得所述开发端用户基于所述代码辅助信息执行开发活动。
本实施例提供的代码辅助系统的架构是分层架构,具体包括开发环境插件层、业务封装层、模型调用层、模型实现层四个层级。其中,模型调用层及模型实现层为共同用于通过服务接口向上层的开发环境插件层提供基于代码辅助模型的大模型服务能力。当然,实施时模型调用层及模型实现层也可以实现为模型层一个层级,从而这样的代码辅助系统的架构具有三个层级,由模型层提供大模型服务的服务接口。开发环境插件,是指针对不同开发环境的定制化插件,可以安装于应用本申请提供的代码辅助系统的开发环境中。所谓开发环境,是指集成开发环境(IDE,Integrated Development Environment),用于提供程序开发环境的应用程序。该应用程序可以独立运行,也可以和其它程序并用。VScode等为常用IDE。实际应用中,开发端用户(如编程者)在开发环境应用程序(如VScode IDE)选择安装对应于该IDE的开发环境插件,开发环境插件与该IDE对接,该IDE的UI(用户界面,UserInterface)检测到开发端用户的操作行为,将对应的操作信息传递给开发环境插件,通过开发环境插件调用业务封装层接口,业务封装层识别出具体的代码辅助场景,将相关信息格式化封装为提示信息,使用该提示信息访问大模型服务。采用分层架构,使得各层之间隔离,层与层之间相互独立,层间低耦合,层内各模块或单元具有高内聚性,因而该系统具有高可复用性,且易于维护、部署及扩展。例如,便于进行迭代以及持续拓展代码辅助场景。
所述代码辅助模型,是基于AI(人工智能)的大语言模型,通过在大量文本数据上进行训练而理解复杂语言(如自然语言),完成复杂语言对应的辅助编码任务。所述文本数据,可以包括代码。针对不同编程语言、不同编程语言版本的代码进行训练,参与训练的代码包括来自开发团队的代码仓库的代码,也可以包括标准代码样例。
所述开发环境插件层101,包括一个或多个定制生成的开发环境插件。这些开发环境插件基于不同IDE定制生成,与对应的IDE适配对接,一个IDE可以支持一种或多种编程语言。开发环境插件可用于开发前端软件,也可用于开发后端软件。实际上不同开发环境插件可能由于其对应的开发环境的特点而更适合用于前端软件或后端软件的开发,根据开发团队的开发实践活动的经验确定。优选的,所述多个开发环境插件,包括:述第一开发环境插件,根据前端开发端用户对应的第一代码辅助场景的特征生成;第二开发环境插件,根据后端开发端用户对应的第二代码辅助场景的特征生成。其中,第一开发环境插件可以为基于第一IDE的插件,第二开发环境插件可以为基于第二IDE的插件。第一IDE和第二IDE可以相同也可以不同。第一IDE的一个例子是VScode。
具体的,开发端用户根据开发需要选择安装不同的开发环境插件,从而通过调用后端大服务接口获取差异化代码辅助能力。进一步,所述代码辅助系统还包括:场景服务模块;所述场景服务模块用于提供针对开发端用户定义的代码辅助场景进行配置的场景配置功能,所述场景配置功能包括场景注册功能、插件交互配置功能以及提示模板配置功能。开发端用户可以根据所需要的代码辅助场景通过场景服务模块的功能进行场景注册、针对插件配置对应于该场景的交互、配置prompt(提示)模板。当然,也可以根据上述代码辅助场景相关的功能需求实现定制化业务封装、模型层调用等层的功能,以与提供该定制代码辅助场景的开发环境插件对接。其中,所述代码辅助场景,包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景。本实施例中,场景服务还用于针对自动化预训练生成模型进行决策节点配置及外部工具配置。
所述业务封装层102提供后端接口供开发环境插件层调用,并针对该后端接口接收到的调用请求的内容进行识别,识别出具体的代码辅助场景,根据识别结果调用所述模型调用层提供的大模型服务,具体包括:根据所述识别结果以及预配置的提示模板生成提示信息;根据所述提示信息调用所述大模型服务;其中,所述识别结果包括具体的代码辅助场景以及所述开发端用户使用所述代码辅助系统过程中的交互上下文的信息。具体的,所述业务封装层根据开发端用户的输入信息确定对应的提示类型,所述提示类型表征的使用场景作为所述代码辅助场景;根据所述代码辅助场景的信息以及所述代码辅助场景确定之后所述开发端用户输入的提示内容调用所述大模型服务。一种实施方式中,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:展示候选提示类型;接收所述开发端用户从所述候选提示类型中选定目标类型,作为所述输入信息匹配到的提示类型。也就是说,开发端用户选择提示类型。一种实施方式中,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:接收所述开发端用户输入的提示内容;识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,作为所述输入信息匹配到的提示类型。所述代码辅助系统可以提供上述两种实施方式。后一种实施方式举例如下:用户输入“针对以下代码生成注释”,调用模型调用层的大模型服务识别出语义信息,由识别出的语义信息匹配到提示类型为类似explain表示的类型(即生成注释的代码辅助场景)。再如,用户输入“优化以下代码”,调用模型调用层的大模型服务识别出语义并匹配到提示类型为类似simplify的类型(即代码简化的代码辅助场景)。再如,用户输入“根据以下需求生成测试代码”,识别出语义并匹配到类似unitest的提示类型(即生成单元测试的代码辅助场景)。再如,用户输入“根据以下需求生成代码”,识别语义并匹配到提示类型类似doc的提示类型(即代码生成的代码辅助场景,生成的代码为文本)。识别出提示类型。识别出代码辅助场景为对模型调用层提供的大模型服务的第一次调用。识别出代码辅助场景之后继续输入提示内容,根据对应的开发环境插件调用大模型服务从而获得代码辅助模型针对该提示内容反馈的代码辅助信息,代码辅助信息为根据prompt模板的格式化输出,此为对大模型服务的第二次调用。当然,也可以包括第三次、四次……等的调用,二次或更多次调用中每次所选择的目标模型可以相同也可以不同,根据具体代码辅助场景而定,从而实现代码辅助模型的组合调用。所述业务封装层,具体用于:针对开发端用户输入的交互上下文进行分步骤问答,一步骤的输出作为下一步骤的输入,以通过多次交互生成复杂任务的代码辅助信息。
所述提示模板包括以下信息至少之一:所述代码辅助模型的角色、执行的任务、任务要求、任务说明信息。具体可以将通用部分提取出来,将开发端用户的输入内容作为变量从而可以定义一个模板。例如,一个prompt模板如下:作为【角色】,请执行【任务】(复杂任务需分解成多任务),【要求】,【补充说明】,包括指定开发端用户与代码辅助模型对话时代码辅助模型对应的角色,以及任务描述。再例如,根据以上例子中的prompt模板封装的prompt(提示信息)如下:从现在开始,你将承担程序编写工作,每当用户提出code需求,你将会按照以下'''中的要求完成工作,请按照格式输出结果json内容,不要输出其他内容,请务必只输出JSON'''要求:按照如下JSON格式输出:{ "code": "code here", "explain": "comments here"}'''
生成并显示给用户的代码辅助信息结果类似如下:
document.getElementById('root'));","explain": "定义一个名为Hello的React组件,该组件继承自React.Component类。在组件的render方法中,返回一个包含一个h1标签的div元素。最后,使用ReactDOM.render方法将Hello组件渲染到id为root的DOM节点上。"
}
当然,也可以在prompt模板中限定代码辅助模型回答的代码范围,例如限定编程语言及编程语言版本等。从而可以利用预配置的prompt模板对代码辅助模型进行约束,以及限定代码辅助信息的输出格式。实际应用中,业务封装层将开发端用户输入的内容根据prompt模板根式化封装后调用大模型服务。
本实施例中,所述系统还包括:扩展模块;所述扩展模块,用于提供代码辅助模型与开发端用户的交互模式;其中,所述交互模式包括:自动化GPT模式以及模型组合调用模式;其中,所述自动化GPT模式,用于根据所述开发端用户输入的提示内容识别语义信息,并确定与所述语义信息匹配的提示类型,所述提示类型表征对应的代码辅助场景;其中,所述模型组合调用模式,包括:接收所述开发端用户输入的第一提示内容;识别所述第一提示内容的第一语义信息,确定与所述第一语义信息匹配的提示类型,作为所述第一提示内容匹配到的提示类型,所述提示类型表征对应的代码辅助场景;接收所述开发端用户输入的第二提示内容,根据所述提示类型对应的代码辅助场景的信息、所述第二提示内容以及预配置的提示模板生成第二提示内容对应的提示信息;根据所述提示信息调用所述大模型服务,使得所述开发端用户获得所述代码辅助信息。进一步,所述扩展模块还包括:模型结果校准子模块;所述模型结果校准子模块,用于根据预设交叉验证规则对模型结果进行交叉验证。
实际应用中,开发端用户通过大模型服务与模型实现层的代码辅助模型的交互问答过程中,用户输入的内容为交互上下文。例如,一次交互问答中用户输入的提示内容为一条上下文。所述业务封装层每次调用大模型服务存储交互上下文。相应的,还包括:当存储的交互上下文达到一定数量,则根据最近几条上下文以及提示模板生成提示信息,并根据该提示信息调用大模型服务。
所述业务封装层,还用于:确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量;根据所述调用数量以及预设调用限额对大模型服务进行使用限制或降级服务。其中,所述根据所述调用数量以及预设调用限额对大模型服务进行使用限制,具体包括:当调用数量达到预设调用限额,则限制调用大模型服务。其中,所述降级服务,包括:针对大模型服务提供A服务和B服务两种服务,当调用数量达到预设调用限额,则调用大模型服务时由指向原先的A服务转移至指向B服务。进一步,所述确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量,包括:在调用日志中记录调用大模型服务的token信息;基于调用日志统计开发端用户对应的大模型服务的token数量,所述token数量用于表征所述调用数量,所述token数量用于针对开发端用户使用大模型服务进行计费处理。所谓token,可以是一组相关的字符序列,例如,开发端用户与代码辅助模型之间的会话交互内容中包括的token数量。
具体的,所述业务封装层,还用于:针对所述开发端用户进行身份权限校验。进一步,还用于:针对每一开发环境插件,统一封装前后端插件API接口,使得开发端用户可使用所述代码辅助系统针对前后端分离的软件项目进行辅助编码操作。
所述模型调用层103适配一个或多个代码辅助模型的大模型接口,并向业务封装层提供大模型服务接口,通过该服务接口获得业务封装层传入的代码辅助场景的信息以及按照提示模板封装的提示信息,根据所述代码辅助场景的信息选择所述代码辅助模型中的目标模型,调用所述目标模型的大模型接口。从而通过模型调用层实现根据代码辅助场景选择该场景下需要调用的代码辅助模型(即目标模型),该模型为模型实现层所包括的任意代码辅助模型。所述多个代码辅助模型可用是GPT系列模型,也可以是开源LLM系列模型、其他特定模型等。各代码辅助模型提供的大模型接口包括聊天接口、上下文问答接口、文本总结接口、文本翻译接口等多种接口。模型调用层适配上述接口。进一步,所述模型调用层,还用于:针对所代码辅助模型的入参及出参的数据进行安全校验。一个较优方式中,所述模型调用层,还用于:根据所述识别结果确定所述目标模型的大模型控制参数,所述大模型控制参数用于控制所述目标模型用于提供所述代码辅助信息的准确度。例如,大模型控制参数为温度系数(temperature),当准确度要求高则调低该参数,当准确度要求低则调高该参数。
所述模型实现层104,为多模型层,包括一个或多个代码辅助模型。业务封装层根据开发端用户的操作确定用户选择提示类型,或者,业务封装层通过组合调用模式识别出提示类型;提示类型确定后,业务封装层根据对应的提示模板生成格式化提示信息,并通过大模型服务接口调用模型调用层封装的大模型服务,由模型调用层根据适配的大模型接口调用模型实现层的目标模型,该目标模型根据所述提示信息对存储的代码片段、文本等编码后的特征向量,进行向量相似度查询(余弦距离、欧式距离等)与分析,从而得到针对所述提示信息的模型应答结果,所述模型应答结果包括代码辅助信息。该模型应答结果可进一步校准,按照prompt模板输出格式化的代码辅助信息。
本实施例中,所述模型实现层,具体用于:若根据所述识别结果确定所述代码辅助场景包括代码生成级别为函数级生成且安全级别为低安全级的第一代码辅助场景,则通过认知服务接口调用第一目标模型提供对应的代码辅助能力;若根据所述识别结果确定所述代码辅助场景包括代码生成级别为工程级生成且安全级别为高安全级的第二代码辅助场景,则通过上下文问答服务接口调用第二目标模型提供对应的代码辅助能力。
请参考图2,图中示出了一种代码辅助系统的架构图,包括:开发环境插件层201、业务封装层202、模型调用层203、模型实现层204。其中,开发环境插件层包括IDE1插件、IDE2插件……等多个开发环境定制插件,每个插件对应一种IDE。业务封装层包括通用API接口封装、场景识别、调用限额与降级等模块;其中,通用API接口封装模块用于封装API接口;场景识别模块用于识别出代码辅助场景;调用限额与降级模块用于根据对代码辅助模型的调用数量进行调用限额以及服务降级控制。模型调用层包括调用日志统计、账户与计费、模型控制参数定制、模型接口适配等多个模块。调用日志统计模块用于根据调用日志统计token数量;账户与计费模块用于基于token数量进行计费;模型控制参数定制用于根据不同代码辅助场景定制调节temperature等大模型控制参数;模型接口适配模块用于适配模型实现层各代码辅助模型提供的一个或多个接口,如上下文问答接口、文档接口等。模型实现层包括模型1、模型2等多个代码辅助模型,代码辅助模型为能完成复杂语言任务的大模型,针对提示信息响应代码辅助信息。
再请参考图3,图中示出了另一种代码辅助系统的架构图,在图2的内容基础上扩展了:扩展模块及场景服务两种模块。其中,扩展模块包括:自动化GPT模式、模型组合调用模式、模型结果校准等三个子模块,用于对图2中的架构进行扩展,从而提供简单问答的自动化GPT模式以及两次或多次调用代码辅助模型的组合调用模式;场景服务模块包括:场景注册、插件交互配置、提示模板配置、提示封装、自动化GPT模式相关配置等子模块。场景注册,用于注册具体的代码辅助场景如生成代码、生成代码注释等场景;插件交互配置,用于配置插件的交互功能和/或以交互方式配置插件的信息如环境信息等;提示模板配置,用于设置提示模板,不同代码辅助场景可以配置不同的提示模板;提示封装,用于向代码辅助模型提供格式化提示信息作为模型的输入和/或对模型输出的代码辅助信息格式化显示;自动化GPT模式相关配置,用于配置简单问答的相关信息,如配置决策节点、外部工具等。当业务封装层根据开发端用户的输入内容未识别出或未匹配上已注册的代码辅助场景,即当前的使用场景未匹配上任何一个已注册的代码辅助场景,则按照简单问答流程调用模型调用层的大模型服务。
本实施例中,所述系统针对不同的IDE提供对应的开发环境插件,开发端用户可以根据所使用的IDE选择安装该IDE的开发环境插件。所述系统提供通过所述系统可以根据不同代码辅助场景配置对应于代码辅助场景的提示模板。进一步,可以针对多代码辅助模型中的各代码辅助模型基于各代码辅助场景配置对应的提示模板。业务封装层根据开发端用户输入的提示内容识别出具体的代码辅助场景并按照对应该场景的提示模板封装为访问大模型服务的提示信息,模型调用层根据通过大模型服务传入的提示信息及代码辅助场景的信息选择调用模型实现层的多代码辅助模型中的目标模型,由目标模型针对该提示信息生成代码辅助信息作为该提示的应答。
需要说明的是,在不冲突的情况下,在本实施例和本申请的其他实施例中给出的特征可以相互组合。
至此,对本实施例提供的系统进行了说明,所述代码辅助系统可以集成多个代码辅助模型与多个开发环境插件,从而为具有不同开发团队提供代码辅助功能,整体提升开发效率。进一步,代码辅助模型具有代码理解及代码生成能力,并且能够基于代码仓库中各开发团队的代码或代码片段提取物料进行训练,也可以结合标准代码样例进行训练,因而能够提供准确度较高、且与各开发团队的编码风格较一致的代码辅助信息;开发环境插件可以根据不同开发团队承担的软件项目工程特征、开发工具需求、团队开发习惯等定制化生成,并根据使用场景抽象出不同的细化的代码辅助场景,迭代拓展。因此,能较大程度降低开发端用户的工作量,提升开发效率并同时保证质量。
以上述实施例为基础,本申请第二实施例提供一种代码辅助处理方法。以下结合图4对所述方法进行说明,相同部分请参见上述实施例对应部分的描述,不再赘述。图4所示的代码辅助处理方法,包括:
步骤S401,加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;
步骤S402,确定所述开发端用户的辅助编码操作关联的代码编辑位置;
步骤S403,在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;
步骤S404,根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。
实际应用中,所述代码辅助系统为一代码辅助类应用程序,开发端用户可以通过该应用程序使用该系统提供的代码辅助能力,例如,代码生成能力、代码编辑能力、代码注释能力等。具体的,开发端用户根据针对所述代码辅助信息的操作指令执行开发活动,从而实现基于所述代码辅助模型辅助所述开发端用户进行编码。
其中,交互界面提供开发端用户与代码辅助模型之间进行会话的会话窗口。所述根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息,包括:在所述交互界面接收所述开发端用户的第二输入信息,响应于针对所述第二输入信息的第二识别结果,确定所述代码编辑位置对应的代码编辑任务;根据所述代码辅助场景、所述代码编辑任务以及预配置的提示模板,生成提示信息;基于所述提示信息调用对应的大模型服务,生成所述代码辅助信息。从而通过两次或更多次调用获得较准确的代码辅助信息。一个实施方式中,所述将所述提示信息输入代码生成模型得到所述代码物料,包括:将代码辅助场景添加至所述提示信息;基于包含所述代码辅助场景的提示信息调用对应的大模型服务得到所述代码辅助信息。当然,也可以基于开发端用户的一条或多条交互上下文的信息识别出代码辅助场景并生成提示信息,一条或多条交互上下文的信息包括分步骤问答的信息,其中,一步骤的输出作为下一步骤的输入,从而通过多次交互获得复杂任务的代码辅助信息。
优选的,所述代码辅助场景包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景。
优选的,所述针对所述代码辅助信息的操作指令包括以下指令至少之一:代码插入指令、代码拷贝指令、代码比较指令。
本实施例还包括提供组合调用及简单问答两种模式的模型调用。一种实施方式中,包括:展示候选提示类型;接收所述开发端用户从所述候选提示类型中选定目标类型,将所述目标类型作为针对第一输入信息的第一识别结果。另一实施方式中,包括:接收所述开发端用户输入的提示内容,作为所述第一输入信息;识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,将所述提示类型作为所述第一识别结果。
优选的,所述代码辅助模型,根据代码仓中的代码片段及标准化代码样例进行预训练得到。
需要说明的是,步骤S101和S102或类似用语不限定步骤必须先后执行。
至此,对本实施例提供的方法进行了说明,所述方法通过交互信息识别出代码辅助场景,从而便于通过代码辅助模型根据具体的代码辅助场景生成更加符合开发端用户的代码辅助需求、准确度较高的代码辅助信息,提升开发效率。进一步,通过预配置的提示模板能够按照一定格式约束传递给代码辅助模型作为输入信息的提示信息,使得开发端用户与代码辅助模型之间进行更精准、更高效的交互。
与第二实施例对应,本申请第三实施例提供一种代码辅助处理装置,相关的部分请参见对应方法实施例的说明即可。请参考图5,图中所示的代码辅助处理装置,包括:
交互单元501,用于加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;
编辑位置单元502,用于确定所述开发端用户的辅助编码操作关联的代码编辑位置;
场景识别单元503,用于在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;
辅助编码单元504,用于根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。
可选的,所述辅助编码单元504,具体用于:根据针对所述代码辅助信息的操作指令执行开发活动,从而实现基于所述代码辅助模型辅助所述开发端用户进行编码。
可选的,所述辅助编码单元504,具体用于:在所述交互界面接收所述开发端用户的第二输入信息,响应于针对所述第二输入信息的第二识别结果,确定所述代码编辑位置对应的代码编辑任务;根据所述代码辅助场景、所述代码编辑任务以及预配置的提示模板,生成提示信息;基于所述提示信息调用对应的大模型服务,生成所述代码辅助信息。
可选的,所述针对所述代码辅助信息的操作指令包括以下指令至少之一:代码插入指令、代码拷贝指令、代码比较指令。
可选的,所述代码辅助场景包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景。
可选的,所述场景识别单元503,具体用于:展示候选提示类型;接收所述开发端用户从所述候选提示类型中选定目标类型,将所述目标类型作为针对第一输入信息的第一识别结果。
可选的,所述场景识别单元503,具体用于:接收所述开发端用户输入的提示内容,作为所述第一输入信息;识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,将所述提示类型作为所述第一识别结果。
可选的,所述代码辅助模型,根据代码仓中的代码片段及标准化代码样例进行预训练得到。
以上述实施例为基础,本申请第四实施例提供一种电子设备,相关的部分请参见上述实施例的对应说明即可。请参考图6,图中所示的电子设备包括:存储器601,以及处理器602;所述存储器用于存储计算机程序,所述计算机程序被处理器运行后,执行本申请实施例提供的所述方法。
以上述实施例为基础,本申请第五实施例提供一种计算机存储介质,相关的部分请参见上述实施例的对应说明即可。所述计算机存储介质的示意图类似图6,图中的存储器可以理解为所述存储介质。所述计算机存储介质存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本申请实施例提供的所述方法。
需要说明的是,本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,应当在符合所在国的适用法律法规要求的情况下(例如,用户明确同意,对用户切实通知,等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
在一个典型的配置中,电子设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (14)
1.一种代码辅助系统,其特征在于,包括:开发环境插件层、业务封装层、模型调用层、模型实现层,其中,
所述开发环境插件层,包括一个或多个开发环境插件,每个开发环境插件根据使用所述代码辅助系统的开发端用户对应的代码辅助场景定制生成,并通过所述业务封装层提供的后端接口调用所述模型调用层针对所述代码辅助场景提供的大模型服务,所述大模型服务用于基于所述模型实现层实现针对所述代码辅助场景的代码辅助能力,使得所述开发端用户基于所述代码辅助能力进行辅助编码操作;
所述业务封装层,获得所述开发环境插件层的任一开发环境插件针对所述业务封装层提供的后端接口的调用请求,根据所述调用请求识别代码辅助场景的信息,根据识别结果调用所述模型调用层提供的大模型服务;
所述模型调用层,适配一个或多个代码辅助模型的大模型接口,向所述业务封装层提供所述大模型服务;获取调用所述大模型服务所传入的代码辅助场景的信息,根据所述代码辅助场景的信息选择所述代码辅助模型中的目标模型,调用所述目标模型的大模型接口;
所述模型实现层,包括所述一个或多个代码辅助模型,每个代码辅助模型通过对应的大模型接口接收所述模型调用层传递的代码辅助场景的信息,并针对所述代码辅助场景反馈对应的代码辅助信息,使得所述开发端用户基于所述代码辅助信息执行开发活动;
其中,所述模型调用层,还用于:根据所述识别结果确定所述目标模型的大模型控制参数,所述大模型控制参数用于控制所述目标模型提供所述代码辅助信息的准确度;
其中,所述系统,还包括:用于对所述系统的架构进行扩展的扩展模块;所述扩展模块包括:模型结果校准子模块,所述模型结果校准子模块,用于根据预设交叉验证规则对模型结果进行交叉验证。
2.根据权利要求1所述的系统,其特征在于,所述多个开发环境插件,包括:
第一开发环境插件,根据前端开发端用户对应的第一代码辅助场景的特征生成;
第二开发环境插件,根据后端开发端用户对应的第二代码辅助场景的特征生成;
其中,所述业务封装层,还用于:
针对每一开发环境插件,统一封装前后端插件API接口,使得开发端用户可使用所述代码辅助系统针对前后端分离的软件项目进行辅助编码操作。
3.根据权利要求1所述的系统,其特征在于,所述根据识别结果调用所述模型调用层提供的大模型服务,包括:
根据所述识别结果以及预配置的提示模板生成提示信息;
根据所述提示信息调用所述大模型服务;其中,所述识别结果包括所述开发端用户使用所述代码辅助系统过程中的交互上下文的信息;
其中,所述提示模板包括以下信息至少之一:所述代码辅助模型的角色、执行的任务、任务要求、任务说明信息。
4.根据权利要求1所述的系统,其特征在于,所述业务封装层,还用于:
确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量;
根据所述调用数量以及预设调用限额对大模型服务进行使用限制或降级服务;
其中,所述确定开发端用户在不同代码辅助场景中调用大模型服务所产生的调用数量,包括:
在调用日志中记录调用大模型服务的token信息;
基于调用日志统计开发端用户对应的大模型服务的token数量,所述token数量用于表征所述调用数量,所述token数量用于针对开发端用户使用大模型服务进行计费处理。
5.根据权利要求1所述的系统,其特征在于,所述业务封装层,具体用于:根据开发端用户的输入信息确定对应的提示类型,所述提示类型表征的使用场景作为所述代码辅助场景;根据所述代码辅助场景的信息以及所述代码辅助场景确定之后所述开发端用户输入的提示内容调用所述大模型服务;
其中,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:
展示候选提示类型;
接收所述开发端用户从所述候选提示类型中选定目标类型,作为所述输入信息匹配到的提示类型;
和/或,所述根据开发端用户的输入信息识别出所述输入信息匹配到的提示类型,包括:
接收所述开发端用户输入的提示内容;
识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,作为所述输入信息匹配到的提示类型。
6.根据权利要求5所述的系统,其特征在于,所述业务封装层,具体用于:针对开发端用户输入的交互上下文进行分步骤问答,一步骤的输出作为下一步骤的输入,以通过多次交互生成复杂任务的代码辅助信息。
7.根据权利要求1所述的系统,其特征在于,所述模型实现层,具体用于:
若根据所述识别结果确定所述代码辅助场景包括代码生成级别为函数级生成且安全级别为低安全级的第一代码辅助场景,则通过认知服务接口调用第一目标模型提供对应的代码辅助能力;
若根据所述识别结果确定所述代码辅助场景包括代码生成级别为工程级生成且安全级别为高安全级的第二代码辅助场景,则通过上下文问答服务接口调用第二目标模型提供对应的代码辅助能力。
8.根据权利要求1所述的系统,其特征在于,所述扩展模块,用于提供代码辅助模型与开发端用户的交互模式;
其中,所述交互模式包括:自动化GPT模式以及模型组合调用模式;所述自动化GPT模式,用于根据所述开发端用户输入的提示内容识别语义信息,并确定与所述语义信息匹配的提示类型,所述提示类型表征对应的代码辅助场景;
其中,所述模型组合调用模式,包括:
接收所述开发端用户输入的第一提示内容;
识别所述第一提示内容的第一语义信息,确定与所述第一语义信息匹配的提示类型,作为所述第一提示内容匹配到的提示类型,所述提示类型表征对应的代码辅助场景;
接收所述开发端用户输入的第二提示内容,根据所述提示类型对应的代码辅助场景的信息、所述第二提示内容以及预配置的提示模板生成第二提示内容对应的提示信息;
根据所述提示信息调用所述大模型服务,使得所述开发端用户获得所述代码辅助信息。
9.根据权利要求1所述的系统,其特征在于,所述代码辅助场景,包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景;
所述代码辅助系统还包括:场景服务模块;
所述场景服务模块用于提供针对开发端用户定义的代码辅助场景进行配置的场景配置功能,所述场景配置功能包括场景注册功能、插件交互配置功能以及提示模板配置功能。
10.一种基于权利要求1-9任一项所述代码辅助系统的代码辅助处理方法,其特征在于,包括:
加载用于开发端用户与通过大模型服务提供代码辅助能力的代码辅助模型之间进行交互的交互界面;所述开发端用户通过所述交互触发调用所述大模型服务以便基于所述代码辅助能力进行辅助编码操作;
确定所述开发端用户的辅助编码操作关联的代码编辑位置;
在所述交互界面接收所述开发端用户的第一输入信息,响应于针对所述第一输入信息的第一识别结果,确定所述开发端用户的辅助编码操作对应的代码辅助场景;
根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息并显示。
11.根据权利要求10所述的方法,其特征在于,还包括:
根据针对所述代码辅助信息的操作指令执行开发活动,从而实现基于所述代码辅助模型辅助所述开发端用户进行编码;
其中,所述根据所述代码辅助场景的信息以及所述代码编辑位置,获取基于所述代码辅助模型生成的代码辅助信息,包括:
在所述交互界面接收所述开发端用户的第二输入信息,响应于针对所述第二输入信息的第二识别结果,确定所述代码编辑位置对应的代码编辑任务;
根据所述代码辅助场景、所述代码编辑任务以及预配置的提示模板,生成提示信息;
基于所述提示信息调用对应的大模型服务,生成所述代码辅助信息;
其中,所述针对所述代码辅助信息的操作指令包括以下指令至少之一:代码插入指令、代码拷贝指令、代码比较指令。
12.根据权利要求10所述的方法,其特征在于,所述代码辅助场景包括以下场景至少之一:单元测试生成场景、复杂逻辑解释场景、代码注释生成场景、SQL代码优化场景、代码生成场景;
其中,所述方法还包括:
展示候选提示类型;
接收所述开发端用户从所述候选提示类型中选定目标类型,将所述目标类型作为针对第一输入信息的第一识别结果;
和/或,所述方法还包括:
接收所述开发端用户输入的提示内容,作为所述第一输入信息;
识别所述提示内容的语义信息,确定与所述语义信息匹配的提示类型,将所述提示类型作为所述第一识别结果。
13.根据权利要求10所述的方法,其特征在于,所述代码辅助模型,根据代码仓中的代码片段及标准化代码样例进行预训练得到。
14.一种电子设备,其特征在于,包括:
存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行权利要求10-13任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311588208.5A CN117311683B (zh) | 2023-11-24 | 2023-11-24 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311588208.5A CN117311683B (zh) | 2023-11-24 | 2023-11-24 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117311683A CN117311683A (zh) | 2023-12-29 |
CN117311683B true CN117311683B (zh) | 2024-03-19 |
Family
ID=89286781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311588208.5A Active CN117311683B (zh) | 2023-11-24 | 2023-11-24 | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311683B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117289919B (zh) * | 2023-11-24 | 2024-02-20 | 浙江口碑网络技术有限公司 | 一种数据处理方法、装置及电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406906A (zh) * | 2016-10-10 | 2017-02-15 | 云南大学 | 一种基于特定领域建模的模型驱动开发方法 |
WO2022267310A1 (zh) * | 2021-06-22 | 2022-12-29 | 北京百度网讯科技有限公司 | 软件开发的辅助处理方法、设备、存储介质及程序产品 |
CN116048612A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海尔科技有限公司 | 项目生成方法、装置、插件与电子设备 |
US11671385B1 (en) * | 2021-12-07 | 2023-06-06 | International Business Machines Corporation | Automated communication exchange programs for attended robotic process automation |
CN116909543A (zh) * | 2023-07-21 | 2023-10-20 | 哈尔滨工业大学 | 基于微服务架构的ot域工业组件建模及其代码生成方法 |
CN116974541A (zh) * | 2023-04-28 | 2023-10-31 | 新大陆数字技术股份有限公司 | 一种基于llm的编程辅助方法 |
CN116991990A (zh) * | 2023-07-04 | 2023-11-03 | 上海识装信息科技有限公司 | 基于aigc的程序开发辅助方法、存储介质及设备 |
CN117008905A (zh) * | 2023-07-21 | 2023-11-07 | 福建天泉教育科技有限公司 | 一种基于ai的前端代码辅助方法及终端 |
CN117008923A (zh) * | 2023-09-28 | 2023-11-07 | 北京智源人工智能研究院 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
CN117076021A (zh) * | 2023-08-14 | 2023-11-17 | 科大讯飞股份有限公司 | 编程辅导方法、装置、设备及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190122320A1 (en) * | 2017-10-19 | 2019-04-25 | Paul Eugene Mundell | Internet of Dogs' Identifiers System and Method of Operation for Trained Assistance Animal Status and Verification |
US20230252224A1 (en) * | 2021-01-22 | 2023-08-10 | Bao Tran | Systems and methods for machine content generation |
-
2023
- 2023-11-24 CN CN202311588208.5A patent/CN117311683B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406906A (zh) * | 2016-10-10 | 2017-02-15 | 云南大学 | 一种基于特定领域建模的模型驱动开发方法 |
WO2022267310A1 (zh) * | 2021-06-22 | 2022-12-29 | 北京百度网讯科技有限公司 | 软件开发的辅助处理方法、设备、存储介质及程序产品 |
CN116048612A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海尔科技有限公司 | 项目生成方法、装置、插件与电子设备 |
US11671385B1 (en) * | 2021-12-07 | 2023-06-06 | International Business Machines Corporation | Automated communication exchange programs for attended robotic process automation |
CN116974541A (zh) * | 2023-04-28 | 2023-10-31 | 新大陆数字技术股份有限公司 | 一种基于llm的编程辅助方法 |
CN116991990A (zh) * | 2023-07-04 | 2023-11-03 | 上海识装信息科技有限公司 | 基于aigc的程序开发辅助方法、存储介质及设备 |
CN116909543A (zh) * | 2023-07-21 | 2023-10-20 | 哈尔滨工业大学 | 基于微服务架构的ot域工业组件建模及其代码生成方法 |
CN117008905A (zh) * | 2023-07-21 | 2023-11-07 | 福建天泉教育科技有限公司 | 一种基于ai的前端代码辅助方法及终端 |
CN117076021A (zh) * | 2023-08-14 | 2023-11-17 | 科大讯飞股份有限公司 | 编程辅导方法、装置、设备及可读存储介质 |
CN117008923A (zh) * | 2023-09-28 | 2023-11-07 | 北京智源人工智能研究院 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
Non-Patent Citations (1)
Title |
---|
基于业务模型和界面模型的代码生成工具;张晶;黄小锋;;电脑与信息技术(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117311683A (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105511873B (zh) | 用户界面控件展示方法及装置 | |
CN107851001B (zh) | 用于基于设计规格显示软件型应用程序的计算机应用的方法 | |
CN117311683B (zh) | 一种代码辅助系统、代码辅助处理方法、装置及电子设备 | |
CN108595171B (zh) | 对象的模型生成方法、装置、设备及存储介质 | |
CN111966817B (zh) | 基于深度学习及代码上下文结构和文本信息的api推荐方法 | |
Freeman | Essential TypeScript 5 | |
CN113051011A (zh) | 一种结合rpa和ai的图像信息提取方法及装置 | |
CN117289841A (zh) | 基于大语言模型的交互方法和装置、存储介质和电子设备 | |
CN113655996B (zh) | 一种基于需求模型的企业级系统生成方法 | |
CN117289929B (zh) | 一种插件框架、插件及数据处理方法、装置及电子设备 | |
CN111158663A (zh) | 用于处理程序代码中的变量的引用的方法和系统 | |
US20240061653A1 (en) | Collaborative industrial integrated development and execution environment | |
US7788246B2 (en) | Linguistic structure for data flow diagrams | |
CN113761863A (zh) | 一种列表页面的配置方法、设备及存储介质 | |
Starr et al. | Models to Code | |
CN115543291A (zh) | 一种界面模板套件的开发应用方法及装置 | |
CN114564195A (zh) | 一种基于b/s架构的云cad平台的二次开发方法 | |
CN114089980A (zh) | 编程处理方法、装置、解释器及非易失性存储介质 | |
Kimmel et al. | Excel 2003 VBA Programmer's Reference | |
Amissah | A framework for executable systems modeling | |
CN117289919B (zh) | 一种数据处理方法、装置及电子设备 | |
CN112130841B (zh) | Sql开发方法、装置及终端设备 | |
CN115167833B (zh) | 编程方法、可执行程序的执行方法及装置 | |
CN115268907A (zh) | 一种使用json数据生成软件系统控件交互逻辑的方法 | |
JPH09330212A (ja) | プログラミング言語処理システム |
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 |