一种基于大语言模型思维链的层次化代码摘要生成方法
- 国知局
- 2024-08-30 15:04:29
本发明涉及软件工程,特别涉及一种基于大语言模型思维链的层次化代码摘要生成方法。
背景技术:
1、随着信息技术的飞速发展,软件系统变得越来越复杂,软件维护存在各种问题,大量的代码注释落后陈旧,这使得开发人员对程序的理解难度大大增加。生成对源代码功能描述摘要的过程被称为代码摘要生成。代码摘要生成通常对源代码进行分析,提取其中的关键功能,然后生成自然语言描述。代码摘要生成可以显著减少开发人员工作量,提高效率。目前最普遍的代码摘要生成方式为深度学习方式。受限于模型大小和输入长度,以前的代码摘要生成聚焦在函数级别上,难以生成更高层次的软件系统组件摘要。2023年chatgpt的出世展现了大语言模型的强大文本处理能力。为了能够利用大语言模型的能力处理高抽象层次的软件系统组件问题,本发明采用了层次化的思维链方法拆解问题,实现了由低抽象层次到高抽象层次的理解过程。
2、静态分析技术时在不运行程序的情况下对程序源代码或二进制代码进行分析的一种技术,它主要对代码的结构、语法、语义等进行检查,以提取代码特征、分析代码错误、漏洞等问题。相比于动态分析,静态分析不需要实际执行程序,更加高效。本发明使用静态分析技术来获取代码文件之间的调用关系,生成代码文件依赖图,用于后续的代码文件权重计算,帮助大语言模型理解代码文件的重要性级别。
技术实现思路
1、为解决上述现有技术存在的问题,本发明提出了一种基于大语言模型思维链的层次化代码摘要生成方法,该方法使用大语言模型生成代码文件摘要,使用静态分析技术构建文件调用图,并设计应用了启发式的文件权重计算算法得到文件权重,结合文件级代码摘要和文件权重输入大语言模型,生成模块级代码摘要,实现了高抽象层次的软件系统组件摘要生成,大大降低开发人员理解程序难度,提高了开发效率,本发明通过以下技术方案来实现。
2、一种基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述方法包括以下步骤:
3、步骤1)输入一个代码模块,命名为m,所述代码模块m包含若干代码文件;
4、步骤2)对所述代码模块m中的每一个代码文件,将文件中的源代码作为提示词,输入大语言模型,得到文件级别的代码摘要;
5、步骤3)将所述步骤2)获得的所有代码摘要按照“文件名---摘要”的格式拼接为新提示词;
6、步骤4)使用静态分析工具,提取所述代码模块m中代码文件之间的调用关系,生成代码模块图模型g;
7、步骤5)设计启发式代码文件权重计算算法,计算得到所述代码模块m中各个代码文件的权重;
8、步骤6)将所述步骤5)得到的代码文件权重结合所述步骤3)得到的提示词作为新的提示词输入大语言模型,得到模块级代码摘要。
9、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤1)输入的代码模块是指软件系统中,若干功能相关的源代码文件的集合,所述功能相关的代码文件之间存在文件间的调用关系。
10、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤2)具体包括以下步骤:
11、步骤21)规定生成文件级代码摘要所需要的提示词;
12、步骤22)按照所述步骤21)中的规定生成提示词;
13、步骤23)将所述步骤22)生成的提示词输入大语言模型,得到文件级代码摘要。
14、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤21)生成文件级代码摘要所需要的提示词的规定具体包括:
15、211)代码文件信息:代码文件名、模块名、文件中的源代码;
16、212)对大模型输出的要求:生成祈使语气的简短摘要,并按照“文件名---摘要”的格式输出。
17、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤3)中拼接生成新提示词具体包括以下步骤:
18、步骤31)将所述步骤2)中得到的所有文件级摘要拼接为一个长字符串;
19、步骤32)在所述步骤31)中得到的长字符串后拼接对大模型输出的要求,所述对大模型输出的要求为生成祈使语气的简短摘要。
20、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤4)生成代码模块图模型g中,图节点为代码文件,图边为代码文件之间的关系。
21、上述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤5)中启发式代码文件权重计算算法的具体包括以下步骤:
22、步骤51)遍历模块图模型g中的所有节点,初始化节点权重为节点出度;
23、步骤52)当模块图模型g中节点数为0时,算法结束,当模块图模型g中节点数不为0时,则进行下一步骤;
24、步骤53)遍历所有节点,寻找节点出度为0的节点v;若找到节点出度为0的节点则执行步骤54),否则执行步骤55);
25、步骤54)将所述步骤53)中找到的出度为0的节点v的权重附加到它的所有父节点上,然后从模块图模型g中删除所述节点v和与之关联的边并跳转到所述步骤52)继续执行;
26、步骤55)使用tarjan算法计算模块图模型g的所有强连通分量,然后将所述每个强连通分量压缩为一个节点,并跳转到所述步骤52)继续执行。
27、本发明采用以上技术方案,具有以下有益效果:
28、本发明利用大语言模型、静态分析技术和启发式文件权重计算算法,构建了对代码文件到软件模块的代码摘要生成体系,实现了对高抽象层次的软件系统组件的代码摘要生成,从而帮助开发人员快速理解软件系统,提高开发效率。
技术特征:1.一种基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤1)输入的代码模块是指软件系统中,若干功能相关的源代码文件的集合,所述功能相关的代码文件之间存在文件间的调用关系。
3.根据权利要求1所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤2)具体包括以下步骤:
4.根据权利要求3所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤21)生成文件级代码摘要所需要的提示词的规定具体包括:
5.根据权利要求1或4所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤3)中拼接生成新提示词具体包括以下步骤:
6.根据权利要求1所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤4)生成代码模块图模型g中,图节点为代码文件,图边为代码文件之间的关系。
7.根据权利要求1所述的基于大语言模型思维链的层次化代码摘要生成方法,其特征在于,所述步骤5)中启发式代码文件权重计算算法具体包括以下步骤:
技术总结本发明公开一种基于大语言模型思维链的层次化代码摘要生成方法,包括:步骤1)输入一个代码模块命名为M,M包含若干代码文件;步骤2)将M代码文件中的源代码作为提示词输入大语言模型,得到文件级别的代码摘要;步骤3)将获得的代码摘要按照“文件名‑‑‑摘要”的格式拼接为新提示词;步骤4)使用静态分析工具提取M中代码文件之间的调用关系,生成代码模块图模型G;步骤5)设计启发式代码文件权重计算算法,计算得到M中各个代码文件的权重;步骤6)将代码文件权重结合步骤3)得到的提示词作为新提示词输入大语言模型,得到模块级代码摘要;本发明实现了高抽象层次的软件系统组件摘要生成,降低了开发人员理解程序难度,提高了开发效率。技术研发人员:张天,潘敏学,罗禄宗受保护的技术使用者:南京大学技术研发日:技术公布日:2024/8/27本文地址:https://www.jishuxx.com/zhuanli/20240830/285385.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表