蚂蚁Codefuse团队 投稿
量子位 | 公众号 QbitAI
从设计、编码到测试、部署,甚至是运维……软件开发的整个流程,可以通通交给AI了!
一款覆盖软件开发全生命周期的端到端AI智能助手,让分散的软件开发操作变得集成化、智能化。
这款AI助手专门针对开发领域设计,避免了通用大模型不可靠、信息不及时、领域任务不完善等问题。
这个AI助手名为DevOps-ChatBot,由蚂蚁Codefuse项目组研发,安装过程简单快速,还可通过docker完成一键部署。
DevOps-ChatBot具体都有哪些功能,表现又是如何,请看作者投稿。
随着ChatGPT等通用大模型以及各类垂直领域大模型的出现,各个领域的产品交互模式、用户信息获取模式都在逐步发生改变。
但DevOps对于事实的准确性、信息的及时性、问题的复杂性、数据的安全性要求都比较高,通用大模型生成内容不可靠、信息不及时、领域任务不完善的问题始终存在。
于是,Codefuse团队发起并开源DevOps-ChatBot端到端AI智能助手,专为软件开发的全生命周期而设计:
Codefuse团队期望通过本项目逐步改变原有的开发运维习惯,从各处资料查询、独立分散平台操作的传统开发运维模式转变到大模型问答的智能化开发运维模式,让“天下没有难做的Coder”。
DevOps-ChatBot项目整体架构简图如下:
具体来说,它包含了以下9个功能模块:
除了上述功能模块的组装协同,DevOps-ChatBot项目还具有以下核心差异技术和功能点:
智能调度核心
在处理复杂问题时,我们可以通过ReAct过程来选择、调用和执行工具反馈,实现多轮工具使用和多步骤执行。
但对于更复杂的场景,例如复杂代码的开发,单一LLM Agent难以胜任。
研究团队希望构建一个可扩展、易于使用的多智能体(Multi-Agent)框架,通过简易的配置即可辅助完成日常办公、数据分析、开发运维等各种通用任务。
本项目的多智能体框架汲取兼容了多个框架的优秀设计,比如metaGPT中的消息池(message pool)、autogen中的代理选择器(agent selector)等。
DevOps-ChatBot中多智能体框架的核心要素包括了以下6个方面:
实际操作过程中,用户可通过组合多个智能体来实现一个完整且复杂的项目上线场景(Dev Phase),如需求链(CEO)、产品论证链(CPO、CFO、CTO)、工程组链(选择者、开发者1~N)、部署链(开发者、部署者)等。
代码整库分析
现阶段大模型主要用于代码生成、修复以及组件理解的任务,面临以下挑战:
研究团队归纳了开发中遇到的主要问题,从下图中可以看到在开发的过程中,现有代码库、依赖包的理解,代码检索、元信息查询等占用的时间更长:
针对如上问题,团队通过程序分析获取代码的逻辑结构并存入知识图谱,然后通过RAG迭代查询增强获取必要的上下文信息,又结合多智能体角色扮演,实现了大模型和代码库的有机结合。
这一部分的整体框架如下:
同时,团队也在探索通过多智能体的模式,迭代搜索代码仓库获取上下文信息,同时由其他智能体来负责阶段性提炼总结信息以及结果生成等其他任务。
文档分析增强
大模型在涉及到专业领域知识问答(比如医疗、通讯)、私有知识问答(私域数据),容易出现幻觉导致生成的答案不可信。
最直观的解决方案是将特定/私有领域的数据进行加训来增强模型知识,但训练大模型的开销巨大。
于是研究团队选择知识库外挂的手段和检索增强生成的方式,将与问题相关的数据从知识库中检索出来,作为额外知识输入到大模型中,保障结果的可靠性&实时性,同时避免训练开销。
如何更精准的搜索检索,是本模块核心要解决的问题,为此研究团队提出了这样的架构:
整个DocSearch含三种检索链路,用户可自行选择检索链路,也可以三个都选择以获取不同的结果。
知识库构建与DevOps知识库
如前文介绍,通过知识库外挂和增强检索生成的手段可以很好的解决专有/私域知识问答的问题,接下来的核心问题是如何更好的构建知识库。
构建知识库时常常会面对以下问题:
基于此,研究团队提出了这样的整体架构:
研究团队接下来会注重于DevOps领域数据的收集和构建,同时也期望为这条标准化的数据获取、清洗能力&智能化处理流程为更多的私有知识库构建提供帮助。
平台与模型兼容
随着大型语言模型(LLM)的出现,我们见证了问题解决方式的变革,比如智能客服系统从依赖小规模模型微调和固定规则转向更为灵活的智能体交互。
研究团队期望和周边开源的DevOps平台打通兼容,通过API的注册、管理和执行能够实现对话式交互驱动完成各种特定任务(数据查询、容器操作等)。
为了能够让本项目快速兼容相关开源组件和运维平台,我们通过python注册模板BaseToolModel类,编写Tool_name、Tool_description、ToolInputArgs、ToolOutputArgs、run等相关属性和方法即可实现工具的快速接入:
目前已封装工具清单如下:k-sgima异常检测、代码检索、文档检索、duckduckgo搜索、百度ocr识别、股票信息查询、天气查询、时区查询。
未来展望
目前DevOps框架还处于初期,还有很多不完善的地方,接下来研究团队计划在如下方面做核心演进:
在这五大核心模块的驱动下,DevOps-ChatBot具有如下这些功能。
首先是文本知识库管理:
除了文本知识库,DevOps-ChatBot还支持知识图谱、代码知识库文件的上传和管理。
此外,研发团队还封装了一些Agent场景,诸如chatPhase、docChatPhase、searchChatPhase、codeChatPhase等,可支撑知识库问答、代码问答、工具调用、代码执行等功能。
除了应用在DevOps当中,DevOps-ChatBot在其他领域也是适用的!
在多智能体的调度下,DevOps-ChatBot可以延伸出很多有意思的玩法。
以下玩法可以通过本项目的模块组装构建完成:
代码解释器(Code Interpreter)
只要上传一个数据文件,DevOps-ChatBot就会自动进行数据分析:
工具使用
例如:查询某个服务器的基本时序,传入到监控工具中,并进行分析
智能股票分析(工具+代码解释器)
用户通过简单的自然语言查询,就可以获取特定股票的详细信息,包括历史股价图表、市场表现和可能的市场走向。
生成测试用例
DevOps-ChatBot可以针对代码库中的某个方法生成测试用例。
玩家拯救者(知识库问答)
除了这些应用场景,DevOps-ChatBot还可以回答与具体的网络游戏相关的问题。包含英雄信息、登场时间、所属城邦等。
例如:英雄联盟的英雄关系知识图谱
Codefuse团队发布了一个针对DevOps领域大模型相关的开源项目DevOpsGPT,主要分为三个模块,本文中的DevOps-ChatBot就是其中之一。
除此之外,还有DevOps-Model、DevOps-ChatBot两个模块,分别为DevOps领域专属大模型和DevOps领域智能助手。
团队的目标是在DevOps领域,包含开发、测试、运维、监控等场景,真正地结合大模型来提升效率、成本节约。
团队期望相关从业者一起贡献自己的才智,来让“天下没有难做的coder”,也会定期分享对于LLM4DevOps领域的经验&尝试。
欢迎使用&讨论&共建
(1)ChatBot - 开箱即用的 DevOps 智能助手:
https://github.com/codefuse-ai/codefuse-chatbot
(2)Eval - DevOps 领域 LLM 行业标准评测:
https://github.com/codefuse-ai/codefuse-devops-eval
(3)Model - DevOps 领域专属大模型:
https://github.com/codefuse-ai/CodeFuse-DevOps-Model
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态