System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于大型语言模型的编程问题调试方法技术_技高网
当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于大型语言模型的编程问题调试方法技术

技术编号:40947542 阅读:10 留言:0更新日期:2024-04-18 20:21
本发明专利技术公开了一种基于大型语言模型的编程问题调试方法,主要针对在复杂数据结构和算法中的编程难题。该方法通过在代码中插入打印语句来追踪执行流程和分析日志,从而定位和修复程序中的错误。该方法的核心在于引导大型语言模型(LLM)利用其上下文学习能力进行调试,引导模型在代码生成和调试中执行“打印调试”,提高对复杂编程问题的解决效率和准确性。本发明专利技术通过“打印调试”,收集执行过程中的关键变量值和状态信息,为大型语言模型LLM提供直观的程序行为视图,使得模型能够更有效地识别和修复代码中的错误。

【技术实现步骤摘要】

本专利技术属于人工智能和软件工程领域,尤其涉及一种基于大型语言模型的编程问题调试方法


技术介绍

1、随着人工智能和机器学习的发展,llm(大型语言模型)已被广泛应用于多种领域,包括自然语言处理和代码生成。然而,在面对需要复杂数据结构和算法的编程问题时,llm的表现仍然存在局限性。这些问题通常涉及高级编程技能和深入的问题理解,挑战了现有的llm在代码生成和调试方面的能力。尤其是在竞赛级别的编程问题中,如leetcode中的中高难度问题,llm在准确性和效率上仍有待提高。

2、近年来,研究人员尝试通过使llms具备调试能力来提高其在编程任务中的表现。尽管已有的一些方法如“橡皮鸭调试法”提出了解决方案,但这些方法在提供对实时变量值的访问和追踪执行流程方面仍有所不足。这些局限性使得llms难以有效地调试包含复杂算法的代码。此外,这些方法也未能充分利用测试用例,因为仅向llms提供失败的测试用例本身仍难以帮助定位bug。

3、可见现有技术的缺点主要在于:llm在处理复杂编程问题时准确率不足,尤其是涉及高级数据结构和算法的问题;现有方法缺乏有效的调试机制,导致llm难以定位和修复代码中的错误;在使用llm进行代码生成时,缺乏有效的方法来利用测试用例进行错误诊断和解决。


技术实现思路

1、本专利技术的目的在于解决现有技术中存在的问题,并提供一种基于大型语言模型的编程问题调试方法。

2、本专利技术所采用的具体技术方案如下:

3、s1.构建用于引导大型语言模型进行代码调试的上下文学习框架,所述上下文学习框架基于打印调试技术,其中打印调试技术包括插入打印语句以及追踪程序执行过程中的关键变量和数据流信息;

4、s2.获取一个编程问题数据集,所述编程问题数据集包含多个不同难度级别的具体编程问题;

5、s3.获取一个预先训练好的大型语言模型,由所述大型语言模型尝试自动解决所述编程问题数据集中的每个具体编程问题,每个具体编程问题对应获得一个原始代码;

6、s4.利用在线评判系统对生成的每个原始代码进行评估和测试,每个具体编程问题得到与原始代码对应的多个测试用例;

7、s5.判断每个具体编程问题的每个测试用例是否通过测试:若一个测试用例通过测试,则对下一个测试用例进行测试;若一个测试用例未通过测试,则利用所述上下文学习框架对大型语言模型进行指导,包括以下子步骤:

8、s51.将未通过测试的当前测试用例输入到所述大型语言模型中,由所述大型语言模型分析当前测试用例对应的原始代码并确定插入打印语句的合适位置,所述位置应能够展示程序执行过程中变量的状态变化或关键的数据流信息;

9、s52.根据所述位置在当前测试用例对应的原始代码中插入若干个打印语句,每个打印语句包含在程序执行过程中输出关键变量的值、循环迭代次数、函数调用的返回值信息,得到新代码;

10、s53.执行当前测试用例对应的新代码,收集当前测试用例的所有日志信息;

11、s54.对所述所有日志信息进行详细分析,比较当前测试用例的预期结果和当前测试用例的所有日志信息是否一致:

12、若当前测试用例的预期结果和当前测试用例的所有日志信息一致,则对下一个测试用例进行测试;

13、若当前测试用例的预期结果和该当前测试用例的所有日志信息不一致,则根据当前测试用例的所有日志信息对当前测试用例对应的原始代码进行相应的修改和调整,并重新从s51步骤开始继续调试,直到当前测试用例的预期结果和当前测试用例的所有日志信息一致;

14、s6.当每个具体编程问题的所有测试样例均通过测试或达到设定的调试次数上限后,完成基于大型语言模型的编程问题调试。

15、作为优选,所述打印调试技术是模仿人类程序员在实际编程实践中常用的调试策略,适用于解决涉及复杂数据结构和算法的编程问题。

16、作为优选,所述难度级别具体为易、中、难三个难度级别。

17、作为优选,所述编程问题数据集采用leetcode获取。

18、作为优选,所述大型语言模型采用gpt-4。

19、作为优选,所述在线评判系统采用leetcode在线评判系统。

20、作为优选,所述调试次数设置为10。

21、本专利技术相对于现有技术而言,具有以下有益效果:

22、1)通过结合大型语言模型(llm)的上下文学习能力和“打印调试”方法,提高了对复杂编程问题的解决效率,尤其是在处理需要复杂数据结构和算法的编程难题时。

23、2)本专利技术的方法能够在问题解决过程中提供直观的程序行为视图,使得大型语言模型(llm)更加有效地识别和修复代码中的错误,提高了调试的准确性。

24、3)相比传统的调试方法,本专利技术的方法减少了对外部工具或人工干预的依赖,实现了更高效、更自动化的编程问题解决流程。

本文档来自技高网...

【技术保护点】

1.一种基于大型语言模型的编程问题调试方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述打印调试技术是模仿人类程序员在实际编程实践中常用的调试策略,适用于解决涉及复杂数据结构和算法的编程问题。

3.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述难度级别具体为易、中、难三个难度级别。

4.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述编程问题数据集采用LeetCode获取。

5.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述大型语言模型采用GPT-4。

6.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述在线评判系统采用LeetCode在线评判系统。

7.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述调试次数设置为10。

【技术特征摘要】

1.一种基于大型语言模型的编程问题调试方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述打印调试技术是模仿人类程序员在实际编程实践中常用的调试策略,适用于解决涉及复杂数据结构和算法的编程问题。

3.如权利要求1所述的一种基于大型语言模型的编程问题调试方法,其特征在于,所述难度级别具体为易、中、难三个难度级别。

4.如权利要求1所述的一种基于大型语言模...

【专利技术属性】
技术研发人员:况琨胡雪瑜胡铭吴飞
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1