1、打造LLM高质量代码生成的神兵利器陈雅菲 中兴通讯演讲嘉宾陈雅菲中兴通讯 公司资深软件架构师 资深敏捷教练深耕软件领域20余年,拥有丰富的大型软件项目架构、设计与开发经验,在软件设计开发理论与实践上均有独到见解。长期致力于敏捷技术实践指导与推广,多次获得公司十佳敏捷教练称号。目前研究方向是LLM辅助设计编码。目 录CONTENTS1.LLM代码生成面临的问题2.问题的解决思路与方案3.实践情况与效果评估4.总结&展望LLM代码生成面临的问题PART 01LLM代码生成面临的问题软件开发目标之一高效输出高质量代码编码人需要充分理解设计才能编写出高质量的代码好的设计设计如何让LLM充分理解设计问题
2、的解决思路与方案PART 02解决思路语义模型驱动设计(Semantic Model Driven Design)一种应对高软件复杂度的设计方法抽象出针对特定问题领域的语义模型采用结构化表达描述语义模型不同LLM有不同使用约束根据不同使用约束提炼提示模式需求测试(UT)设计编码SMDD解决方案:SMDD需求测试(UT)设计SMDD编码语义模型驱动设计(SMDD)总览匹配的人员能力思想通过构建语义模型驱动出好的设计语义模型构建三步法DSL语义模型的语义与问题领域的核心需求相匹配语义模型提供的框架具备可组合性原则语义模型驱动设计(SMDD)框架深入分析特定问题领域、挖掘问题领域核心需求核心需求使用
3、语义模型构建语义模型构建三步法三步法,从核心需求抽象出语义模型语义模型,其语义要与特定问题领域的核心需求相匹配基于语义模型提供一套DSLDSL(Domain-Specific Language,领域特定语言)设计核心需求特定问题领域分析语义模型构建三步法抽象匹配语义模型语义模型是提供了与问题领域核心需求相匹配的语义、框架具备可组合性的计算模型原子原子最简单、最基本的实体组合方法组合方法把原子组合起来构成更复杂实体的方法命名复杂实体的手段,命名后的复杂实体可以像原子一样通过组合方法组合成更为复杂的实体抽象手段抽象手段解决方案:提示模式需求测试(UT)设计SMDD编码提示模式:不同使用约束、不同提
4、示模式交互方式:单轮对话+有代码上传提示模板:每个场景对应一个提示模板提示模式二交互方式:多轮对话+无代码上传提示模板:每轮对话对应一个提示模板提示模式一。是否支持多轮对话信息安全、合规要求LLM的使用约束提示模式一:多轮对话+无代码上传请按如下建议修改代码:1.aaa2.bbb.请按如下建议补充代码:1.xxx2.yyy.请你自己检查一下代码是否完整、正确地实现了这套DSL描述。先不要改代码,先告诉我检查结果。请给出目前所有代码。请你采用等价类与边界值的测试设计方法,使用JUNIT4生成所有类的单元测试代码,注意每个类对应一个测试类、每个测试用例一个测试方法。请按如下建议修改代码:1.aaa
5、2.bbb.请按如下建议补充代码:1.xxx2.yyy.请你自己检查一下单元测试代码是否完善。先不要改代码,先告诉我检查结果。请给出目前所有单元测试代码。你是一名.资深程序员,请编写程序实现一个系统:1.系统的输入是.,系统的输出是.。2.实现如下面的Markdown表格描述的一套DSL,注意可组合性:|核心概念|概念语义|原子/组合|形式化表达|-|-|-|-|.|.|.|.|.|.|.|.|.|请先不要给出代码。如果你对于这一套DSL描述有疑问,特别是Markdown表格概念语义列中的内容,请向我提问,我来回答你。请先不要给出代码。你确定没有疑问了吗?请生成代码。使用初始Prompt确认L
6、LM正确理解了Prompt内容使用LLM生成代码审查LLM生成的代码执行必要的修改或补充使用LLM生成单元测试代码审查LLM生成的单元测试代码执行必要的修改或补充提示模式二:场景代码生成代码缺陷修复全量代码生成增量代码生成单元测试代码生成无依赖代码的单元测试代码生成有依赖代码的单元测试代码生成交互方式:单轮对话+有代码上传提示模板:每个场景对应一个提示模板提示模式二提示模式二:代码生成说明:1.使用Markdown语法、按总分总结构书写提示。2.在任务重申部分强调一下需要LLM做的事情和注意事项。#任务概述你是一名.资深程序员,请编写程序实现一个系统:1.系统的输入是.,系统的输出是.。2.实