微众银行大模型助效研发实践ai为主角、人为助手的协作模式微众银行:黄叶飞 目录研发流程面临的主要问题大模型在研发效能上的初步探索大模型辅助研发遇到的困难agent离不开的ragmulti-agents实现研发流程提效让ai成为主角的人机交互方式 研发流程面临的主要问题?银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂复杂内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇。 研发复杂性所带来人力成本逐步变大,如何解决?需求变化应对快速市场变化,需求变化快,要求交付速度快复杂流程银行面对的流程相对来说更复杂,更严格个人效率较多相似工作,不同工具使用导致个人效率的差异沟通成本岗位和角色分工清晰,所带来的是沟通成本的提升知识沉淀产品迭代、人员迭代产生大量的知识研发流程面临的主要问题 不同岗位工作内容的复杂性占用不少研发成本设计稿交互稿产品产品文档系统流程图coding微服务治理文件接入负载均衡cdn......流程组件接口文档架构文档表结构文档单测联调开发接口测试功能测试性能测试测试环境bugs版本发布线上运维系统监控测试运维大模型在研发效能上的初步探索 大模型在研发效能上的初步探索银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂初试在chatgpt出来后,大模型似乎能辅助研发效能的提升。 大模型在研发效能上的初步探索代码review在编程时,系统会根据你写的内容和语法规则,自动推荐可能的代码片段行/函数级实时续写通过自然语言描述需求,在编辑器区域直接生成代码自然语言转代码快速生成方法和行内注释,减少编写注释所需时间,提高代码可读性代码注释支持系统级别和方法全链路代码解读,并生成相关逻辑图、时序图等代码解读提前发现代码变更引入bug、对有可能出现问题代码进行警告ai辅助编程初步提升开发效率 大模型在研发效能上的初步探索微调模型的试验之路是否可行一个团队内的所有代码一个小java开发团队的代码量在2-3g大小(前端开发团队也有在做微调,但只针对公共组件的使用上)单元测试案例及代码提取代码中的单元测试案例、以及单元测试的代码,更精准的做代码微调公共组件使用文档真正的组件文档大小并不大,在700多m,在开发过程中便于模型能理解公司内部的基本组件并知道如何使用;同时将公共组件调用生成问答对更进准的让模型理解代码解释及关联代码首先把所有代码把无注释的代码先生成一份代码注释、然后将代码注释及代码用于做微调 大模型辅助研发遇到的困难银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂困难前期辅助编程方案并无法在研发流程中解决开发太多的痛点。 统计约60人的团队情况:编码占研发工作时间比例并不高,进而需要更全面的提效方案还有线上问题以及各种其他工作其他代码编写 37%联调及测试 23%需求分析 10%方案设计 8%其他 22%方案设计是系统稳定性、健壮性、可扩展性、安全性等非功能的重要环节方案设计 8%好的需求分析工作对后期的研发有极大帮助需求分析 10%复杂的环境及多服务串联所带来的联调及测试问题也多联调及测试 23%开发人员实际做代码编写的工作占比并不高代码编写 37%研发人员在软件开发中的时间投入大模型辅助研发遇到的困难 dbrx 132b 2024-03-27mistral 8x22b2024-04-17llama-3 8b,70b2024-04-18qwen-1.5 110b2024-04-24deepseek-v2 236b2024-05-06yi-1.5 6b,9b,34b2024-05-13开源模型迭代速度快几乎每个月都有新模型出来研发知识迭代影响几乎每周都有版本更新模型token数限制尤其是代码上下文数据巨大微调服务器成本高昂微调需要独占gpu资源,且巨大模型终归不是我们理解的那么简单大模型辅助研发遇到的困难 agent离不开的rag银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂方法rag可以解决模型微调中的不少问题。 rag处理流程-提升agent能力需求文档组件使用说明产品说明系统设计文档接口文档数据库表结构测试案例代码信息研发知识库代码检索专业术语检索功能检索数据关系检索检索生成promptllm向量化存储图数据存储结构化存储kv数据存储知识存储文件处理结构化解析代码分析图像识别数据处理questionanswer问题分析multi-querystep-backrag-fusionhydeagent离不开的rag multi-agents实现研发流程提效银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂实践从集成基础工具到不同业务场景的agent实现。 multi-agents实现研发流程提效01 基础agents 03 多环节agent 04 全流程agent 02 简单agent 集成开发工具以实现基础的agents需求分析 agentci agentcoding agent1️⃣ 根据工单号拉取详情2️⃣ 根据详情识别需要升级的组件输出:标准json1️⃣ 根据流水编译打包2️⃣ 异常判断版本号agent异常处理agent组件agentgit toolcode agentfile tool通过模型识别需要升级的组件分配系统需要发布的版本git操作生成新的代码操作文件编辑、修改操作一个升级jar包的工单agent实现通过简单agents实现研发所需的基础agent约定agent之间的协议集成基础的开发工具实现一个相对闭环的能力 从curd入手,实现简单代码的生成multi-agents实现研发流程提效01 基础agents 03 多环节agent 04 全流程agent 02 简单agent 以表驱动实现后端代码的agents通过rag识别表个性化支持包名根据表生成相关代码大模型推荐命名 multi-agents实现研发流程提效01 基础agents 03 多环节agent 04 全流程agent 02 简单agent 以接口驱动实现多环节的agents-文档生成❖ 需求文档对字段要求文本化❖ 支持接口文档系统上导入需求直出接口❖ 结合rag识别字段的常用命名 multi-agents实现研发流程提效01 基础agents 03 多环节agent 04 全流程agent 02 简单agent 以接口驱动实现多环节的agents-代码及测试接口文档风格promptletgowebsite模版rag如意server code参数算法test case前端后台测试 multi-agents实现研发流程提效01 基础agents 03 多环节agent04 全流程agent 02 简单agent 以需求文档驱动实现全流程agents需求文档做字段抽取、接口抽取、逻辑抽取、结合rag拆分需求需求分析根据需求分析产出的字段生成接口接口定义需求功能点 现有表rag确定新表创建sql表结构创建根据功能 代码库信息确定代码所实现的位置代码定位单测 sit测试并根据错误及异常生成新的issues测试以工具为主编译部署代码review判断生成代码的完整性、是否合理等代码review拆分代码任务生成每段代码,并更新到相关文件代码生成 multi-agents实现研发流程提效01 基础agents 03 多环节agent04 全流程agent 02 简单agent 以需求文档驱动实现全流程agentstask1task1task1......需求文档planningprompt templatememorymemoryragllm_1抽取名词拆分需求需求分析agent抽取字段agent多样性不同的task定义不同agentagent通过memory串联rag和tools是个性化的条件ragtoolsllm_1抽取字段生成表结构表生成agent规则校验表规范agentregen确认功能点 multi-agents实现研发流程提效01 基础agents 03 多环节agent04 全流程agent 02 简单agent 实现从需求到代码自动生成 让ai成为主角的人机交互方式银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂优化大量的agent需要人工参与才能实现完整的功能。 让ai成为主角的人机交互方式模型能力对于agent的影响导致无法自动化无法完整返回你要的内容react:无法识别你的工具不允许返回xxx,还是返回了xxx要求返回xxx,就是没返回xxx理解prompt的能力有限不是你想要的planning agents完成主要工作银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂人人可用不是人人都去写agent,但目标是人人都能用上agent,而agent做执行的工作只能完成部分,故agent能优先执行,人去调整agent执行的结果。 agents完成主要工作planningreflectionself-criticschain of thoughtaction1action2action3action1action2action4action5tooltool......reasoningconfirmask for inputadd/modify tool人工调整agent制定的planning 每个agent的设计可由人参与并做调整人工调整planning的任务,并让llm重新确认工具调整复杂的prompt的会导致llm生成有偏差重新执行每个任务都有可能agent执行失败,人工支持参与实现人工参与完成任务上下游关联的agent之间需要定义清晰的协议,在人工调整过程能让协议也自动生成正确agent协议planning调整工具的命名、描述会对llm的识别有影响,需要支持人工随时介入调整prompt调整agent断点、重新执行、幂等agents完成主要工作 展望银行内部研发效率主要体现在其复杂性上:人员、产品、监管事情应接不暇复杂未来更多便利的工具;更多人投入agent开发;更稳定的环境;更自动化的流程管理