CN117194258A - 一种代码大模型的评测方法和装置 - Google Patents
一种代码大模型的评测方法和装置 Download PDFInfo
- Publication number
- CN117194258A CN117194258A CN202311197791.7A CN202311197791A CN117194258A CN 117194258 A CN117194258 A CN 117194258A CN 202311197791 A CN202311197791 A CN 202311197791A CN 117194258 A CN117194258 A CN 117194258A
- Authority
- CN
- China
- Prior art keywords
- code
- determining
- compiling
- annotation
- execution
- 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 44
- 238000012360 testing method Methods 0.000 claims abstract description 90
- 238000011156 evaluation Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 239000002131 composite material Substances 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 238000011990 functional testing Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本说明书实施例提供了一种代码大模型的评测方法和装置,该方法包括:根据用于代码生成的测试问题,确定提示信息,将提示信息输入代码大模型,得到代码大模型的输出信息,从输出信息中提取代码文本;从代码文本中分离出执行代码和代码注释;编译执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对执行代码执行对应的测试用例,根据测试用例是否通过,确定整体通过率;根据代码注释与代码注释对应的参考注释,确定语义相似度;根据编译通过率、整体通过率和语义相似度,确定综合评分。
Description
技术领域
本说明书一个或多个实施例涉及代码大模型领域,尤其涉及一种代码大模型的评测方法和装置。
背景技术
代码大模型是用于代码生成的深度学习模型,可以基于大语言模型。大语言模型(Large Language Model,LLM),是指在大规模文本语料上训练、包含百亿或以上级别参数的、基于自然语言处理的深度学习模型。目前,缺少对于代码大模型输出的代码以及代码相关内容进行全面、准确的评估的方法。
因此,需要一种新的代码大模型的评测方法。
发明内容
本说明书中的实施例旨在提供一种代码大模型的评测方法和装置,可以根据代码大模型输出的执行代码的编译通过率、编译且测试均通过的整体通过率,以及模型输出的代码注、解释与参考注、解释的语义相似度,确定针对代码大模型输出的代码以及代码相关内容的质量的综合评分。通过该方法,可以对于代码大模型生成的代码的语法正确性、功能正确性,以及代码注释、代码解释的质量,进行全面、准确的评测,解决现有技术的不足。
根据第一方面,提供了一种代码大模型的评测方法,包括:
根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
在一种可能的实施方式中,从所述输出信息中提取代码文本,包括:从所述输出信息中提取代码文本和针对所述代码文本的文本解释;
根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度,包括:
根据代码注释与所述代码注释对应的参考注释,以及所述文本解释和所述文本解释对应的参考解释,确定语义相似度。
在一种可能的实施方式中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述输出信息的输出格式的第一指示信息,确定提示信息。
在一种可能的实施方式中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述输出信息包括的代码文本所基于的编程语言的第二指示信息,确定提示信息。
在一种可能的实施方式中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述测试用例的用例格式的第三指示信息,确定提示信息。
在一种可能的实施方式中,根据所述编译通过率、整体通过率和语义相似度,确定综合评分,包括:
根据所述编译通过率、整体通过率和语义相似度的加权平均值,确定综合评分。
在一种可能的实施方式中,所述测试用例包括正、反功能测试用例。
在一种可能的实施方式中,所述输出信息中包括针对测试问题的多个答案;所述从所述输出信息中提取代码文本,包括从所述输出信息中提取多个答案对应的多个代码文本;
所述从所述代码文本中分离出执行代码和代码注释,包括;分别从所述多个代码文本中分离出所述多个答案分别对应的执行代码和代码注释;
编译所述执行代码,根据编译是否通过,确定编译通过率,包括:分别编译所述多个答案对应的多个执行代码,根据其中编译通过的执行代码的数量,确定编译通过率。
在一种可能的实施方式中,所述若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率,包括:
对于各个执行代码,若编译通过,针对各个执行代码执行对应的测试用例,根据所述多个执行代码中通过测试用例的执行代码的数量,确定整体通过率。
根据第二方面,提供一种代码大模型的评测装置,所述装置包括:
提取单元,配置为,根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
第一处理单元,配置为,从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
第二处理单元,配置为,根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
评分单元,配置为,根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一所述的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一所述的方法。
利用以上各个方面中的方法、装置、计算设备、存储介质中的一个或多个,可以对于代码大模型生成的代码的语法正确性、功能正确性,以及代码注释、代码解释的质量,进行全面、准确的评测。
附图说明
为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出代码大模型的输入和输出示意图;
图2示出根据本说明书实施例的一种代码大模型的评测方法的原理示意图;
图3示出根据本说明书实施例的一种代码大模型的评测方法的流程图;
图4示出根据本说明书实施例的提示信息的示意图;
图5示出根据本说明书实施例的一种代码大模型的评测装置的结构图。
具体实施方式
下面将结合附图,对本发明书提供的方案进行描述。
如前所述,代码大模型是针对代码生成,以及生成代码对应的注释或解释的深度学习模型。代码大模型可以基于大语言模型(Large Language Model,LLM)。大语言模型,是指在大规模文本语料上训练、包含百亿级别(或更多)参数的、基于自然语言处理的深度学习模型。一般而言,代码大模型可以根据用户输入的自然语言描述,生成对应的代码(code)和代码中的注释。在一些例子中,还可以生成对于代码的自然语言解释。图1示出代码大模型的输入和输出示意图。如图1所示,例如用户向代码大模型输入一段自然语言描述,该描述通常可以是希望代码大模型生成代码所解决的问题。例如图1的例子中,用户输入“写一个Python函数寻找两个数字的最大值”,代码大模型针对该用户输入信息,例如可以输出一段用Python编程语言编写的源代码,源代码中除了包括用于执行的代码(或称执行代码),例如对于函数findmax的定义,以及对该函数的测试代码。还可以包括代码注释(例如以符号“#”开头的文字注释),代码注释是对代码的解释和说明,其目的是让用户可以更加方便地了解代码。在不同的例子中,注释可以是针对一个语句、程序段或函数等的提示,以提高程序代码的可读性。但是,注释只是为了提高可读性,不会被计算机编译,或者说其并不会被执行。例如,图1所示例子中,源代码第14行中,“print(find_max(10,5))”是执行代码,用于打印函数find_max(10,5)的执行结果。“#输出:10”是代码注释,是对正确打印结果的提示。在一些例子中,代码大模型除了输出生成的代码和代码注释之外,还可以输出对于代码生成的自然语言解释。在不同的例子中,自然语言解释包含的内容可以不同。在一个例子中,自然语言解释例如可以包括对于生成代码的思路(所使用的主要语句和/或算法)的说明。例如图1所示中,自然语言解释中包括“这个函数的基本思路是,使用if语句比较...”,即对于生成代码的主要语句和算法的说明。在另一个例子中,还可以例如包括对于代码中注释的说明。例如图1所示中,自然语言解释中包括“在函数定义的注释中,...提供了参数和返回值的说明...”。在一些例子中,代码大模型还输出了自然语言的会话承接语句,例如图1所示中“好的,下面是一个Python函数,用于...”,以使得其整体输出更类似人类的自然问答会话形式。
实际生产场景下,使用或生产代码大模型的用户或厂商,常常需要测量代码大模型的输出结果的质量,以为例如确定如何使用代码大模型、或确定如何改进代码大模型提供依据。但是,由于代码大模型输出内容的复杂性,目前尚没有可以从整体上测量代码大模型的输出结果中代码及代码相关内容的质量的评测方法。
为了解决上述技术问题,本说明书实施例提供了一种代码大模型的评测方法。图2示出根据本说明书实施例的一种代码大模型的评测方法的原理示意图。如图2所示,例如可以根据预定模板,结合用于测试代码的自然语言问题、以及例如对于代码大模型的输出结果的格式提示或编程语言提示,并输入代码大模型。然后,接收代码大模型的输出结果,从输出结果分离出执行代码、代码注释和代码解释。对执行代码进行编译,根据编译是否通过确定编译通过率。针对编译通过的执行代码,执行测试用例。根据测试用例是否通过,确定整体通过率。并且,根据代码注释和对应的参考注释,根据代码注释和对应的参考解释,确定文本相似性。此后,根据编译通过率、整体通过率和语义相似度,确定对于代码大模型输出的代码及代码相关内容的质量的综合评分。
该方法具有如下优点:可以根据代码大模型生成的代码的编译通过率、整体通过率(即通过编译又通过用例测试的代码在总生成代码中所占比例),以及代码注释和代码解释,与参考注释和参考解释的语义相似度,对于代码大模型输出的执行代码、代码注释和代码解释,进行全面的评测。进而,根据编译通过率、整体通过率和语义相似度,得到对于代码大模型的代码及代码相关内容的综合评分。通过该方法,可以例如对于代码大模型生成的代码的语法正确性、功能正确性,以及代码注释、代码解释的质量,进行全面、准确的评测。
下面进一步阐述该方法的详细过程。图3示出根据本说明书实施例的一种代码大模型的评测方法的流程图。如图3所述,该方法至少包括如下步骤:
步骤S301,根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
步骤S302,从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
步骤S303,根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
步骤S304,根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
首先,在步骤S301,根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本。测试问题是代码大模型依据其生成代码的问题,也可以说,是用于测试代码大模型的代码生成能力的问题。在一个实施例中,测试问题可以是用自然语言表述的问题。在不同的实施例中,用于代码生成的具体测试问题可以不同,本说明书对此不做限制。例如图4所示的例子中,测试问题例如可以是“在给定数列中找到第一个重复元素”。进而,在将包含测试问题的提示信息输入代码大模型后,代码大模型可以根据该问题生成对应的例如解决该问题的代码。
提示信息(Prompt),是输入到代码大模型的信息。在不同的实施例中,根据测试问题,确定提示信息(Prompt)的具体方式可以不同。在一个实施例中,可以根据用于代码生成的测试问题、以及对于所述输出信息的输出格式的第一指示信息,确定提示信息。在不同的具体实施例中,根据期望代码大模型的输出格式的不同,第一提示信息的具体内容可以不同。例如,图4所示中,第一提示信息例如可以是“所有输出使用Markdown格式返回”。其中,Markdown是一种简单、易读易写的文本格式。在一个实施例中,可以根据用于代码生成的测试问题、以及对于所述输出信息包括的代码文本所基于的编程语言的第二指示信息,确定提示信息。在不同的具体实施例中,期望的代码大模型输出代码的编程语言可以不同,因此,第二提示信息的具体内容也可以不同。例如,图4所示中,第二提示信息例如可以是“请使用Python实现....”。其中,Python是一种解释型的高级编程语言。在一个实施例中,可以根据用于代码生成的测试问题、以及对于所述测试用例的用例格式的第三指示信息,确定提示信息。在不同的具体实施例中,根据此后希望执行的测试用例的不同,第三提示信息的具体内容可以不同。例如,图4所示中,第三提示信息例如可以是“用assert提示第一个重复元素”,其用处在于提示代码大模型在输出代码中,用assert函数提示查找的第一个重复元素。其优点在于,此后针对执行代码的测试用例如果具有预定的用例格式,例如根据assert函数确定输出的重复元素。通过向代码大模型提供第三提示信息,可以使得代码大模型生成的代码可以更好的符合测试用例格式的要求,使得测试用例可以更准确的测试代码大模型的真实代码生成能力。在不同的实施例中,还可以将第一提示信息、第二提示信息、第三提示信息中的一种或多种,与测试问题相结合,得到提示信息。
在将提示信息输入代码大模型后,可以从代码大模型接收输出信息,并从输出信息中提取代码文本,代码文本通常可以是代码大模型生成的源代码。在不同的实施例中,从输出信息中提取代码文本的具体方式可以不同,本说明书对此不做限制。在一个实施例中,例如可以通过正则表达式,从输出信息中提取代码文本。
在实际生成场合中,代码大模型还常常输出对于生成的代码的文本解释。因此,在一个实施例中,还可以从所述输出信息中提取代码文本和针对所述代码文本的文本解释。针对代码文本的文本解释,也可以称为代码解释。代码解释通常不是源代码的一部分,而是代码大模型模仿人类对于其生成的代码例如编程思路、主要算法、语句等的文本解释。
在一些场景中,一个测试问题还可以对应于多个答案。例如,一个测试问题中,要求用多种编程语言生成多种解决问题的代码。因此,在一个实施例中,输出信息中可以包括针对测试问题的多个答案。进而,可以从所述输出信息中提取多个答案对应的多个代码文本。
然后,可以在步骤S303,从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率。
如前所述,代码文本通常可以是代码大模型生成的源代码,其中可以包括用于执行的执行代码、和非用于执行的代码注释。在不同的具体实施例中,根据编程语言的不同,代码注释可以通过不同编程语言中预定的注释符号标注,以使得编译器可以从源代码中识别代码注释。因此,在不同的实施例中,可以基于不同编程语言中预定的注释符号标注,从代码文本中分离出执行代码和代码注释。
编译(Compile),是指根据高级编程语言编写的代码生成计算机执行程序的过程。该步骤中,可以对执行代码进行编译,并根据编译是否通过,确定编译通过率。由于编译会检验被编译代码的语法,语法正确的代码才能通过编译,因此通过编译,可以确定执行代码的语法是否正确。测试用例(Test Case),是为预定目标而编制的测试输入、执行条件以及预期结果,以便测试被测试代码是否实现了预定功能。所以,通过执行测试用例,可以测试执行代码的功能正确性。因此,若执行代码编译通过,则可以针对编译通过的执行代码执行对应的测试用例,根据测试用例是否通过,确定整体通过率。在不同的实施例中,根据执行代码的不同,对应的测试用例可以不同,本说明书对此不做限制。在一个实施例中,测试用例可以包括正、反功能测试用例。
在上述测试问题对应多个答案的实施例中,可以分别从所述多个代码文本中分离出所述多个答案分别对应的执行代码和代码注释。从而,可以分别编译所述多个答案对应的多个执行代码,根据其中编译通过的执行代码的数量,确定编译通过率。并且,对于各个执行代码,若编译通过,针对各个执行代码执行对应的测试用例,根据所述多个执行代码中通过测试用例的执行代码的数量,确定整体通过率。例如,10个执行代码,其中,2个编译成功但是用例执行失败,2个编译成功且用例通过。则编译成功率为40%,整体通过率为20%。
在不同的实施例中,还可以根据多个问题对应的所有答案对应的所有执行代码的数量、编译通过的执行代码的数量、编译通过且用例通过的执行代码的数量,基于无偏估计算法,确定编译通过率和整体通过率。在不同的具体实施例中,可以采用不同的无偏估计算法,本说明书对此不做限制。
接着,可以在步骤S305,根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度。该步骤中,可以根据代码注释、以及预先获取的代码注释对应的参考注释,确定语义相似度。在不同的实施例中,确定语义相似度的具体方式可以不同。例如,在一个实施例中,可以基于余弦相似度算法,确定语义相似度。在一个实施例中,可以基于BLEURT指标,确定语义相似度。
在上述从输出信息中提取代码文本和代码解释的实施例中,还可以根据代码注释与所述代码注释对应的参考注释,以及所述文本解释和所述文本解释对应的参考解释,确定语义相似度。在一个例子中,例如可以基于预定算法,分别计算代码注释与参考注释之间语义的相似度(或称注释相似度)、以及文本解释与参考解释之间语义的相似度(或称解释相似度),并根据注释相似度和解释相似度的均值,确定语义相似度。
在上述测试问题对应多个答案的实施例中,可以根据多个答案对应的代码注释和代码解释,与对应的参考注释和参考解释,确定语义相似度。在一个例子中,例如可以分别计算多个答案对应的代码注释和代码解释,与对应的参考注释和参考解释之间的注释相似度和解释相似度。然后,根据各个注释相似度和解释相似度的均值,确定语义相似度。
在不同的实施例中,还可以根据多个问题对应的所有答案对应的代码注释和代码解释,与对应的参考注释和参考解释,确定语义相似度。在一个例子中,例如可以分别计算多个问题对应的所有答案对应的代码注释和代码解释,与对应的参考注释和参考解释之间的注释相似度和解释相似度。然后,根据各个注释相似度和解释相似度的均值,确定语义相似度。
此后,可以在步骤S307,根据所述编译通过率、整体通过率和语义相似度,确定综合评分。在不同的实施例中,确定综合评分的具体方式可以不同。在一个实施例中,可以根据所述编译通过率、整体通过率和语义相似度的算术平均值,确定综合评分。在一个实施例中,可以根据所述编译通过率、整体通过率和语义相似度的加权平均值,确定综合评分。在不同的具体实施例中,编译通过率、整体通过率和语义相似度各自的加权权重可以不同,本说明书对此不做限制。
根据又一方面的实施例,还提供一种代码大模型的评测装置。图5示出根据本说明书实施例的一种代码大模型的评测装置的结构图,如图5所示,该装置500包括:
提取单元501,配置为,根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
第一处理单元502,配置为,从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
第二处理单元503,配置为,根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
评分单元504,配置为,根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
本说明书实施例又一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书实施例再一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员应该可以意识到,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (12)
1.一种代码大模型的评测方法,包括:
根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
2.根据权利要求1所述的方法,其中,从所述输出信息中提取代码文本,包括:从所述输出信息中提取代码文本和针对所述代码文本的文本解释;
根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度,包括:
根据代码注释与所述代码注释对应的参考注释,以及所述文本解释和所述文本解释对应的参考解释,确定语义相似度。
3.根据权利要求1所述的方法,其中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述输出信息的输出格式的第一指示信息,确定提示信息。
4.根据权利要求1所述的方法,其中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述输出信息包括的代码文本所基于的编程语言的第二指示信息,确定提示信息。
5.根据权利要求1所述的方法,其中,根据用于代码生成的测试问题,确定提示信息,包括:根据用于代码生成的测试问题、以及对于所述测试用例的用例格式的第三指示信息,确定提示信息。
6.根据权利要求1所述的方法,其中,根据所述编译通过率、整体通过率和语义相似度,确定综合评分,包括:
根据所述编译通过率、整体通过率和语义相似度的加权平均值,确定综合评分。
7.根据权利要求1所述的方法,其中,所述测试用例包括正、反功能测试用例。
8.根据权利要求1所述的方法,其中,所述输出信息中包括针对测试问题的多个答案;所述从所述输出信息中提取代码文本,包括从所述输出信息中提取多个答案对应的多个代码文本;
所述从所述代码文本中分离出执行代码和代码注释,包括;分别从所述多个代码文本中分离出所述多个答案分别对应的执行代码和代码注释;
编译所述执行代码,根据编译是否通过,确定编译通过率,包括:分别编译所述多个答案对应的多个执行代码,根据其中编译通过的执行代码的数量,确定编译通过率。
9.根据权利要求8所述的方法,其中,所述若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率,包括:
对于各个执行代码,若编译通过,针对各个执行代码执行对应的测试用例,根据所述多个执行代码中通过测试用例的执行代码的数量,确定整体通过率。
10.一种代码大模型的评测装置,所述装置包括:
提取单元,配置为,根据用于代码生成的测试问题,确定提示信息,将所述提示信息输入代码大模型,得到代码大模型的输出信息,从所述输出信息中提取代码文本;
第一处理单元,配置为,从所述代码文本中分离出执行代码和代码注释;编译所述执行代码,根据编译是否通过,确定编译通过率;若编译通过,针对所述执行代码执行对应的测试用例,根据所述测试用例是否通过,确定整体通过率;
第二处理单元,配置为,根据所述代码注释与所述代码注释对应的参考注释,确定语义相似度;
评分单元,配置为,根据所述编译通过率、整体通过率和语义相似度,确定综合评分。
11.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-9中任一项的所述的方法。
12.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311197791.7A CN117194258A (zh) | 2023-09-15 | 2023-09-15 | 一种代码大模型的评测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311197791.7A CN117194258A (zh) | 2023-09-15 | 2023-09-15 | 一种代码大模型的评测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194258A true CN117194258A (zh) | 2023-12-08 |
Family
ID=88995891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311197791.7A Pending CN117194258A (zh) | 2023-09-15 | 2023-09-15 | 一种代码大模型的评测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194258A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421414A (zh) * | 2023-12-18 | 2024-01-19 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117951038A (zh) * | 2024-03-27 | 2024-04-30 | 浙江大学 | 基于代码大模型的Rust语言文档测试自动生成方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107305527A (zh) * | 2016-04-22 | 2017-10-31 | 腾讯科技(深圳)有限公司 | 代码文件的处理方法和装置 |
-
2023
- 2023-09-15 CN CN202311197791.7A patent/CN117194258A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107305527A (zh) * | 2016-04-22 | 2017-10-31 | 腾讯科技(深圳)有限公司 | 代码文件的处理方法和装置 |
Non-Patent Citations (2)
Title |
---|
PENGXIN_CE: "ChatTester:ChatGPT的单元测试生成能力评估与改进", pages 1 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/pengxin_ce/article/details/131318763> * |
陈翔 等: "基于双重信息检索的Bash代码注释生成方法", 软件学报, vol. 34, no. 3, 1 April 2022 (2022-04-01), pages 1310 - 1329 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421414A (zh) * | 2023-12-18 | 2024-01-19 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117421414B (zh) * | 2023-12-18 | 2024-03-26 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117951038A (zh) * | 2024-03-27 | 2024-04-30 | 浙江大学 | 基于代码大模型的Rust语言文档测试自动生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7685082B1 (en) | System and method for identifying, prioritizing and encapsulating errors in accounting data | |
CN117194258A (zh) | 一种代码大模型的评测方法和装置 | |
Wu et al. | A comparative study of open-source large language models, gpt-4 and claude 2: Multiple-choice test taking in nephrology | |
US10515314B2 (en) | Computer-implemented systems and methods for generating a supervised model for lexical cohesion detection | |
McCartney et al. | Can first-year students program yet? A study revisited | |
US12112145B2 (en) | Artificial intelligence-based intelligent programming assistance | |
CN118170894A (zh) | 一种知识图谱问答方法、装置及存储介质 | |
Wang et al. | Combining dynamic and static analysis for automated grading sql statements | |
Terada et al. | Automatic generation of fill-in-the-blank programming problems | |
Tarassow | The potential of LLMs for coding with low-resource and domain-specific programming languages | |
Qi et al. | Preserving knowledge invariance: Rethinking robustness evaluation of open information extraction | |
CN116661855A (zh) | 一种代码注释生成方法及装置 | |
CN114492460B (zh) | 基于衍生提示学习的事件因果关系抽取方法 | |
JP2021157602A (ja) | 機械学習モデル訓練装置、機械学習モデル、及びコンピュータプログラム | |
Jagadamba | Online subjective answer verifying system using artificial intelligence | |
CN103019924B (zh) | 输入法智能性评测系统和方法 | |
CN117421226A (zh) | 一种基于生成式大语言模型的缺陷报告重构的方法及系统 | |
CN112559711A (zh) | 一种同义文本提示方法、装置及电子设备 | |
Jelemenska et al. | VHDL models e-assessment in Moodle environment | |
Pathak et al. | Essay Rating System Using Machine Learning | |
Salman | Test case generation from specifications using natural language processing | |
Bačíková et al. | The design of manual domain usability evaluation techniques | |
CN115373982A (zh) | 基于人工智能的测试报告分析方法、装置、设备及介质 | |
Porfirio et al. | Automatic source code evaluation: a systematic mapping | |
CN116910646B (zh) | So网站中知识单元的内部链接目的分类方法 |
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 |