CN117453192A - 代码文本生成方法、装置、设备、存储介质及产品 - Google Patents
代码文本生成方法、装置、设备、存储介质及产品 Download PDFInfo
- Publication number
- CN117453192A CN117453192A CN202311400760.7A CN202311400760A CN117453192A CN 117453192 A CN117453192 A CN 117453192A CN 202311400760 A CN202311400760 A CN 202311400760A CN 117453192 A CN117453192 A CN 117453192A
- Authority
- CN
- China
- Prior art keywords
- code
- text
- information
- result
- language model
- 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 115
- 238000003860 storage Methods 0.000 title claims abstract description 33
- 238000005457 optimization Methods 0.000 claims description 46
- 230000015654 memory Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 30
- 230000008569 process Effects 0.000 abstract description 28
- 238000013473 artificial intelligence Methods 0.000 abstract description 15
- 230000001960 triggered effect Effects 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000012549 training Methods 0.000 description 12
- 238000003058 natural language processing Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000009966 trimming Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005587 bubbling Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008451 emotion Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013526 transfer learning 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/338—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Machine Translation (AREA)
Abstract
本申请公开了代码文本生成方法、装置、设备、存储介质及产品,属于人工智能技术领域。该方法在基于大型生成式语言模型生成代码的场景中,在相关技术难以对代码质量进行准确评估且难以通过约束用户的提问控制生成出的代码质量的前提下,提供基于大型生成式语言模型输出质量稳定的代码文本的技术方案。在得到高质量代码的前提下,本申请实施例还可以提供一种自动进行代码文本调整的方法,通过将代码文本在执行环节的调试过程融入大型生成式语言模型调整代码的过程中,触发大型生成式语言模型对执行结果进行判断,循环地对执行结果进行优化改进,得到最终符合预期且可以执行的代码,从而从可执行角度进一步提高大型生成式语言模型输出代码的质量。
Description
技术领域
本申请涉及人工智能技术领域,特别涉及一种代码文本生成方法、装置、设备、存储介质及产品。
背景技术
随着大型生成式语言模型的迅速发展,越来越多的大型生成式语言模型涌现出来。大型生成式语言模型通过学习专业知识,能够执行专业领域的特定任务。以智能编程为例,智能编程可以被理解为基于大型生成式语言模型生成可以执行某种功能的代码文本。
大型生成式语言模型是一种生成式文本信息处理模型,其文本生成的原理是基于文字出现概率生成文本,体现的是一种推理过程。目前基于大型生成式语言模型生成的代码文本的质量尚不稳定,在可执行方面也存在一些难度,需要人工介入优化才能最终得到可执行的高质量代码文本。
发明内容
本申请实施例提供了一种代码文本生成方法、装置、设备、存储介质及产品,能够基于大型生成式语言模型输出质量稳定的高质量代码文本,并且,还可以将代码文本在执行环节的调试过程,融入大型生成式语言模型调整代码的过程中,得到最终符合预期且可以执行的代码,从而从可执行角度进一步提高大型生成式语言模型输出代码的质量。
根据本申请实施例的一个方面,提供了一种代码文本生成方法,所述方法包括:
获取提问信息,所述提问信息用于指示大规模语言生成模型输出满足所述提问信息对应的代码要求的代码文本;
将所述提问信息输入大型生成式语言模型集群,得到至少两个代码段,所述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将所述至少两个代码段输入所述大型生成式语言模型集群,得到每一所述代码段对应的文本解释信息;
将各所述文本解释信息分别与所述提问信息进行匹配操作,得到匹配结果;
在所述匹配结果指示存在与所述提问信息相匹配的目标文本解释信息的情况下,基于所述目标文本解释信息对应的代码段得到针对所述提问信息的代码文本生成结果。
根据本申请实施例的一个方面,提供了一种代码文本生成装置,所述装置包括:
提问信息获取模块,用于获取提问信息,所述提问信息用于指示大规模语言生成模型输出满足所述提问信息对应的代码要求的代码文本;
代码文本生成模块,用于执行下述操作:
将所述提问信息输入大型生成式语言模型集群,得到至少两个代码段,所述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将所述至少两个代码段输入所述大型生成式语言模型集群,得到每一所述代码段对应的文本解释信息;
将各所述文本解释信息分别与所述提问信息进行匹配操作,得到匹配结果;
在所述匹配结果指示存在与所述提问信息相匹配的目标文本解释信息的情况下,基于所述目标文本解释信息对应的代码段得到针对所述提问信息的代码文本生成结果。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述代码文本生成方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述代码文本生成方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行以实现上述代码文本生成方法。
本申请实施例提供的技术方案可以带来如下有益效果:
本申请实施例提供一种代码文本生成方法,该代码文本生成方法旨在在基于大型生成式语言模型自动生成代码文本的场景中,在相关技术不能对代码质量进行准确评估并且难以通过约束用户输入的提问控制生成出的代码文本质量的前提下,提供一种能够基于大型生成式语言模型输出质量稳定的代码文本的技术方案。并且,在得到高质量的代码文本的前提下,本申请实施例还可以提供一种自动进行代码文本调整的方法,通过将代码文本在执行环节的调试过程,融入大型生成式语言模型调整代码的过程中,触发大型生成式语言模型对执行结果进行判断,循环地对执行结果进行优化和改进,得到最终符合预期且可以执行的代码,从而从可执行角度进一步提高大型生成式语言模型输出代码的质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的应用程序运行环境的示意图;
图2是本申请一个实施例提供的代码文本生成方法的流程图;
图3是本申请一个实施例提供的代码生成方式示意图一;
图4是本申请一个实施例提供的代码质量仲裁方法流程图;
图5是本申请一个实施例提供的代码生成方式示意图二;
图6是本申请一个实施例提供的代码生成方式示意图三;
图7是本申请一个实施例提供的代码优化方法流程示意图;
图8是本申请一个实施例提供的基于执行结果进行的代码优化方法示意图一;
图9是本申请一个实施例提供的查询结果示意图;
图10是本申请一个实施例提供的优化方法示意图二;
图11是本申请一个实施例提供的代码文本生成装置的框图;
图12是本申请一个实施例提供的计算机设备的结构框图。
具体实施方式
在介绍本申请提供的方法实施例之前,先对本申请方法实施例中可能涉及的相关术语或者名词进行简要介绍,以便于本申请领域技术人员理解。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
深度学习:深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
自然语言处理(NLP):是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
LLM:大型生成式语言模型(英文Large Language Model,简称LLM)是指能够处理和生成自然语言的计算机模型。它代表着人工智能领域的重大进步,并有望通过习得的知识改变该领域。LLM可以通过学习语言数据的统计规律和语义信息来预测下一个单词或句子,随着输入数据集与参数空间的不断扩大,LLM的能力也会相应提高。它用于多种应用领域,如机器人学、机器学习、机器翻译、语音识别、图像处理、智能编程等。LLM模型的特点是规模庞大,包含数十亿的参数,帮助它们学习语言数据中的复杂模式。这些模型的应用非常广泛,可以用于生成文本、自动翻译、情感分析、智能编程等任务。它们也被认为是通用的,因为它们可以执行多种类型的自然语言处理任务。此外,LLM模型也被认为是有趣的,因为它们可以展示出人类语言的不同方面,包括语法、语义和语用等。总的来说,LLM模型是一种强大的人工智能模型,可以用于各种自然语言处理任务。
Instruction Tuning:指令微调,是指针对每个任务,单独生成指令(instruction),通过在若干个任务上进行微调,然后在具体的任务上进行评估泛化能力。通常是在公开的大量的NLP任务数据集合上进行的,用于激发语言模型的理解能力,通过给出更明显的指令,让模型去理解并做出正确的反馈。指令微调是一种以人类提供的指令为基础的技术,允许模型根据具体任务需求进行微调。在微调过程中,模型与人的任务指导或示例进行交互,根据输入和任务要求进行相应调整,从而生成更准确、更合理的回答或输出。这使模型更好地适应特定应用场景或任务,提高输出的质量和准确度。
Prompt tuning:提示学习,机器学习当中的一类学习方法:在不显著改变预训练语言模型结构和参数的情况下,通过向输入增加“提示信息”、作为一种信息增强来大幅改善模型的效果,他可以看作是一种对任务的指令,同时也是一种对预训练目标的复用,其本质是参数有效性训练的增强,通过单独生成prompt模板,然后在每个任务上进行微调与评估。指令微调和提示学习是增强大型生成式语言模型适应能力的关键技术,它们之间的关系密切。对于提示学习,它是构建众多基于大语言模型的应用程序的重要来源。在指令微调过程中,提示也发挥着至关重要的作用。提示是一种向模型提供的特定信息或上下文线索,可以包括任务的概括、问题的描述,或是输入和期望输出之间的映射关系。通过清晰的提示,可以激发模型在解决特定任务时更加专注和准确。提示与模型的互动有助于模型进行针对性的调整,生成满足要求的输出。在LLM模型的应用过程中,提示学习可以作为一种微调技术,帮助LLM模型更好地适应特定的任务或领域。例如,对于一个机器翻译任务,可以先使用LLM模型进行初步翻译,然后使用提示学习来微调模型的翻译结果,使其更符合目标语言的文化背景和习惯表达。
Transformer:是一种神经网络,它通过提取序列数据中的关系来学习上下文并因此学习含义。Transformer模型应用了一组不断发展的数学技术,称为注意力或自我注意力,以检测甚至是系列中遥远的数据元素相互影响和相互依赖的微妙方式。LLM模型和Transformer有着密切的关系。实际上,LLM模型通常采用的是Transformer架构,这种架构可以并行处理输入序列中的每个元素,使得LLM模型在处理大量文本数据时更加高效。在LLM模型中,Transformer也被用于各种自然语言处理任务,如文本摘要、机器翻译和情感分析等。通过训练大量的文本数据,LLM模型可以学习语言数据中的复杂模式,并生成具有意义的文本。另外,LLM模型和Transformer也与NLP领域中的其他技术密切相关。例如,它们可以与词嵌入(word embeddings)技术结合使用,以更好地表示和理解文本中的词和短语。此外,LLM模型也可以与其他模型集成,以创建更强大的自然语言处理系统。
在具体阐述本申请实施例之前,对与本申请实施例有关的相关技术背景进行介绍,以便于本申请领域技术人员理解。
随着大型生成式语言模型的迅速发展,越来越多的大型生成式语言模型涌现出来。常规的大型生成式语言模型的训练是基于通用数据进行的,在这一基础上,可以基于提示学习和指令微调等方法再次对常规的大型生成式语言模型进行训练,使得其具备专业知识,能够执行专业领域的特定任务。以智能编程为例,智能编程可以被理解为基于大型生成式语言模型生成可以执行某种功能的代码文本。
由于大型生成式语言模型是一种生成式文本信息处理模型,其文本生成的原理是基于文字出现概率生成文本,体现的是一种推理过程。因此,目前基于大型生成式语言模型生成的代码文本的质量,一方面和大型生成式语言模型的训练数据质量相关,比如,如果大型生成式语言模型的训练数据质量好,则该大型生成式语言模型可能可以生成高质量的代码文本,如果大型生成式语言模型的训练数据质量差,则该大型生成式语言模型可能不可以生成高质量的代码文本;另一方面代码文本的质量也可能与需要实现的代码功能本身或相关的输入信息有关,比如,如果该功能相关的输入信息对该功能描述的较为准确,并且该功能是一种简单且常见的功能,则代码文本的质量可能较高,如果该功能相关的输入信息对该功能描述的较为模糊,或者该功能是一种晦涩且复杂的功能,则代码文本的质量可能较低。
但是,目前的相关技术并不能够准确地评估大型生成式语言模型所生成的代码文本的质量,而且面向用户所提供的大型生成式语言模型的训练数据一般是保密的,用户难以深入了解训练数据的质量好坏,因此每次用户提问要求大型生成式语言模型生成针对某功能的代码文本,未必是该大型生成式语言模型所擅长生成的,难以从这一角度控制大型生成式语言模型所生成的代码文本的质量,从而导致大型生成式语言模型生成的代码文本质量不稳定,难以满足用户需求。
如果代码文本的质量不高,很容易会产生代码文本难以实际运行的问题,或者即使代码文本的质量够高,也依然还是可能进一步产生代码实际难以运行的问题。产生这一技术问题的本质原因在于代码文本是推理出来的结果,没有实际运行过。在实际运行的环节可能出现执行错误。当错误发生时,通常是通过人工进行纠错,这将导致代码的执行和调试工作,还是需要人工介入,费时费力。
有鉴于此,本申请实施例提供一种代码文本生成方法,该方法旨在在基于大型生成式语言模型自动生成代码文本的场景中,在相关技术不能对代码质量进行准确评估并且难以通过约束用户输入的提问控制生成出的代码文本质量的前提下,提供一种能够基于大型生成式语言模型输出质量稳定的代码文本的技术方案。并且,在得到高质量的代码文本的前提下,本申请实施例还可以提供一种自动进行代码文本调整的方法,通过将代码文本在执行环节的调试过程,融入大型生成式语言模型调整代码的过程中,触发大型生成式语言模型对执行结果进行判断,循环地对执行结果进行优化和改进,得到最终符合预期且可以执行的代码,从而从可执行角度进一步提高大型生成式语言模型输出代码的质量。
具体来说,本申请实施例提供一种代码文本生成方法,该代码文本生成方法可以通过使用大型生成式语言模型集群的方式,一次性生成针对提问信息的多个代码段,并要求该大型生成式语言模型集群对各多个代码段均进行解释,从而判断出每一代码段是否符合提问信息的代码要求。比如,可以要求多个大型生成式语言模型进行竞争性生成多个代码段,并将代码段进行互换解释,从而更加准确客观地判断代码段是否符合要求。通过引入投票机制选出得票最多的最优代码段,当然,如果得票相同时,还可以通过引入仲裁角色的大型生成式语言模型来对得票相同的代码段进行选择,从而得到质量稳定的高质量代码段。
进一步地,还可以在已经获取高质量的代码段的基础上,从可执行角度进一步优化该代码段。通过将该代码段的执行调试过程,融入大型生成式语言模型生成代码的过程中,大型生成式语言模型对执行结果进行判断,循环地对执行结果进行优化和改进,得到最终符合预期且可以执行的代码段,从而从可执行角度进一步提高代码文本的质量。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的应用程序运行环境的示意图。该应用程序运行环境可以包括:终端10和服务器20。
终端10包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、游戏主机、电子书阅读器、多媒体播放设备、可穿戴设备等电子设备。终端10中可以安装应用程序的客户端。
在本申请实施例中,上述应用程序可以是任何能够提供代码文本生成服务的应用程序。典型地,该应用程序可以为编程类应用程序。当然,除了编程类应用程序之外,其它类型的应用程序中也可以提供依赖代码文本生成的服务。例如,软件开发类应用程序、新闻类应用程序、社交类应用程序、互动娱乐类应用程序、浏览器应用程序、购物类应用程序、内容分享类应用程序、虚拟现实(Virtual Reality,VR)类应用程序、增强现实(AugmentedReality,AR)类应用程序等,本申请实施例对此不作限定。本申请实施例对此不作限定。可选地,终端10中运行有上述应用程序的客户端。
服务器20用于为终端10中的应用程序的客户端提供后台服务。例如,服务器20可以是上述应用程序的后台服务器。服务器20可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,服务器20同时为多个终端10中的应用程序提供后台服务。
可选地,终端10和服务器20之间可通过网络30进行互相通信。终端10以及服务器20可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
请参考图2,其示出了本申请一个实施例提供的代码文本生成方法的流程图。该方法可应用于计算机设备中,上述计算机设备是指具备数据计算和处理能力的电子设备,如各步骤的执行主体可以是图1所示的应用程序运行环境中的服务器20。该方法可以包括以下几个步骤:
S201.获取提问信息,上述提问信息用于指示大规模语言生成模型输出满足上述提问信息对应的代码要求的代码文本;
本申请实施例并不对提问信息的内容和语态进行限定,其可以是任何文本类型的内容,也不一定是疑问语态,可以将其理解为在希望与机器形成对话的场景下,用于引导机器进行代码文本输出所需要的文本信息。其可以是疑问语态的句子,比如“你是一名软件开发工程师,可以帮忙实现{具体功能:冒泡排序}的代码,用python语言实现么”,也可以是陈述语态的句子,比如,“你是一名软件开发工程师,请帮忙实现{具体功能:冒泡排序}的代码,用python语言实现”。
本申请实施例中并不对提问信息要求编程所使用的语言进行限定,其包括但不限于c、c++、python、java、javascript等;本申请实施例中并不对提问信息使用语言做限制,可以是中文、英文、日文等语言;
S202.将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段,上述大型生成式语言模型集群包括至少两个大型生成式语言模型;
本申请实施例提出单一的大型生成式语言模型难以满足输出高质量代码文本的客观需要,因此,本申请实施例提出构建大型生成式语言模型集群的概念。上述大型生成式语言模型集群包括至少两个大型生成式语言模型。
本申请实施例并不限定大型生成式语言模型(LLM)具体是哪个模型,比如,该模型可以是腾讯混元大模型,腾讯混元大模型是腾讯自主研发的通用大语言模型,具有超千亿参数规模、预训练语料超2万亿,拥有强大的中文理解与创作能力、逻辑推理能力,以及可靠的任务执行能力。该模型具有多轮对话、上下文理解及长文记忆等核心优势能力。比如,该模型还可以是下述模型:
chatglm模型:是一种基于Transformer结构的语言模型,它学习了大量的对话语料库,因此,在对话生成和理解任务上表现出优秀的性能。sensechat是在千亿级参数的基础上进行升级优化的结果。该模型在多个领域具备广泛的应用能力,为用户提供更加全面和准确的语言处理服务。
MOSS模型:是一种基于语言模型的自然语言生成模型,该模型的全称为“Mappingand Overcoming Sparsity for Text Generation through Conditional VariationalAutoencoder with Cross-Domain Latent Space Exploration”,是一种基于变分自编码器(Variational Autoencoder,VAE)的文本生成模型。MOSS模型在多项任务中取得了非常好的效果,如文本生成、文本修复、文本重构等。
本申请实施例并不限定将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段的具体方法,比如,可以将提问信息输入大型生成式语言模型集群中部分大型生成式语言模型,得到至少两个代码段。也可以将上述提问信息输入大型生成式语言模型集群中每一大型生成式语言模型,得到各上述大型生成式语言模型分别输出的代码段。
S203.将上述至少两个代码段输入上述大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息;
针对每一代码段,通过基于代码段生成用于要求大型生成式语言模型进行解释的提问信息,并将这种提问信息输入对应的大型生成式语言模型,即可触发大型生成式语言模型对该代码段进行解释,因此,本申请实施例对如何触发大型生成式语言模型输出文本解释信息的过程不做赘言。
本申请实施例并不限定将用于要求大型生成式语言模型对代码段进行解释的提问信息输入大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息的具体方法,比如,可以将用于要求大型生成式语言模型对代码段进行解释的提问信息输入大型生成式语言模型集群中随机一个大型生成式语言模型,得到对应的代码段的文本解释信息。也可以针对任一代码段,将用于要求大型生成式语言模型对上述代码段进行解释的提问信息输入目标模型,得到上述代码段对应的文本解释信息,上述目标模型为除去之前生成该上述代码段的大型生成式语言模型之外的,并且属于上述大型生成式语言模型集群的任一大型生成式语言模型。
S204.将各上述文本解释信息分别与上述提问信息进行匹配操作,得到匹配结果;
上述匹配操作目的在于确定每一文本解释信息与提问信息是否相符,如果相符,就说明该文本解释信息对应的代码段符合该提问信息的代码要求,能够完成提问信息指示的功能,沿用前文示例,如果文本解释信息对应的代码段符合该提问信息的代码要求,这样的代码段应当是基于python实现的,并且能够执行冒泡排序操作的代码段。本申请实施例并不对匹配操作如何执行进行赘言,相关技术中进行文本语义匹配的技术都可以用于执行该匹配操作。
S205.在上述匹配结果指示存在与上述提问信息相匹配的目标文本解释信息的情况下,基于上述目标文本解释信息对应的代码段得到针对上述提问信息的代码文本生成结果。
本申请实施例中,在上述匹配结果指示不存在与上述提问信息相匹配的目标文本解释信息的情况下,停止生成针对上述提问信息的代码文本;这种情况可以被理解为该提问信息所要求生成的代码文本超出了大型生成式语言模型集群的能力范围,比如,可能是要求实现的功能过于复杂,要求实现的功能晦涩难懂,都可能导致大型生成式语言模型集群难以输出符合提问信息要求的代码文本,这种情况下可以停止生成针对上述提问信息的代码文本。
在上述目标文本解释信息包括单一文本解释信息的情况下,可以直接将上述单一文本解释信息对应的代码段作为上述提问信息的代码文本生成结果。
请参考图3,其示出本申请实施例中代码生成方式示意图一。图3以大型生成式语言模型集群包括两个大型生成式语言模型为例,分别为LLM0和LLM1,他们分别基于提问信息(代码要求)生成的代码段命名为代码0和代码1。将用于触发针对代码0进行解释的提问信息提交至LLM1,得到针对代码0的文本解释信息(解释0)。将用于触发针对代码1进行解释的提问信息提交至LLM0,得到针对代码1的文本解释信息(解释1)。将解释0和解释1分别和提问信息(代码要求)进行对比,符合代码要求的代码段被留下,不符合的丢弃。若此时代码0和代码1均难以保留,则停止生成针对上述提问信息的代码文本,提示用户难以正确处理代码要求;若代码0和代码1中只保留了其中一份,则保留的这份为最终代码。
在上述目标文本解释信息包括至少两个文本解释信息的情况下,可以确定目标模型集群,上述目标模型集群包括上述大型生成式语言模型集群中的至少两个大型生成式语言模型;将上述目标文本解释信息中的各文本解释信息分别对应的代码段均输入上述目标模型集群,触发上述目标模型集群中每一大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;根据目标模型集群的投票结果,得到针对上述提问信息的代码文本生成结果。
基于上述目标文本解释信息中的各文本解释信息分别对应的代码段,通过基于这些代码段生成用于要求大型生成式语言模型进行投票的提问信息,并将这种提问信息输入对应的大型生成式语言模型,即可触发大型生成式语言模型为这些代码段进行投票,选择最优代码段,本申请实施例对如何触发大型生成式语言模型投票的过程不做赘言。
在一个实施方式中,在上述投票结果指示存在单一获得最高票数的代码段的情况下,可以将上述单一获得最高票数的代码段作为上述提问信息的代码文本生成结果。在上述投票结果指示存在多个获得最高票数的代码段的情况下,可以在多个获得最高票数的代码段中随机选择一个代码段作为上述提问信息的代码文本生成结果。
在另一个实施方式中,在上述投票结果指示存在单一获得最高票数的代码段的情况下,可以将上述单一获得最高票数的代码段作为上述提问信息的代码文本生成结果。在上述投票结果指示存在多个获得最高票数的代码段的情况下,如果上述大型生成式语言模型集群包括至少三个大型生成式语言模型,上述目标模型集群是上述大型生成式语言模型集群的真子集,还可以通过仲裁的方式选择用于作为代码文本生成结果的代码段。
请参考图4,其示出本申请实施例的代码质量仲裁方法流程图。上述根据目标模型集群的投票结果,得到针对上述提问信息的代码文本生成结果,包括:
S401.在上述投票结果指示存在多个获得最高票数的代码段的情况下,确定上述大型生成式语言模型集群与上述目标模型集群的差集;
具体地,该差集由属于大型生成式语言模型集群但不属于目标模型集群的大型生成式语言模型构成,确定该差集的目的在于引入客观的第三方来执行仲裁。
S402.将上述多个获得最高票数的代码段输入上述差集,触发上述差集中的大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
上述差集中的大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票与前文的投票过程基于相同发明构思,在此不做赘言。本申请实施例并不限定上述差集中的哪个大型生成式语言模型执行步骤S402,上述差集中的任一大型生成式语言模型都可以执行该过程。
S403.根据上述差集的投票结果,得到针对上述提问信息的代码文本生成结果。
本申请实施例中,可以将上述差集的投票结果中最高票数的代码段作为上述提问信息的代码文本生成结果。当然,如果出现平票情况,可以随机选择一个得到最高票数的代码段作为上述提问信息的代码文本生成结果。
请参考图5,其示出本申请实施例的代码生成方式示意图二。大型生成式语言模型集群包括三个大型生成式语言模型为例,分别为LLM0、LLM1和LLM2,其中,LLM2作为第三方仲裁所需的大型生成式语言模型,不参与代码生成和第一轮的投票过程。因此,代码生成过程可以参考图3。如果代码0和代码1在图3描述的过程中都被保留下来,可以进行第一轮投票,甚至可以参与进行后续的仲裁。代码0和代码1同时输入给LLM0和LLM1,要求LLM0和LLM1选择其中更优的代码,这可能产生三种情况:
代码0得2票,则代码0作为上述提问信息的代码文本生成结果;
代码1得2票,则代码1作为上述提问信息的代码文本生成结果;
代码0和代码1各得1票,则引入仲裁LLM2,由仲裁LLM2决定更优代码段,将更优代码段作为上述提问信息的代码文本生成结果。仲裁的方式依然是投票,对此不做赘言。
请参考图6,其示出本申请实施例的代码生成方式示意图三。本申请实施例中通过使用大型生成式语言模型集群的方式,一次性生成针对提问信息(代码要求)的多个代码段,通过对各代码段均进行交叉解释,可以进行代码意图判断,从而客观确定出符合代码要求的代码段,并将不符合代码要求的代码段丢弃。在必要的情况下,还可以通过择优投票和进一步的仲裁的方式选择出最终符合代码要求的代码段作为代码文本生成结果。
本申请实施例前述的方法已经可以得到高质量的代码文本生成结果了,在此基础上,还可以从可执行角度进一步地优化该代码文本生成结果,得到更高质量的代码文本。请参考图7,其示出本申请实施例的代码优化方法流程示意图。该代码优化方法包括:
S701.执行上述代码文本生成结果,得到代码执行结果;基于上述代码执行结果和上述提问信息,生成执行结果查询信息;
本申请实施例可以自动执行代码文本生成结果(比如Text1),得到代码执行结果。基于该代码执行结果可以生成用于要求大型生成式语言模型判断该代码执行结果是否符合提问信息的代码要求的执行结果查询信息,该执行结果查询信息只要使用自然语言可以表达这一含义即可,对此不做赘言。
请参考图8,其示出本申请实施例基于执行结果进行的代码优化方法示意图一。基于提问信息(代码要求)prompt1使用前文方法可以得到代码文本生成结果(比如Text1),prompt1的提问格式可以类似于:“你是一名软件开发工程师,请帮忙实现{具体功能}的代码,用python语言实现。”。从代码文本生成结果(比如Text1)中提取出代码执行的依赖包和代码主体;根据提取出的依赖包名称,安装依赖包;若安装依赖包失败,则需要人工介入干预,协助安装依赖包;若依赖包安装成功,则开始执行代码主体;基于代码执行结果,和Text1组合成新的提问prompt2,prompt2即为执行结果查询信息。prompt2提问格式可以类似于:“以上代码执行结果为:{代码执行结果},是否符合预期?”
S702.将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述代码执行结果与上述提问信息的相符程度;在上述查询结果指示上述代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本生成结果;在上述查询结果指示上述代码执行结果符合上述提问信息的代码要求的情况下,直接输出上述代码文本生成结果。
请参考图9,其示出本申请实施例查询结果示意图。将得到的prompt2输入大型生成式语言模型,本申请并不对大型生成式语言模型进行限定,其可以为大型生成式语言模型集群中任一大型生成式语言模型,要求其判断结果是否符合代码执行的预期,得到查询结果Text2;Text2中指示代码执行结果符合预期,这样就直接得到了最终的代码文本生成结果。否则,还需要进一步的优化。
当然,如果上述代码执行结果不符合上述提问信息的代码要求,可以执行具体的优化方式。在一个实施例中,上述优化上述代码文本生成结果,包括:基于上述执行结果查询信息和上述代码文本生成结果,生成优化请求信息;将上述优化请求信息输入大型生成式语言模型,得到代码文本优化结果。还可以执行上述代码文本优化结果,得到针对上述代码文本优化结果的代码执行结果;基于上述代码执行结果和上述提问信息,生成执行结果查询信息;将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述针对上述代码文本优化结果的代码执行结果与上述提问信息的相符程度;在上述查询结果指示上述针对上述代码文本优化结果的代码执行结果符合上述提问信息的代码要求的情况下,直接输出上述代码文本优化结果;在上述查询结果指示上述针对上述代码文本优化结果的代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本优化结果,直至得到与上述提问信息相符的代码文本优化结果。通过循环优化的方式最终输出符合上述提问信息的代码要求的代码文本优化结果。判断代码执行结果是否与提问信息的代码要求相符的过程前文有述,不做赘言。循环优化的过程前文有述,也不做赘言。
请参考图10,其示出本申请实施例优化方法示意图二。若上述代码执行结果不符合上述提问信息的代码要求,则可以执行优化步骤,该优化步骤可以通过将prompt2(包含代码文本生成结果Text1和执行结果)作为prompt3重新提问,要求大型生成式语言模型根据Text1和执行结果优化代码,给出新的代码。prompt3提问格式可以类似于:“你是一名软件开发工程师,请帮忙实现{具体功能}的代码,用python语言实现。你给出的代码是{Text1中代码},实际执行结果是{实际执行结果},请给出新的代码。”重复优化过程,直到结果符合预期,得到最终的可执行代码。当然,这一个优化步骤也可以如图10所示,在该大型生成式语言模型发现代码有误后,自行优化,并输出新的代码。优化过程可以被循环执行,直至最终输出最优代码文本。
本申请实施例说明,大型生成式语言模型根据用户的输入即可执行相关的任务,这是大型生成式语言模型自身的功能特点,因此,本申请实施例对于如何触发大型生成式语言模型执行特定操作的过程未做详述,因为只要输入该大型生成式语言模型的提问信息对该特定操作的要求描述清楚,大型生成式语言模型自然可以自行理解并进行执行,无需赘言。
本申请实施例提供的代码生成方案可以触发多个大型生成式语言模型竞争性生成代码,然后通过代码交叉解释进行代码要求判断,并结合代码择优投票、代码择优仲裁等步骤,确保生成最优的高质量代码。由于不同大型生成式语言模型的代码生成能力可能不同,而且这种能力存在差异且较难合理评估,本申请实施例另辟蹊径确定出了质量最高的代码文本。大型生成式语言模型对于自己生成的代码,倾向认为是合理的,通过大型生成式语言模型间交叉解释代码,能够更客观地评价生成代码的质量;当存在多份合理代码生成结果时,通过引入第三方仲裁大型生成式语言模型进行判断,节省了人力判断的投入。
下述为本申请装置实施例,可用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图11,其示出了本申请一个实施例提供的代码文本生成装置的框图。该装置具有实现上述代码文本生成方法的功能,上述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是计算机设备,也可以设置在计算机设备中。该装置可以包括:
提问信息获取模块1101,用于获取提问信息,上述提问信息用于指示大规模语言生成模型输出满足上述提问信息对应的代码要求的代码文本;
代码文本生成模块1102,用于执行下述操作:
将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段,上述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将上述至少两个代码段输入上述大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息;
将各上述文本解释信息分别与上述提问信息进行匹配操作,得到匹配结果;
在上述匹配结果指示存在与上述提问信息相匹配的目标文本解释信息的情况下,基于上述目标文本解释信息对应的代码段得到针对上述提问信息的代码文本生成结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
在上述目标文本解释信息包括至少两个文本解释信息的情况下,确定目标模型集群,上述目标模型集群包括上述大型生成式语言模型集群中的至少两个大型生成式语言模型;
将上述目标文本解释信息中的各文本解释信息分别对应的代码段均输入上述目标模型集群,触发上述目标模型集群中每一大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据目标模型集群的投票结果,得到针对上述提问信息的代码文本生成结果。
在一个实施例中,上述大型生成式语言模型集群包括至少三个大型生成式语言模型,上述目标模型集群是上述大型生成式语言模型集群的真子集,代码文本生成模块1102,用于执行下述操作:
在上述投票结果指示存在多个获得最高票数的代码段的情况下,确定上述大型生成式语言模型集群与上述目标模型集群的差集;
将上述多个获得最高票数的代码段输入上述差集,触发上述差集中的大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据上述差集的投票结果,得到针对上述提问信息的代码文本生成结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
上述将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段,包括:
将上述提问信息输入大型生成式语言模型集群中每一大型生成式语言模型,得到各上述大型生成式语言模型分别输出的代码段;
上述将上述至少两个代码段输入上述大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息,包括:
针对每一代码段,将上述代码段输入目标模型,得到上述代码段对应的文本解释信息,上述目标模型为除去输出上述代码段的大型生成式语言模型之外的,并且属于上述大型生成式语言模型集群的任一大型生成式语言模型。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
在上述匹配结果指示不存在与上述提问信息相匹配的目标文本解释信息的情况下,停止生成针对上述提问信息的代码文本;
在上述目标文本解释信息包括单一文本解释信息的情况下,将上述单一文本解释信息对应的代码段作为上述提问信息的代码文本生成结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
在上述投票结果指示存在单一获得最高票数的代码段的情况下,将上述单一获得最高票数的代码段作为上述提问信息的代码文本生成结果;
上述根据上述差集的投票结果,得到针对上述提问信息的代码文本生成结果,包括:将上述差集的投票结果中最高票数的代码段作为上述提问信息的代码文本生成结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
执行上述代码文本生成结果,得到代码执行结果;
基于上述代码执行结果和上述提问信息,生成执行结果查询信息;
将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述代码执行结果与上述提问信息的相符程度;
在上述查询结果指示上述代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本生成结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
基于上述执行结果查询信息和上述代码文本生成结果,生成优化请求信息;
将上述优化请求信息输入大型生成式语言模型,得到代码文本优化结果。
在一个实施例中,代码文本生成模块1102,用于执行下述操作:
执行上述代码文本优化结果,得到针对上述代码文本优化结果的代码执行结果;
基于上述代码执行结果和上述提问信息,生成执行结果查询信息;
将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述针对上述代码文本优化结果的代码执行结果与上述提问信息的相符程度;
在上述查询结果指示上述针对上述代码文本优化结果的代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本优化结果,直至得到与上述提问信息相符的代码文本优化结果。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图12,其示出了本申请一个实施例提供的计算机设备的结构框图。该计算机设备可以是服务器,以用于执行上述代码文本生成方法。具体来讲:
计算机设备1000包括中央处理单元(Central Processing Unit,CPU)1001、包括随机存取存储器(Random Access Memory,RAM)1002和只读存储器(Read Only Memory,ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。计算机设备1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O(Input/Output)系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。
基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中显示器1008和输入设备1009都通过连接到系统总线1005的输入输出控制器1010连接到中央处理单元1001。基本输入/输出系统1006还可以包括输入输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。大容量存储设备1007及其相关联的计算机可读介质为计算机设备1000提供非易失性存储。也就是说,大容量存储设备1007可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read Only Memory,电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。
根据本申请的各种实施例,计算机设备1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1000可以通过连接在系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括计算机程序,该计算机程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述代码文本生成方法。
在示例性实施例中,还提供了一种计算机可读存储介质,上述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、上述至少一段程序、上述代码集或上述指令集在被处理器执行时以实现上述代码文本生成方法。
具体地,该代码文本生成方法包括:
获取提问信息,上述提问信息用于指示大规模语言生成模型输出满足上述提问信息对应的代码要求的代码文本;
将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段,上述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将上述至少两个代码段输入上述大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息;
将各上述文本解释信息分别与上述提问信息进行匹配操作,得到匹配结果;
在上述匹配结果指示存在与上述提问信息相匹配的目标文本解释信息的情况下,基于上述目标文本解释信息对应的代码段得到针对上述提问信息的代码文本生成结果。
在一个实施例中,上述基于上述目标文本解释信息对应的代码段得到针对上述提问信息的代码文本生成结果,包括:
在上述目标文本解释信息包括至少两个文本解释信息的情况下,确定目标模型集群,上述目标模型集群包括上述大型生成式语言模型集群中的至少两个大型生成式语言模型;
将上述目标文本解释信息中的各文本解释信息分别对应的代码段均输入上述目标模型集群,触发上述目标模型集群中每一大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据目标模型集群的投票结果,得到针对上述提问信息的代码文本生成结果。
在一个实施例中,上述大型生成式语言模型集群包括至少三个大型生成式语言模型,上述目标模型集群是上述大型生成式语言模型集群的真子集,上述根据目标模型集群的投票结果,得到针对上述提问信息的代码文本生成结果,包括:
在上述投票结果指示存在多个获得最高票数的代码段的情况下,确定上述大型生成式语言模型集群与上述目标模型集群的差集;
将上述多个获得最高票数的代码段输入上述差集,触发上述差集中的大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据上述差集的投票结果,得到针对上述提问信息的代码文本生成结果。
在一个实施例中,其特征在于:
上述将上述提问信息输入大型生成式语言模型集群,得到至少两个代码段,包括:
将上述提问信息输入大型生成式语言模型集群中每一大型生成式语言模型,得到各上述大型生成式语言模型分别输出的代码段;
上述将上述至少两个代码段输入上述大型生成式语言模型集群,得到每一上述代码段对应的文本解释信息,包括:
针对每一代码段,将上述代码段输入目标模型,得到上述代码段对应的文本解释信息,上述目标模型为除去输出上述代码段的大型生成式语言模型之外的,并且属于上述大型生成式语言模型集群的任一大型生成式语言模型。
在一个实施例中,上述方法还包括:
在上述匹配结果指示不存在与上述提问信息相匹配的目标文本解释信息的情况下,停止生成针对上述提问信息的代码文本;
在上述目标文本解释信息包括单一文本解释信息的情况下,将上述单一文本解释信息对应的代码段作为上述提问信息的代码文本生成结果。
在一个实施例中,上述方法还包括:
在上述投票结果指示存在单一获得最高票数的代码段的情况下,将上述单一获得最高票数的代码段作为上述提问信息的代码文本生成结果;
上述根据上述差集的投票结果,得到针对上述提问信息的代码文本生成结果,包括:将上述差集的投票结果中最高票数的代码段作为上述提问信息的代码文本生成结果。
在一个实施例中,上述方法还包括:
执行上述代码文本生成结果,得到代码执行结果;
基于上述代码执行结果和上述提问信息,生成执行结果查询信息;
将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述代码执行结果与上述提问信息的相符程度;
在上述查询结果指示上述代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本生成结果。
在一个实施例中,上述优化上述代码文本生成结果,包括:
基于上述执行结果查询信息和上述代码文本生成结果,生成优化请求信息;
将上述优化请求信息输入大型生成式语言模型,得到代码文本优化结果。
在一个实施例中,上述方法还包括:
执行上述代码文本优化结果,得到针对上述代码文本优化结果的代码执行结果;
基于上述代码执行结果和上述提问信息,生成执行结果查询信息;
将上述执行结果查询信息输入大型生成式语言模型,得到查询结果,上述查询结果指示上述针对上述代码文本优化结果的代码执行结果与上述提问信息的相符程度;
在上述查询结果指示上述针对上述代码文本优化结果的代码执行结果不符合上述提问信息的代码要求的情况下,优化上述代码文本优化结果,直至得到与上述提问信息相符的代码文本优化结果。
可选地,该计算机可读存储介质可以包括:ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取记忆体)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述代码文本生成方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
另外,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种代码文本生成方法,其特征在于,所述方法包括:
获取提问信息,所述提问信息用于指示大规模语言生成模型输出满足所述提问信息对应的代码要求的代码文本;
将所述提问信息输入大型生成式语言模型集群,得到至少两个代码段,所述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将所述至少两个代码段输入所述大型生成式语言模型集群,得到每一所述代码段对应的文本解释信息;
将各所述文本解释信息分别与所述提问信息进行匹配操作,得到匹配结果;
在所述匹配结果指示存在与所述提问信息相匹配的目标文本解释信息的情况下,基于所述目标文本解释信息对应的代码段得到针对所述提问信息的代码文本生成结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标文本解释信息对应的代码段得到针对所述提问信息的代码文本生成结果,包括:
在所述目标文本解释信息包括至少两个文本解释信息的情况下,确定目标模型集群,所述目标模型集群包括所述大型生成式语言模型集群中的至少两个大型生成式语言模型;
将所述目标文本解释信息中的各文本解释信息分别对应的代码段均输入所述目标模型集群,触发所述目标模型集群中每一大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据目标模型集群的投票结果,得到针对所述提问信息的代码文本生成结果。
3.根据权利要求2所述的方法,其特征在于,所述大型生成式语言模型集群包括至少三个大型生成式语言模型,所述目标模型集群是所述大型生成式语言模型集群的真子集,所述根据目标模型集群的投票结果,得到针对所述提问信息的代码文本生成结果,包括:
在所述投票结果指示存在多个获得最高票数的代码段的情况下,确定所述大型生成式语言模型集群与所述目标模型集群的差集;
将所述多个获得最高票数的代码段输入所述差集,触发所述差集中的大型生成式语言模型对获取到的各代码段进行质量比较,为最高质量的代码段投票;
根据所述差集的投票结果,得到针对所述提问信息的代码文本生成结果。
4.根据权利要求1至3中任意一项所述的方法,其特征在于:
所述将所述提问信息输入大型生成式语言模型集群,得到至少两个代码段,包括:将所述提问信息输入大型生成式语言模型集群中每一大型生成式语言模型,得到各所述大型生成式语言模型分别输出的代码段;
所述将所述至少两个代码段输入所述大型生成式语言模型集群,得到每一所述代码段对应的文本解释信息,包括:
针对每一代码段,将所述代码段输入目标模型,得到所述代码段对应的文本解释信息,所述目标模型为除去输出所述代码段的大型生成式语言模型之外的,并且属于所述大型生成式语言模型集群的任一大型生成式语言模型。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述匹配结果指示不存在与所述提问信息相匹配的目标文本解释信息的情况下,停止生成针对所述提问信息的代码文本;
在所述目标文本解释信息包括单一文本解释信息的情况下,将所述单一文本解释信息对应的代码段作为所述提问信息的代码文本生成结果。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述投票结果指示存在单一获得最高票数的代码段的情况下,将所述单一获得最高票数的代码段作为所述提问信息的代码文本生成结果;
所述根据所述差集的投票结果,得到针对所述提问信息的代码文本生成结果,包括:将所述差集的投票结果中最高票数的代码段作为所述提问信息的代码文本生成结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
执行所述代码文本生成结果,得到代码执行结果;
基于所述代码执行结果和所述提问信息,生成执行结果查询信息;
将所述执行结果查询信息输入大型生成式语言模型,得到查询结果,所述查询结果指示所述代码执行结果与所述提问信息的相符程度;
在所述查询结果指示所述代码执行结果不符合所述提问信息的代码要求的情况下,优化所述代码文本生成结果。
8.根据权利要求7所述的方法,其特征在于,所述优化所述代码文本生成结果,包括:
基于所述执行结果查询信息和所述代码文本生成结果,生成优化请求信息;
将所述优化请求信息输入大型生成式语言模型,得到代码文本优化结果。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
执行所述代码文本优化结果,得到针对所述代码文本优化结果的代码执行结果;
基于所述代码执行结果和所述提问信息,生成执行结果查询信息;
将所述执行结果查询信息输入大型生成式语言模型,得到查询结果,所述查询结果指示所述针对所述代码文本优化结果的代码执行结果与所述提问信息的相符程度;
在所述查询结果指示所述针对所述代码文本优化结果的代码执行结果不符合所述提问信息的代码要求的情况下,优化所述代码文本优化结果,直至得到与所述提问信息相符的代码文本优化结果。
10.一种代码文本生成装置,其特征在于,所述装置包括:
提问信息获取模块,用于获取提问信息,所述提问信息用于指示大规模语言生成模型输出满足所述提问信息对应的代码要求的代码文本;
代码文本生成模块,用于执行下述操作:
将所述提问信息输入大型生成式语言模型集群,得到至少两个代码段,所述大型生成式语言模型集群包括至少两个大型生成式语言模型;
将所述至少两个代码段输入所述大型生成式语言模型集群,得到每一所述代码段对应的文本解释信息;
将各所述文本解释信息分别与所述提问信息进行匹配操作,得到匹配结果;
在所述匹配结果指示存在与所述提问信息相匹配的目标文本解释信息的情况下,基于所述目标文本解释信息对应的代码段得到针对所述提问信息的代码文本生成结果。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至9任一项所述的代码文本生成方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一项所述的代码文本生成方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行以实现如权利要求1至9任一项所述的代码文本生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311400760.7A CN117453192A (zh) | 2023-10-26 | 2023-10-26 | 代码文本生成方法、装置、设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311400760.7A CN117453192A (zh) | 2023-10-26 | 2023-10-26 | 代码文本生成方法、装置、设备、存储介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453192A true CN117453192A (zh) | 2024-01-26 |
Family
ID=89579304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311400760.7A Pending CN117453192A (zh) | 2023-10-26 | 2023-10-26 | 代码文本生成方法、装置、设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453192A (zh) |
-
2023
- 2023-10-26 CN CN202311400760.7A patent/CN117453192A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897941B (zh) | 对话生成方法、网络训练方法、装置、存储介质及设备 | |
CN109376222B (zh) | 问答匹配度计算方法、问答自动匹配方法及装置 | |
CN114565104A (zh) | 语言模型的预训练方法、结果推荐方法及相关装置 | |
CN110234018B (zh) | 多媒体内容描述生成方法、训练方法、装置、设备及介质 | |
CN113792112A (zh) | 视觉语言任务处理系统、训练方法、装置、设备及介质 | |
CN116935169A (zh) | 文生图模型训练方法以及文生图方法 | |
Tan et al. | Context-aware answer sentence selection with hierarchical gated recurrent neural networks | |
CN108595629A (zh) | 用于答案选择系统的数据处理方法及应用 | |
CN111310436A (zh) | 基于人工智能的文本处理方法、装置及电子设备 | |
CN113836866B (zh) | 文本编码方法、装置、计算机可读介质及电子设备 | |
CN117077792B (zh) | 一种基于知识图谱生成提示数据的方法及装置 | |
CN115310551A (zh) | 文本分析模型训练方法、装置、电子设备和存储介质 | |
CN115803734A (zh) | 使用动作解释的自然语言丰富 | |
CN113705191A (zh) | 样本语句的生成方法、装置、设备及存储介质 | |
JP2023156447A (ja) | 自然言語ソリューション | |
CN113849623B (zh) | 文本视觉问答方法和装置 | |
CN114330483A (zh) | 数据处理方法及模型训练方法、装置、设备、存储介质 | |
CN116974626B (zh) | 分析序列图生成方法、装置、设备和计算机可读存储介质 | |
CN113705207A (zh) | 语法错误识别方法及装置 | |
CN115658921A (zh) | 一种基于预训练语言模型的开放域科学知识发现方法和装置 | |
CN117453192A (zh) | 代码文本生成方法、装置、设备、存储介质及产品 | |
CN112749553B (zh) | 视频文件的文本信息处理方法、装置和服务器 | |
CN113407683A (zh) | 一种文本信息处理方法、装置、电子设备及存储介质 | |
CN117453885A (zh) | 提问信息处理方法、装置、设备、存储介质及产品 | |
CN115114904B (zh) | 语言模型的优化方法、装置以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |