1、AI 辅助编程真实测评与企业落地实践作者:蒋志伟个人简要蒋志伟爱好技术的架构师参与 OpenTelemetry 开源社区曾 0-1 搭建美团 APP 的推荐、搜索服务曾负责 Q 上亿用户机票搜索、低价推荐系统有旅游GDS(全球分销系统)的技术专利开源项目基于场景的AI编程测评集https:/ Bengio 团队嵌入技术,将高维稀疏的数据通过神经网络或其他算法映射到低维稠密的 向量 空间,尤其Word Embedding 词向量普遍用于 NLP 领域Embedding2013 GoogleWord2Vec 模型生成词向量成为自然语言处理的标配方法,通过上下文来预测当前词语的 CBOW 训练方法,
2、为后来神经网络语言模型的发展奠定了基础Word2Vec2017 Google OpenAITransformer 模型在翻译任务上超过之 前最优秀的循环神经网络模型采用Attention Layers重点解决多义词问题,基于此的 GPT 模型让AIGC 极大发展TransformerCode LLM(代码生成大语言模型)的发展人工智能对自然语言的上下文推理、一词多义理解能力的加持。让场景契合的辅助编程领域有了快速的发展辅助编程相关场景任务一般有三大类:代码-代码:包含代码补全、代码修复 代码-文本:代码解释、代码优化、代码异常排查 文本-代码:通过高级提示词 Prompt 做代码生成(单元测试
3、、API、SQL、数据建模等)Code LLM:代码生成大语言模型的发展关键模型与项目2024.7 CodeGeeX4 https:/ DeepSeek-V2 https:/ LLM测评数据集问题现有的Code LLM测评工具通常使用有限的训练数据以HumanEval、MBPP 代表代码模型评测数据几年没更新模型测试训练、测试数据不足现有的Code LLM测评原理只关注代码结果的正确性,看不到代码的可读性、完整性、通用性等维度的信息评估标准单一各家公布自家测试结果,测评是黑盒的状态将测评集放到训练集中训练,好比拿着标准答案答考题,测评分数会虚高测评打分原理造假容易代码大模型各家评测基数差异巨大
4、Github上公布的测评结果明显有水分Meta Code Llama智谱 CodeGeeX 4阿里巴巴 CodeQwen北大 aiXcoderDeepSeek Coder V2 同样大模型不同测评来源,评分不一样基本常识性错误代码大模型评测集工作原理最常用的测评:Human Eval OpenAI 发布的一个评估大型语言模型在代码生成方面表现的基准测试。它包含164个设计的Python编程任务,每个任务有多个单元测试,通过评估模型生成的代码是否能通过这些单元测试来评判模型的能力1根据测评文件编程任务给出prompt,调用大模型生成完整代码,保存到一个样本文件的completion字段中用JSO
5、N格式定义好编程任务,保存测评集在文件中2代码大模型评测集工作原理4用程序读取样本文件,批量把任务生成中代码和任务的单元测试代码合并成一个完整的程序3假设样本文件叫samples.jsonl,调用叫 evaluate_functional_correctness 函数完成1-4的步骤批量动态执行每个任务程序,如果单元测试用例通过,返回passed,最后调用passk 的算法测评打分5passk 打分算法简单来造个假1部署 Humman Eval 测评环境准备编程任务、答案样本2简单用测试集和问题集运行打分效果,passk 分值 0.16简单修改测试集数据,增加正确答案样本4passk 分值 明
6、显提高,达到 0.4993业界都自家测评打分没有透明渠道造假成本太低基于场景功能的测评测试集02基于编程场景的测评编程使用场景从日常编程习惯,按频率和功能进行工具的对比测评,如代码补全、缺陷查找、代码调优、报错排查、代码解释等提示词生成能力提示词生成功能代码的能力,如API文档、单元测试、代码注释、参考模版编写新模块等能力的对比测评业务建模能力辅助编程能更多读懂我们的业务逻辑,参与框架设计,如数据库表设计、项目构建、根据数据模型生成Service代码客观加主观判定不能只局限程序对错简单打分,要加入更多判断标准:成熟度、完整度、易用性、语言特性等实际编程出发看到真正的价值代码补全提示从代码上下文