哈尔滨工业大学苏小红获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网获悉哈尔滨工业大学申请的专利一种知识引导的基于大语言模型的可信API推荐方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN119474540B 。
龙图腾网通过国家知识产权局官网在2026-04-28发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202411576633.7,技术领域涉及:G06F16/9535;该发明授权一种知识引导的基于大语言模型的可信API推荐方法是由苏小红;魏宏巍;陶文鑫;郑宇;郑伟宁;万佳元设计研发完成,并于2024-11-06向国家知识产权局提交的专利申请。
本一种知识引导的基于大语言模型的可信API推荐方法在说明书摘要公布了:本发明公开了一种知识引导的基于大语言模型的可信API推荐方法,所述方法的核心思想是利用API知识提升LLM在API推荐任务中的可信性。具体地,针对LLM在API推荐中的不可信问题,本发明提出知识引导的数据增强以提升LLM建立用户指定类型与API序列之间的关联性的能力;提出知识引导的束搜索以引导LLM去生成真实存在且调用条件可以被满足的API;提出知识引导的重排序优化API序列推荐列表,使与接口参数类型匹配的API序列在推荐结果中的排名更靠前。本发明的优势在于能够在接口参数类型约束下实现API推荐,并且能够通过API知识图谱中的高质量先验知识提高大模型在API推荐任务中的可信性。
本发明授权一种知识引导的基于大语言模型的可信API推荐方法在权利要求书中公布了:1.一种知识引导的基于大语言模型的可信API推荐方法,其特征在于所述方法包括如下步骤: 步骤1:构建面向APIRIP任务的API知识库,具体步骤如下: 步骤11:设计API本体模型,API本体模型中的概念包括:基本数据类型“basictype”、类“class”、接口“interface”、枚举“enum”、记录“record”、API或方法“API”、包“Package”以及成员“member”;关系包括:继承“extend”、实现“implement”、包含“contain”、类型“typedim”、返回关系“returndim”、参数“parameteridx,dim”,idx代表参数的序号,dim代表维数;属性包括:API、方法或成员的修饰符“field”;值包括:公有“public”、私有“private”、保护“protected”、静态“static”; 步骤12:利用requests工具以JavaJDK官方在线文档的主页面为入口,递归获取所有的API文档页面,并将这些文档页面保存为“.html”文件; 步骤13:利用BeautifulSoup工具解析每一个“.html”文件,根据步骤11中设计的API本体从相应的字段中抽取API实体、关系、属性和值,得到一组由“实体-关系-实体”或“实体-属性-值”三元组构成的三元组集合; 步骤14:将所有的“实体-关系-实体”和“实体-属性-值”三元组导入到Neo4j图数据库中,得到图形式的API知识图谱; 步骤2:构建面向APIRIP任务的训练数据集,具体步骤如下: 步骤21:检索并下载GitHub中所有的包含至少一颗星的Java项目,对每一个满足条件的Java项目执行步骤22~步骤24; 步骤22:从Java项目中找到所有满足如下条件的方法:1带有功能注释;2方法中仅调用了JDKAPI的方法; 步骤23:对于第个满足步骤22中所述条件的方法,将方法的功能注释作为功能描述,将方法的形参列表作为接口参数类型列表,并根据DeepAPI定义的API序列解析规则解析出其中的API序列; 步骤24:将三元组作为一条训练数据,添加到APIRIP数据集中; 步骤3:利用知识引导的数据增强微调大语言模型,具体步骤如下: 步骤31:对原始APIRIP数据集中的每条数据执行步骤32~步骤318,得到相应的增强数据,将得到的增强数据与原始数据集混合后得到增强后的数据集,当对每条数据都执行过数据增强操作后,执行步骤319; 步骤32:数据增强的初始化阶段:初始化当前遍历的API索引为0;当前可用的变量类型缓存为由“basetype”类型实体、所有静态公有成员的变量类型、“java.lang”包中包含的所有实体、以及所有支持封包机制的实体构成的集合;当前搜索到的API序列为空列表;当前搜索到的指定参数为空列表;当前找到的注释、指定变量类型、API序列三元组列表为空列表; 步骤33:输入用于数据增强的原始数据,即包含功能描述、API序列和接口参数类型的三元组;记当前遍历的API索引为;记当前可用的变量类型缓存为;记增强的API序列为;记增强的接口参数类型为;记增强的注释、指定变量类型、API序列三元组列表为;记API知识库为; 步骤34:判断的大小是否超过指定的阈值,超过则返回,否则执行步骤35; 步骤35:判断是否等于的长度,是则执行步骤36,否则执行步骤39; 步骤36:判断是否与完全相同,如果相同则代表产生了重复数据,将其丢弃并直接返回,否则执行步骤37; 步骤37:利用如下的公式计算的分数 其中,指API序列的长度;指在API知识库中检索给定API的返回值类型;指在API知识库中检索给定的单个API或API序列需求变量类型集合; 步骤38:将三元组添加到中,并返回; 步骤39:遍历API知识库中的的每一个重载形式,并执行步骤310~步骤317; 步骤310:令等于; 步骤311:保护现场,将、、和备份到缓存区中; 步骤312:将存在于中但不存在于中的变量类型加入到中; 步骤313:将的返回值,以及其直接或间接继承或实现的类、接口、枚举或记录加入到中; 步骤314:将添加到中; 步骤315:令,并通过递归执行步骤33得到; 步骤316:恢复现场,将、、和恢复为缓存区中的备份; 步骤317:若的所有重载形式都遍历完,则返回,否则回到步骤39继续遍历其他的重载形式; 步骤318:将中所有的三元组根据的大小升序排序,并输出排名前的数据对,并分别与构成条新的数据; 步骤319:使用增强的数据集微调LLM:对于形式的训练数据,将和以“sep”作为分隔符拼接后作为模型输入,将作为期望输出,直接使用由LLM自身提供的微调方法微调LLM; 步骤4:利用知识引导的束搜索生成API序列推荐列表,具体步骤如下: 步骤41:通过解析用户开发环境中的接口定义得到接口参数类型的列表; 步骤42:输入用户期望功能的文本描述; 步骤43:将和以“sep”作为分隔符拼接的方式构造为输入; 步骤44:束搜索的初始化阶段:将束初始化为一个空列表用于存储生成的API序列,将结果缓冲区初始化为一个空列表用于存储已经生成结束的API序列,并设定束尺寸为; 步骤45:构造初始“分数-API序列”二元组[0,“sos”],并将其添加到中; 步骤46:循环对执行步骤47至步骤424,直到达到设定的最大的循环次数或中二元组的数量等于,随后执行步骤425; 步骤47:初始化为空列表,遍历中的每个二元组,对其执行步骤48至步骤424; 步骤48:判断是否以结束标记“eos”为尾缀,是则将加入到中并回到步骤47继续遍历其他的二元组,否则执行步骤49; 步骤49:利用LLM为和预测下一个待生成token的概率分布,该分布描述了词表中每一个词法单元token的概率值; 步骤410:词表约束过程:将候选token集合初始化为空集,并将变量类型缓冲区初始化为初始可用变量类型的集合; 步骤411:将中所有已经生成的API的返回值加入到中; 步骤412:将空格符的布尔标记设置为; 步骤413:判断是否为空,是则执行步骤414,否则执行步骤415; 步骤414:将API前缀初始化为空字符串,并执行步骤418; 步骤415:判断中的最后一个API是否已经生成完毕,是则执行步骤416,否则执行步骤417; 步骤416:将API前缀初始化为空字符串,并将设置为,执行步骤418; 步骤417:将API前缀初始化为中的最后一个未生成完毕的API,执行步骤418; 步骤418:遍历知识库中每一个API,对每个需求变量类型都存在于中且前缀为的API都行执行步骤419至步骤421; 步骤419:如果为,则在API前添加一个空格符并执行步骤420,否则直接执行步骤420; 步骤420:去除API的前缀; 步骤421:利用LLM的分词器对其执行分词操作,并将分词后的第一个token加入到中; 步骤422:如果为,将生成过程的结束标记符号“eos”加入到中; 步骤423:将中的每一个token分别拼接到后,得到新的候选API序列,通过如下的公式为计算分数,并将[]添加到中: 其中,n为构成的长度,为大语言模型输出的的概率值,为的分数; 步骤424:对中的所有二元组根据分数从大到小排序,随后仅保留中排名前的二元组,并将赋值给; 步骤425:输出作为API序列的推荐列表; 步骤5:利用知识引导的重排序优化API序列推荐列表,具体步骤如下: 步骤51:遍历在知识引导的束搜素阶段获得的列表的每一个二元组,每个二元组都包含分数以及API序列; 步骤52:初始化外部依赖变量类型集合为空集; 步骤53:将变量类型缓存区设置为空集; 步骤54:依次遍历中的每一个API,并对其执行步骤55~步骤58,直到遍历完中的所有API,随后,执行步骤59; 步骤55:遍历API的每一个需求变量类型,并对执行步骤56~步骤57,直到遍历完每一个需求变量类型,随后,执行步骤58; 步骤56:判断是否存在于中,是则执行步骤58,否则执行步骤57; 步骤57:将添加到中; 步骤58:将API的返回值添加到中; 步骤59:遍历中的每一个变量类型,从知识库中检索该变量类型所有的直接或间接继承或实现的父类,并将这些父类添加到中; 步骤510:判断中是否至少存在一个变量类型不存在于中,如果是,则将当前的二元组中的分数乘以倍数,否则保持不变; 步骤511:对中的所有二元组按照分数从大到小的顺序重新排序; 步骤512:按顺序输出中二元组中的作为API序列的推荐列表。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人哈尔滨工业大学,其通讯地址为:150001 黑龙江省哈尔滨市南岗区西大直街92号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
以上内容由龙图腾AI智能生成。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

皖公网安备 34010402703815号
请提出您的宝贵建议,有机会获取IP积分或其他奖励