《黄非-大模型驱动的智能软件开发.pdf》由会员分享,可在线阅读,更多相关《黄非-大模型驱动的智能软件开发.pdf(48页珍藏版)》请在三个皮匠报告上搜索。
1、大模型驱动的智能软件开发黄非 阿里巴巴目 录CONTENTS1.大模型应用范式2.AI驱动的全流程软件开发3.代码助手的技术挑战和解决方案4.从代码助手到软件开发智能体5.总结与展望演讲嘉宾黄非阿里巴巴通义实验室 自然语言智能负责人他带领自然语言处理团队研发通义自然语言大模型体系,在机器阅读理解(MRC),图文问答(VQA)和中文理解(CLUE)等任务上实现首次超越人类结果;建设阿里巴巴NLP平台和产品在集团内支持数百个场景日均数万亿级调用,对外以智能技术赋能软件开发,智能客服,协同办公,司法,电商等行业合作伙伴,是AI开源魔搭社区NLP模型的主要贡献者。他在人工智能顶级会议和期刊发表文章20
2、0+篇,中美专利数十项,曾担任ACL,TACL等学术期刊,会议领域主席/编辑等。大模型应用范式PART 01通用大模型到行业大模型:领域继续训练(CPT),领域微调(SFT)生成式预训练通用大模型生成式预训练行业大模型指令微调(贴合行业场景)强化学习(RL),PPO基于对话的生成式预训练行业大模型奖励模型海量领域语料无监督继续训练123迭代范式1:领域增强Agentic RAG:实时性知识,事实性知识,本地知识库搜索,减少大模型幻觉范式2:检索增强(RAG)多模态大模型A stop sign with a sticker that says eating animals.2023财年二氧化碳净
3、排放量同比减少12.9%Alibaba International Digital Commerce Group来自超60个国家和地区玩转聊天大模型本文以通义千问大模型(qwen-turbo)为例自然图像对于上述图像给一句话描述Chart 生成要点指出图中数据的关键点表格视觉问答2023财年营收第二的集团?文档信息提取员工来自多少个国家和地区?网页识别图片中的文字图像描述文本阅读范式3:多模态表达情感和偏好你最喜欢吃什么?我没有感官,所以我没有任何喜好或偏好。吃什么对我来说都一样,我不会有任何感受。亲爱的,我最喜欢吃巧克力了,你呢?表现情绪是不是你偷了我的东西?不是的,我没有偷东西,我是一个计
4、算机程序,我没有能力做出偷窃行为。这我可不是这样的人。有人设/个性我太生气了,我们分手吧!哎呀,怎么啦亲爱的?怎么突然生气啦?不要生气啦,来抱抱QQQAAAAA范式4:个性化大小模型协同领域大模型基础大模型小模型OCRIDPTTSASRSummary搜索增强知识库文档库插件调用函数计算代码编译网页解析图表绘制接口调用大模型与业务系统的有机结合范式5:大小模型协同Agents资源库知识增强 Agent角色扮演 Agent工具调用 Agent总结分析 Agent总结者总结回答审查评价规划者任务分类Agents编排Agents交互调度监控进展处理异常反馈输出范式6:智能体AI驱动的全流程软件开发 P
5、ART 02编程成为最高频的 AI 应用场景其中编程以 29%占比高居榜首。Programming29%Education23%Content21%Sales&Marketing13%Personal&Other10%Politics&Nonprofit3%Category Breakdown of 4,098 ChatGPT PromptsAnalysis of unique users single and multi-prompt sessions from May&June,2023AI 成为提升软件研发效率的必选项程序员 2/3 的工作时间直接跟代码相关程序员花费三分之一的时间编写新
6、代码或改进现有代码(32%)。花费 35%的时间来管理代码,包括代码维护(19%)、测试(12%)和响应安全问题(4%)。另外 23%的时间花在会议以及管理和运营任务上编写代码和改进已有代码会议,管理和运营代码维护测试响应安全问题其他32%23%19%12%9%4%程序员 IDE 使用排行38%33%27%22%18%13%9%8%6%5%4%3%3%2%2%0%13%25%38%50%63%Visual Studio CodeIntelliJVisual StudioPyCharmEclipseAndriod StudioIPython/JupyterVimSublime TextCodaP
7、HPStormXCodeKomodoAtomTable程序员的时间分配情况编程事务性工作的替代1研发人员重复性工作,简单工作,沟通的工作特别多,浪费时间。个体效率2研发管理流程化,缺乏灵活性,组织容易产生效率竖井,响应能力弱。协作效率知识传递模式的改变智能编码智能项管平台工程AutoDev智能问答个人助理智能洞察智能研发工具智能评审任务协同代码编写软件测试软件发布问题排查日常运维知识查询企业一线开发者架构设计知识梳理确定优化目标数据清洗梳理资产安全与隐私自定义PromptRAG 检索增强Agent 平台基础模型能力代码补全模型研发问答模型企业专属模型模型训练SFTLLM 智能大脑实时增强大模型
8、对软件领域的深远影响大模型驱动的软件开发流程辅助完成任务自主完成任务协同处理复杂任务LLM as AgentLLM as Multi-AgentsLLM as Copilot影响整个软件研发过程,多Agent互相协作完成复杂工作不改变软件工程专业分工,增强领域专业技术,AI 研发工具辅助人完成任务单一职能专家,能够自主使用工具完成预定任务阶段一阶段二阶段三具赋能人员提效主导、提示及确认具独立完成工作给定上下文,完成知识对齐具与人协同共生负责创意、纠偏及确认代码大模型产品演进的三阶段Copilot 阶段Agent 阶段Multi-Agents 阶段任务自主处理功能自主研发代码辅助生成Copilo
9、t 阶段通义灵码的核心功能架构本地服务服务端模型数据算力IDE 客户端生成粒度触发时机业务上下文感知多模型路由扩展集成RAG/Agent持续的模型训练精细化数据处理面向任务的数据集面向能力的数据集企业级 RAG向量数据库提示词工程模型路由身份鉴权生成问答对话研发问答模型代码补全模型企业专属模型模型训练 SFTEmbedding数据清洗数据标注数据采集数据解析效果评测GPU 算力池算力运维分码分析代码后处理上下文感知问答会话管理本地 RAG向量数据库Agent 框架本地工具短期记忆代码助手的技术挑战和解决方案 PART 03代码助手核心需要攻克的技术难点生成准确度推理性能数据个性化代码安全生成准
10、确度:过硬的基础模型能力CodeQwen 1.5,超过 3T tokens 训练,支持 64K 上下文Qwen2,超过 7T tokens 训练,支持 128K 上下文通义灵码补全模型通义灵码问答模型持续训练持续训练Multi-Programming Language Performance(MultiPL-E)86.083.891.1补全准确度本地服务代码分析代码后处理问答管理会话管理代码后处理上下文感知服务端身份鉴权生成问答对话模型路由提示词工程向量数据库企业级 RAG模型代码补全模型专项任务模型研发问答模型IDE 客户端代码引用选择模型库内跨文件感知评测集中,准确率从 22%提高到 66
11、.9%当前代码上下文构建 Prompt模型生成“幻觉”问题Top N代码引用相似代码当前代码上下文构建 Prompt模型生成跨文件上下文感知,插件与模型联合优化基于上下文感知的自适应生成粒度决策通义灵码基于代码的语义信息,充分让模型理解不同场景下所需的生成粒度,从而让模型能够根据当前正在编写的代码位置,模型自适应决策应该生成的代码粒度。生成单行代码:无法构建完整的函数或模块代码块的不同位置提供不同生成规则:准确度低生成粒度决策准确率,Java 语言从47%提升到56%,Python 语言从26%提升到44%,其他语言均有较大提升知我所想触手可及推理性能分级缓存、丰富的模型组合,实现速度与准确兼
12、顾代码补全任务 CodeQwen2 模型时延敏感型 小参数代码 本地缓存服务端缓存推理加速流式补全本地服务分码分析代码后处理问答管理会话管理代码后处理上下文感知服务端身份鉴权生成问答对话模型路由提示词工程向量数据库企业级 RAG模型代码补全模型专项任务模型研发问答模型IDE 客户端代码专项任务 Qwen-Plus 模型中等参数模型 7项代码技能研发由问答 Qwen-Max 模型最大参数模型并叠加互联网实时RAG技术数据个性化企业级代码补全、研发问答检索增强本地服务分码分析代码后处理问答管理会话管理代码后处理上下文感知服务端身份鉴权生成问答对话模型路由提示词工程向量数据库企业级 RAG模型代码补
13、全模型专项任务模型研发问答模型IDE 客户端知识库管理服务模型推理服务LLMEmbedding数据解析调度结构化解析数据分块代码/文档向量化问题理解整理回答初步召回二轮召回重排文件服务功能场景相似逻辑生成自研框架生成规范代码生成API调用代码生成功能场景研发文档问答基于API文档生成代码研发规范优化代码根据样例生成代码代码补全检索增强研发问答检索增强向量服务检索引擎向量存储运维测试开发项目管理企业数据的个性化特点唯我专属触手可及所在行业存在较多专有词汇对需求/任务/缺陷的内容及格式有固定的规范/要求需要学习已有的项目管理策略/经验编码需要符合企业制定规范需要引用企业内的二方包需要调用企业内的A
14、PI接口代码的业务逻辑较复杂,存在较少的通用代码适配企业内已有的数据库表结构,并学习SQL相关逻辑企业内通常使用自研开发框架,如前端框架、组件库等需要符合企业内指定的测试规范所在行业的业务逻辑较复杂企业内通常使用自研的测试框架需要复用企业内的运维手册运维人员需要学习企业内的大量运维脚本/知识需要快速获取企业内的运维接口/API企业数据的个性化流程唯我专属触手可及企业代码/知识库代码数据处理过滤过小或过大的文件过滤文件行数大于xxxx的文件过滤掉注释比例大于 xx%的文件过滤掉反编译产出的文件文档数据处理各种文档类型转换为markdown格式根据标题段落构建文档结构树使用大模型、规则等策略抽取Q
15、A问答对模型微调需要加入开放域数据及私域数据混合训练如果企业内GPU资源不足,可以采用LoRA/QLoRA的方式,训练数据较小时,需要避免过拟合检索增强采用关键词+向量混合检索的方式比仅用向量检索效果会更好,检索后进行重排能进一步提升召回词嵌入模型对没有见过的数据,泛化性较差数据处理模型微调/RAG索引效果评测通义灵码插件通义灵码本地客户端代码加密本地向量存储敏感信息过滤用户本地客户端服务和模型推理API模型推理返回客户端https内容加密此过程代码数据不落盘,不会用于二次训练通过代码加密技术防止传输过程泄密通过本地向量存储降低云端存储泄密风险通过敏感信息过滤避免密钥信息意外传出代码安全全链路
16、安全防护通义灵码不断提升能力,显著提升开发者工作效率通义灵码对工作效率和专注度提升的影响3%4%3%3%4%4%3%3%20%21%17%17%26%25%27%26%46%46%50%51%感觉编码作效率更可以保持编码流可以减少重复代码的编写可以减少浏览器搜索次数1分2分3分4分5分从代码助手到软件开发智能体PART 04代码智能体:从简单代码任务走向复杂代码生成GitHub Copilot 发布 WorkspaceCognition AI 发布 Devin从单一 Agent,走向多 Agent 架构单工程问答Agent基于单库 RAG 技术,以及固定步骤实现对单库范围内的简单编码任务。具备
17、一定自主任务规划能力,以及使用工具能力,可自主完成单库范围内的编码任务。具备自主测试能力的Agent,可以理解任务需求,阅读代码,生成测试代码,并完成运行。多 Agents 基于 AI 调度共同完成任务。实现从需求-代码-测试的全流程自主化。编码Agent测试AgentMulti-AgentsAgent 阶段通义灵码工程级别的智能问答本地检索引擎本地向量存储引擎远程 embedding 服务本地工作流编排架构知识问答需求细化代码库信息获取需求任务拆解需求关键信息提取库内检索增强本地向量检索召回检索结果合并及重排企业知识库检索召回发送请求组装 Prompt大模型生成本地库内检索增强服务通过感知本
18、地工作空间中源文件进行预处理,建立在用户本地的向量化索引,基于本地工作流编排引擎,完成多阶段任务。工程级别代码生成与问答利用检索增强技术结合大模型,实现例如代码查找,业务逻辑生成,SQL生成,整库功能解读等复杂问答能力。SWE-bench 测试集SWE-bench 评估AI解决真实世界编程问题的能力How to Understand Whole Software Repository1.Repo图构建:利用从属关系、依赖关系构建Repo图,并利用BM25等简单的方法为Repo每个chunk打分;2.Repo探索:基于初始打分逐步探索Repo,并利用大模型对chunk进行打分修正,修正的分数沿着
19、chunk的从属关系和依赖关系进行传播增强;3.关键路径总结:经过探索后,总结出多个关键chunk和路径,大模型为每个chunk进行总结;提出了蒙特卡洛项目感知优化方法,在蒙特卡洛构建的过程中,利用大模型判断最后可能的chunk与issue间的关联程度,并通过从属关系、引用关系进行扩散,逐步定位缺陷点;https:/arxiv.org/abs/2406.01422基于蒙特卡洛项目感知优化方法,大幅提升了缺陷定位准确性(错误率降低17%),我们在SWE-bench lite 21.3%(ACR 16%,SWE-Agent 18%)灵码Agent获得 SWE-bench-Lite SOTA落地难点
20、Multi-Agent 阶段 AI 程序员概念架构 UserContextConversationPlannerLLMsTools LibraryMulti-Agent SysEnvironmentMessaging poolCollaboration CoreStructured outputActionsReflectionPrompt结构化任务管理多智能体的工作模式反映了人类团队如何分解大型任务,提供一种分配任务和管理智能体的直接方法简化工作流程将复杂的任务分解为更小的子任务使整个项目更易于管理,提高灵活性和适应性,符合企业特点和需要高效执行任务让某个具体的智能体专注于特定任务。每个智能
21、体能够专注地分析并执行任务,提高系统工作效率未来展望人工智能和软件工程的融合发展PART 05未来智能软件研发工具链形态AI 智能平台层(意图识别、用户习惯、提示词工程、用户鉴权)运行沙箱环境模型推理服务模型微调 SFT检索增强 RAG企业级数据管理AI 程序员AI 辅助工作区域企业研发数据及数字资产管理设计需求看板代码托管CI/CD知识库领域能力库IDE 客户端开发者研发门户IM 工具从团队协同(依赖人)到 人机协同(依赖算力,数据)更强的模型 +更前沿的智能体技术 +更先进的软件开发理念人月神话及其面临的问题人与智能体the mythical man-computing powerthe
22、mythical man-month及其面临的问题40年前N年后人工智能(AI)和 软件工程(SE)的融合发展面向软件工程的机器学习面向软件工程的机器学习Code Generation,Summarization,SearchCode Generation,Summarization,SearchProgram RepairProgram RepairUI Designs with Multimodal LearningUI Designs with Multimodal LearningLLM for Fuzzing TestLLM for Fuzzing TestAutomated Bug
23、 ReplayAutomated Bug Replay 测试与分析 Malware Detectors Vulnerability Detection Fault Localization Log-Based Anomaly Detection Automatic Logging with LLM and ICL Pre-trained Language Model for Log Understanding 进化 Multi-Intent Comment Generation with ICL Automated Code Refinement评测Benchmark评测Benchmark C
24、oderEval,EvoCodeBench,CrossCodeEvalAI for SESE for AI人工智能(AI)和 软件工程(SE)的融合发展代码模型 Execution-aware Pre-training for Source Code DeepSeek Coder:Let the Code Write Itself GraphCodeBERT:Pre-training with Data Flow StarCoder 2 and The Stack v2:The Next Generation向AI的软件开发测试 Crafting Unusual Programs for Fu
25、zzing Deep Learning Libraries Prompt Injection attack against LLM-integrated Applications Pandora:Jailbreak GPTs by Retrieval Augmented Generation Poisoning代码助可性分析 Survey on the Usability of AI Programming Assistants How to Support ML End-User Programmers through a Conversational AgentAI for SESE for AI更广阔的代码智能(Code Intelligence)SoftwareEngineeringCode forData ScienceCode forEmbodied AICode forAI4ScienceTHANKS 谢谢观看