《王植萌-开源大语言模型基座在去哪儿网的代码生成应用.pdf》由会员分享,可在线阅读,更多相关《王植萌-开源大语言模型基座在去哪儿网的代码生成应用.pdf(43页珍藏版)》请在三个皮匠报告上搜索。
1、代码生成模型基座在去哪儿网的代码生成应用王植萌 去哪儿网演讲嘉宾王植萌去哪儿网基础研发团队负责人/技术委员会主席/人工智能委员会公共技术分会负责人专注于SOP+AIAgents大模型应用大模型基座在软件工程领域提效目 录CONTENTS1.代码生成模型基座应用的目的与目标2.代码生成模型的落地策略3.代码生成模型在落地过程中遇到的难点4.问题解决的具体方案和结果5.后续工作展望代码生成模型基座应用的目的与目标PART 01代码生成模型基座的目的与目标数字化转型瘦身AI引领的全流程提效代码生成模型基座的目的与目标需求域开发域测试域运维域根据需求生成checklist/TestCase技术知识管理
2、图谱代码生成代码补全CRUnitTest生成排期助手应用级接口测试生成AIOPS目标:提效20%代码生成模型基座的目的与目标模型基座层提示词工程层CoT层Agent层Multi-Agents层chatGPTGPT4CodeXcodellamastarcoder模板langchainlangchain4jAgentsSpringbootSpringBoot-QUNAR-agents代码生成模型基座的应用策略PART 02代码生成模型基座的应用策略DMAIC原则定义:用户接受率、用户留存率、用户覆盖度度量:用户接受率(NPS)、用户留存率(周活跃用户)、用户覆盖率(相对于工程师全量的覆盖度)分析:
3、哪些场景是用户的痛点(TOP3:需求分析阶段、代码阶段、日常解答问题)提升:围绕需求阶段、开发测试阶段、日常值班来规划场景保持:成本可控,ROI可持续的方式来形成正向循环需求调研与分析代码开发方面DMAIC原则定义:生成、补全代码的BenchMark测试,生成、补全代码的用户接受度,生成、补全代码的应用普及度生成、补全代码在工程师提交代码中的占比度量:用户接受度使用AI开发助手中点击Tab键采纳的数量和生成代码到用户IDE的数量做比来衡量,BenchMark采用QUNAR自定义的业务场景代码问题来作为全集,100分为github-copilot的生成结果,代码提交占比按照工程师接纳行数与其周提
4、交代码行数做比分析:关键节点包括:模型选择、生成速度、上下文输入、返回结果评估、返回结果完整性校验、用户交互时机选择,用户操作结果回收提升:围绕能跑通、可补、可用、有场景用、如何证明自己可用来不断提升保持:监控、统计面板、新模型实验的SOP代码生成模型基座的落地难点PART 03用户对于代码生成工具的负向观点对正常写代码思路有干扰功能不够安全代码补全接受率不高补全太慢与工作环境集成不够补全代码与上下文结合不足代码生成模型的落地难点模型基座:开源、商用?模型部署:大小?是否量化?提示词工程:模板?上下文?光标周围?引用文件、类?返回结果评估:完整?能否编译通过?与用户交互:IDEA?Web?VS
5、Code?与GitHub Copilot插件如何兼容?结果如何度量:试用、推广时机?模型基座Replit_3b6月,AI开发助手首次具备代码补全能力代码补全-开源模型代码生成、CR等功能-微软GPT3.5接口starcoder_15.5b7月,具备中间补全能力codellama_7b9月,代码补全体验达到可用水平,开始进行推广应用codellama_13b11月,代码补全BenchMark与github copilot持平,全司内推荐应用模型部署GPU内存 量化 8bit/4bit吞吐能力 TGI&vllm提示词工程如何构建合理的System Prompt?返回结果评估构建适合本公司实际情况的
6、评价样本1.通过方法注释,生成基础的通用算法2.对于已有方法,生成该方法的方法体注释,包括方法的参数列表注释3.对于无注释的方法,自动根据方法体内上下文生成业务代码,尽量包含日志和监控打点4.对于有注释的方法,自动根据方法体内上下文及注释中的提示生成业务代码,尽量包含日志和监控打点5.打印日志时,自动补全想要输出的占位符变量6.打印监控时,在try catch块中,根据上文成功的正向打点,在catch块补全失败的反向打点7.对于同一个类中的方法调用,自动补全参数列表8.对于同一个类中的方法调用,自动补全完整业务9.自动识别其他类(实体)中的字段,并正确调用getter/setter与用户交互什
7、么时候触发补全?触发时刻的用户感知,如何让用户感知到同时维持心流状态用户保持心流状态的最长可等待时间返回结果自动评分返回结果自动校验结果如何度量BenchMark度量用户接受率度量用户补全/提交比度量用户应用覆盖度用户周度应用UV问题解决的具体方案和结果PART 04问题解决的具体方案与结果模型基座选型:两条腿走路问题解决的具体方案与结果模型部署及初步效果初始的度量初始的度量定义一个空方法,在方法签名上做好注释,使用插件生成相应的算法代码。初始的度量在一个已写完整的方法上,通过键入/*来开始提示对方法注释的生成,要求注释中包含对方法内容的逻辑解释,以及方法参数列表的参数含义说明。初始的度量当我
8、已经完成了一个方法的大部分代码时,我需要对一些边界条件做完善,如此时我需要对某个外部获取的实体判空,并输出日志监控以记录异常。初始的度量在方法注释中明确提示边界条件的处理方式,期望按照注释生成相应的监控和日志。初始的度量打印日志时,自动补全想要输出的占位符变量初始的度量打印监控时,在try catch块中,根据上文成功的正向打点,在catch块补全失败的反向打点初始的度量对于同一个类中的方法调用,自动补全参数列表。初始的度量对于同一个类中的方法调用,自动补全参数列表。初始的度量自动识别其他类(实体)中的字段,并正确调用getter/setter问题解决的具体方案与结果更换模型 codellam
9、a_7b-codellama13b对返回值给与评分,设置展示阈值做补全完整性校验限制返回token数,提升处理速度Codellama补全接受度 17%-25%0.000.100.200.300.400.500.6010月30日10月31日11月1日11月2日11月3日11月4日11月5日11月6日11月7日11月8日11月9日11月10日11月11日11月12日codellama代码展示次数代码次数接受比0.000.100.200.300.400.500.6010月30日10月31日11月1日11月2日11月3日11月4日11月5日11月6日11月7日11月8日11月9日11月10日11月11
10、日11月12日codellama代码行数接受比问题解决的具体方案与结果提示词工程:问题解决的具体方案与结果返回结果评估:问题解决的具体方案与结果与用户交互:用户对于正在补全有感知可自由开关代码补全功能本地有缓存用户可在一定范围内选择模型结果的度量度量常态化:后续工作展望PART 05后续工作展望模型基座:更便宜的SFT(QLora?)、更精炼的模型模型部署:更小的量化损失提示词工程:结合Agent框架,代码生成工程化、SOP化返回结果评估:更迅速、更全面与用户交互:IDE集成能力更强,更少的跳出诉求,更友好的提示用户完善注释结果如何度量:效果度量标准更加标准化,权威性更强后续工作展望-直接补全与自然语言生成结合触发代码补全模型识别返回结果是否接受AI插件代码可用性评估模型代码模型大语言模型推理补全接受结果自然语言描述模型识别返回结果是否接受推理生成是否THANKS