当前位置:首页 > 报告详情

顾小东-业务领域代码大模型深度探索与实践.pdf

上传人: p****n 编号:614118 2025-02-19 49页 6.62MB

1、业务领域代码大模型深度探索与实践顾小东|上海交通大学演讲嘉宾顾小东上海交通大学副教授、博士生导师长期从事智能软件工程领域的研究工作,包括代码大模型、程序自动生成、代码翻译、代码搜索等。提出首个基于深度学习的代码搜索引擎DeepCS。在ICSE、FSE、ASE、TOSEM等顶级学术会议和期刊上发表学术论文30余篇,主持和参与多项国家自然科学基金、国家重点研发计划、国防课题等。并与华为、宁德时代、腾讯等企业开展广泛的产学研合作。研究概览代码生成 特定领域代码生成 仓库级代码生成 生成代码的修复代码翻译 小样本代码翻译 代码翻译的细粒度评估 C2Rust翻译代码修复 大模型生成代码修复 仓库级问题修

2、复代码搜索 跨语言代码搜索 搜索语句重构代码大模型目 录CONTENTS1.背景:代码生成问题与痛点2.探究:大模型在业务领域的表现3.方法:业务知识与大模型的融合4.深入:基于思维链的正则表达式生成5.实践:复杂程序问题修复6.总结与展望背景:程序生成问题与痛点PART 01基于大模型的程序自动生成大模型数据预训练param:=c.Query(param)c.JSON(http.StatusOK,gin.Hmessage:param,)/以下是当前件的相关代码/public skip()/./以下是其他件中的依赖代码/public static read()/./根据以上信息,补全以下代码/

3、*注册消息通知*/funcfunc Register(router*Register(router*gin.RouterGroupgin.RouterGroup)/以下是相应的代码样例/样例1,/样例2,代码生成有监督微调(SFT)参数高效微调(PEFT)人类反馈强化学习(RLHF)检索增强(RAG)多agent提示关键技术研究现状HumanEval评测榜单挑战大模型的领域面广而不深l 大模型依赖海量的训练数据,而专用领域的训练数据有限l 大模型在开放领域数据上预训练,缺少专用领域的知识(API、业务知识、项目私有函数等等)专用领域GitHub通用领域探究:大模型在业务领域代码生成方面的表现P

4、ART 02经验研究RQ1:大模型在特定业务领域的代码生成能力如何?RQ2:如何提示大模型生成特定业务领域的代码?RQ3:如何将领域知识引入代码大模型?Gu X,Chen M,Lin Y.et al.On the effectiveness of Large Language Models in Domain Specific Code Generation.TOSEM 2024RQ1:大模型在特定业务领域上的代码生成能力 测试模型:ChatGPT,CodeLlama-7B,PolyCoder-2.7B 测试方法:根据函数签名补全函数体 测试指标:BLEU,CodeBLEU,人工评估 测试数据

5、:l 开放领域数据集:HumanEval,CodeSearchNet(Go)l 专用领域数据集:GitHub上使用了特定领域(web,game)第三方库的500个函数测试结果 定量分析发现2:ChatGPT(开放域大模型)在开放域数据集上效果优于代码专用的大模型。发现1:大模型在特定领域上的代码生成效果有明显下降。测试结果 定性分析随机抽取200个样例进行人工分析16%18%26%40%错误类型占完全正确正确但实现不同API误API缺失发现3:大模型在专用领域的代码生成效果下降,主要因为缺少第三方库的知识,如API的使用方式测试结果 常见错误:功能错误:生成的代码功能不符合用户需求,或者缺失部

6、分功能 函数调用错误:生成的代码语义大致正确,但没有调用正确的API举例:Reference code:ChatGPT:func(api*API)RegisterRouter(router*gin.RouterGroup)v1:=router.Group(constants.APIVersion1)api.execute.Register(v1)func(api*API)RegisterRouter(router*gin.RouterGroup)router.GET(/test,api.Test)RQ2:如何提示大模型生成领域特定代码 测试方法:在大模型提示中加入知识,进行(零样本)代码生成

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要探讨了如何将业务领域知识与大型语言模型(LLM)有效融合,以提升其在特定领域的代码生成能力。主要内容包括: 1. 背景:介绍基于大模型的程序自动生成面临的挑战,如大模型依赖海量训练数据,而专用领域的训练数据有限,导致大模型在特定领域的表现不佳。 2. 探究:通过实验分析大模型在特定业务领域的代码生成能力,发现大模型在专用领域的代码生成效果下降,主要因为缺少第三方库的知识,如API的使用方式。 3. 方法:提出三种策略将业务知识融入大模型,包括API知识外挂、思维链提示和思维链微调。实验结果表明,这些策略可以有效提升大模型在特定领域的代码生成能力。 4. 深入:基于思维链的正则表达式生成方法,通过将正则表达式分解成思维链,训练<自然语言,思维链>数据对,实现更准确的正则表达式自动生成。 5. 实践:介绍多粒度程序修复方法MGDebugger和基于LLM-Agent反思的Issue代码复现方法EvoCoder,通过任务拆解、子模块测试用例生成和基于LLM虚拟执行的子模块修复,实现复杂程序问题的修复。 综上所述,本文通过探究大模型在业务领域的表现,提出将业务知识融入大模型的方法,并在正则表达式生成和复杂程序问题修复方面进行了深入实践,为提升大模型在特定领域的代码生成能力提供了有效途径。
如何将业务知识融入大模型? 基于思维链的正则表达式生成方法是什么? 如何利用大模型进行仓库级代码修复?
客服
商务合作
小程序
服务号
折叠