CN119474351A 一种代码补全方法、装置、存储介质及设备 (科大讯飞股份有限公司)_第1页
CN119474351A 一种代码补全方法、装置、存储介质及设备 (科大讯飞股份有限公司)_第2页
CN119474351A 一种代码补全方法、装置、存储介质及设备 (科大讯飞股份有限公司)_第3页
CN119474351A 一种代码补全方法、装置、存储介质及设备 (科大讯飞股份有限公司)_第4页
CN119474351A 一种代码补全方法、装置、存储介质及设备 (科大讯飞股份有限公司)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

预先构建的代码片段候选库中获取与目标代码在的IDE工程中包含的所有代码文件构建的代码片段候选库来检索与目标代码片段相似的候选2获取待补全的目标代码文件;并从所述目标代码文件中提取目提取所述目标代码片段的目标嵌入向量,并基于所述目标嵌入向量从预目标代码文件所在的集成开发环境IDE工程中包含的将目标代码文件所在的IDE工程中包含的所有代码文件按照编码语言的特点进行切提取所述N个切分后的代码片段各自对应的切分3.根据权利要求2所述的方法,其特征在于,对所述N个切分后的代码片段进行编号,并按照编号将各个切分后的代码片段及其对当所述IDE工程中出现代码文件的变动时,对所述代码片段候选库中变动的代码文件从所述目标代码文件中获取待补全位置的上下文预设长度的源代码片利用faiss库,从预先构建的代码片段候将所述代码补全后的目标代码文件与待补全的目标代码文件进行去3获取单元,用于获取待补全的目标代码文件;并从所述目标代码第一提取单元,用于提取所述目标代码片段的目标嵌入向量码片段候选库是基于目标代码文件所在的集成开发环境IDE工程中包含的所有代码文件构输入单元,用于利用所述目标代码上下文和候选代码片段构建提示指令p所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令所述处理器执行时使所述处理器执行权利要求1_7任一项4的需求变得愈发强烈。在软件开发的过程中,集成开发环境(IntegratedDevelopment[0003]但现有的代码补全方法主要是先在IDE中打开的代码文件中使用杰卡德相似度找基于目标代码文件所在的集成开发环境IDE工程中包含的所有[0010]将目标代码文件所在的IDE工程中包含的所有代码文件按照编码语言的特点进行[0012]利用所述N个切分后的代码片段及其各自对应的切分嵌入向量,构成代码片段候[0013]一种可能的实现方式中,所述利用所述N个切分后的代码片段及其各自对应的切5[0014]对所述N个切分后的代码片段进行编号,并按照编号将各个切分后的代码片段及[0016]当所述IDE工程中出现代码文件的变动时,对所述代码片段候选库中变动的代码述目标嵌入向量从预先构建的代码片段候选库中获取与所述目标代码片段相似的候选代[0022]利用faiss库,从预先构建的代码片段候选库中获取与所述目标嵌入向量最相近述代码片段候选库是基于目标代码文件所在的集成开发环境IDE工程中包含的所有代码文[0028]输入单元,用于利用所述目标代码上下文和候选代码片段构建[0030]切分单元,用于将目标代码文件所在的IDE工程中包含的所有代码文件按照编码6[0034]对所述N个切分后的代码片段进行编号,并按照编号将各个切分后的代码片段及目标嵌入向量最相近的M个切分嵌入向量,并将所述M个切分嵌入向量对应的M个切分后的7[0051]可见,由于本申请是基于目标代码文件所在的IDE工程中包含的所有代码文件构围仅仅是IDE中的打开的(或其他打开过的)代码文件。这样的搜索范围可能会错过很多有8[0065]可见,由于本申请是基于目标代码文件所在的IDE工程中包含的所有代码文件构[0070]在本实施例中,将用户输入大语言模型(LLM)等代码生成软件或设备中任一需要补全位置的上下文预设长度(具体内容不限定,如可以获取上文3000token以及下文9度的源代码片段(如在开发人员顺序编写代码场景段(如开发人员将光标定位到已编写好的一段源段查找,进一步可以根据目标代码上下文的编码语言的特点,提取出目标代码片段作为果待补全位置在函数以外的位置,则截取待补全位置附近一定范围(如50行)的代码作为目标代码文件所在的集成开发环境IDE工程中包含的所有[0079]由于现有代码补全方法在查找相似代码片段时,是将在查找范围内的代码文件(即打开的或其他打开过的代码文件)中的代码简单地按一定的行数切分成代码段作为待言的特点使用不同的规则(规则具体内容不限定,可根据实际情况和经验值设定)进行切[0082]或者,再以IDE工程中包含的代码文件为Vue代码文件为例,对于Vue代码文件来[0084]通过步骤A将IDE工程中包含的所有代码文件进行切分得到N个切分后的代码片段各自对应的嵌入向量(此处将其定义为切分嵌入对应的切分后的代码片段和对应的切分嵌入向量进行更新,得到更新后的代码片段候选[0091]在此基础上,在通过步骤S101从待补全的目标代码文件中提取出目标代码片段应的嵌入向量(此处将其定义为目标嵌入向量),如可以将目标库,通过计算目标嵌入向量与预先构建的代码片段候选库中每一切分嵌入向量的相似度,将这M个切分嵌入向量对应的M个切分后的代码片段,作为与目标代码片段相似的M个候选[0093]可见,本实施例是使用了embedding模型等嵌入向量提取方法来辅助相似代码段>目标嵌入向量>代码候选库中最相似的M个切分嵌入向量>代码候选库中最相似的M个候不限定,如可以采用合页损失函数作为目标损失函数等)的取值来约束模型对输入的正样步骤S102从预先构建的代码片段候选库中获取到与目标代码片段相似的候选代码片段后,候选代码片段构建提示指令(prompt)发送给服务端的代码生成大语言模型LLM。服务端再将代码生成大语言模型LL生成的内容(即代码补全后的目标代码文件)回传给该插件。然[0115]可见,由于本申请是基于目标代码文件所在的IDE工程中包含的所有代码文件构嵌入向量从预先构建的代码片段候选库中获取与所述目标代码片段相似的候选代码片段;所述代码片段候选库是基于目标代码文件所在的集成开发环境IDE工程中包含的所有代码[0121]输入单元203,用于利用所述目标代码上下文和候选代码片段构建提示指令[0123]切分单元,用于将目标代码文件所在的IDE工程中包含的所有代码文件按照编码[0127]对所述N个切分后的代码片段进行编号,并按照编号将各个切分后的代码片段及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论