基于大语言模型和语义增强的智能合约摘要生成方法及系统
- 国知局
- 2024-11-18 18:15:55
本发明涉及区块链,特别是涉及一种基于大语言模型和语义增强的智能合约摘要生成方法、系统、计算机设备及可读存储介质。
背景技术:
1、智能合约是一种运行在区块链系统上的可自我执行的程序,智能合约只会在满足特定的条件下才会自动执行特定的操作,例如转账或查询记录。智能合约虽然拥有可自动执行和公开透明的优点,但也面临着一些关键性的挑战。由于区块链系统的不可变性,部署到区块链上的智能合约都不可修改,这使得智能合约的维护和测试工作变得异常困难。现有技术中,自动化生成智能合约代码摘要的方法一般分为基于深度学习模型的方法和基于预训练的自然语言处理模型的方法以及大语言模型,比如mmtrans工具、codet5+模型和gpt-4o模型,尽管目前类似gpt-4o和gemini-1.5-pro的大语言模型对于自动化生成智能合约代码摘要取得了长足的进步,但是仍有局限性,具体表现为:受限于信息不足的“提示”:零样本“提示”中提供的代码语义信息不足以支持大语言模型根据语义推理来生成代码摘要,这是由于“提示”中并未包含提供的代码片段中的关键隐藏信息;受限于提升中包含的控制流信息:大语言模型使用少样本或零样本学习“提示”生成代码摘要,然而,纯文本“提示”往往不能准确地表达代码片段中的函数回调信息,这一限制挑战了大语言模型理解函数回调树的能力,导致了生成的代码摘要质量不高。
2、因此,传统的智能合约摘要生成方法存在质量较差的问题。
技术实现思路
1、基于此,为了解决上述技术问题,提供一种基于大语言模型和语义增强的智能合约摘要生成方法及系统,可以提高大语言模型生成智能合约代码摘要的质量;可应用于智能合约的开发和维护阶段,帮助开发人员快速理解代码的能力,从而实现更安全的智能合约。
2、一种基于大语言模型和语义增强的智能合约摘要生成方法,所述方法包括:
3、获取智能合约源代码,并对所述智能合约源代码进行解析,生成抽象语法树;
4、从所述抽象语法树中提取出所述智能合约源代码中的代码语义信息;
5、遍历所述抽象语法树,将所述智能合约源代码转换为函数回调图,并将所述函数回调图、所述代码语义信息保存在代码样本数据库中;
6、确定目标代码片段,在所述代码样本数据库中查找与所述目标代码片段最接近的目标代码语义信息、目标函数回调图;
7、将所述目标代码片段的源代码、所述目标代码语义信息、所述目标函数回调图输入至大语言模型中,对所述大语言模型输出的数据进行解析,得到所述目标代码片段对应的摘要并输出。
8、在其中一个实施例中,对所述智能合约源代码进行解析,生成抽象语法树,包括:
9、使用solidity_parser工具对所述智能合约源代码进行解析,将所述智能合约源代码中的智能合约或函数作为根节点,将语句或表达式作为内部节点,将变量、常量基本元素作为叶节点。
10、在其中一个实施例中,所述代码语义信息包括:合约成员变量、合约类型、合约函数、函数名、函数声明、内敛函数、函数回调。
11、在其中一个实施例中,所述遍历所述抽象语法树,将所述智能合约源代码转换为函数回调图,包括:
12、对所述抽象语法树中的各个合约节点进行遍历,在各个所述合约节点中遍历函数节点,在各个所述函数节点中遍历函数回调节点;
13、遍历完从各个所述函数回调节点后,得到函数回调树;
14、遍历所述函数回调树中的各个所述函数回调节点,得到各个所述函数回调节点对应的回调信息;
15、基于所述回调信息得到无向量的函数回调图。
16、在其中一个实施例中,所述方法还包括:
17、使用graphviz来描述所述函数回调节点对应的回调信息;
18、将描述回调信息后的函数回调节点保存在无序的不重复元素序列中;
19、遍历所述函数回调树中的每一个所述函数回调节点,并在所述不重复元素序列中进行节点查找,直到遍历完所述函数回调树,得到无向量的函数回调图。
20、在其中一个实施例中,所述确定目标代码片段,在所述代码样本数据库中查找与所述目标代码片段最接近的目标代码语义信息、目标函数回调图,包括:
21、将所述目标代码片段进行向量化,得到输入匹配向量;
22、读取所述代码样本数据库中的所有函数代码,并将各个所述函数代码转化为函数代码向量列表;
23、将所述输入匹配向量与所述函数代码向量列表进行匹配,输出与所述输入匹配向量最接近的函数代码向量对应的目标编号;
24、根据所述目标编号从所述代码样本数据库中读取目标代码语义信息、目标函数回调图。
25、在其中一个实施例中,所述大语言模型的训练过程包括:
26、确定样本代码语义信息、样本函数回调图,并将所述样本代码语义信息、样本函数回调图输入至大语言模型中;
27、将所述目标代码语义信息、目标函数回调图作为学习对象,对大语言模型中的参数进行调整。
28、一种基于大语言模型和语义增强的智能合约摘要生成系统,所述系统包括:
29、抽象语法树生成模块,用于获取智能合约源代码,并对所述智能合约源代码进行解析,生成抽象语法树;
30、信息提取模块,用于从所述抽象语法树中提取出所述智能合约源代码中的代码语义信息;
31、数据保存模块,用于遍历所述抽象语法树,将所述智能合约源代码转换为函数回调图,并将所述函数回调图、所述代码语义信息保存在代码样本数据库中;
32、查找模块,用于确定目标代码片段,在所述代码样本数据库中查找与所述目标代码片段最接近的目标代码语义信息、目标函数回调图;
33、摘要生成模块,用于将所述目标代码片段的源代码、所述目标代码语义信息、所述目标函数回调图输入至大语言模型中,对所述大语言模型输出的数据进行解析,得到所述目标代码片段对应的摘要并输出。
34、一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
35、获取智能合约源代码,并对所述智能合约源代码进行解析,生成抽象语法树;
36、从所述抽象语法树中提取出所述智能合约源代码中的代码语义信息;
37、遍历所述抽象语法树,将所述智能合约源代码转换为函数回调图,并将所述函数回调图、所述代码语义信息保存在代码样本数据库中;
38、确定目标代码片段,在所述代码样本数据库中查找与所述目标代码片段最接近的目标代码语义信息、目标函数回调图;
39、将所述目标代码片段的源代码、所述目标代码语义信息、所述目标函数回调图输入至大语言模型中,对所述大语言模型输出的数据进行解析,得到所述目标代码片段对应的摘要并输出。
40、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
41、获取智能合约源代码,并对所述智能合约源代码进行解析,生成抽象语法树;
42、从所述抽象语法树中提取出所述智能合约源代码中的代码语义信息;
43、遍历所述抽象语法树,将所述智能合约源代码转换为函数回调图,并将所述函数回调图、所述代码语义信息保存在代码样本数据库中;
44、确定目标代码片段,在所述代码样本数据库中查找与所述目标代码片段最接近的目标代码语义信息、目标函数回调图;
45、将所述目标代码片段的源代码、所述目标代码语义信息、所述目标函数回调图输入至大语言模型中,对所述大语言模型输出的数据进行解析,得到所述目标代码片段对应的摘要并输出。
46、上述基于大语言模型和语义增强的智能合约摘要生成方法、系统、计算机设备及可读存储介质,通过将大语言模型以及语义分析技术应用于自动生成智能合约代码摘要,大语言模型通过学习和理解智能合约函数的语义信息与回调信息,可以准确地理解推理出代码的深层语义信息从而生成高质量的智能合约代码摘要,不仅有效地解决了现有技术中对于语义理解的局限性,还支持使用大语言模型的多模态能力来提取、理解、推理函数回调图的回调信息大大提升了大语言模型对代码回调结构的理解能力。
本文地址:https://www.jishuxx.com/zhuanli/20241118/327891.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表