螞蟻Codefuse團隊 投稿
量子位 | 公眾號 QbitAI
從設(shè)計、編碼到測試、部署,甚至是運維……軟件開發(fā)的整個流程,可以通通交給AI了!
一款覆蓋軟件開發(fā)全生命周期的端到端AI智能助手,讓分散的軟件開發(fā)操作變得集成化、智能化。
這款A(yù)I助手專門針對開發(fā)領(lǐng)域設(shè)計,避免了通用大模型不可靠、信息不及時、領(lǐng)域任務(wù)不完善等問題。
這個AI助手名為DevOps-ChatBot,由螞蟻Codefuse項目組研發(fā),安裝過程簡單快速,還可通過docker完成一鍵部署。
DevOps-ChatBot具體都有哪些功能,表現(xiàn)又是如何,請看作者投稿。
解決通用大模型缺陷
隨著ChatGPT等通用大模型以及各類垂直領(lǐng)域大模型的出現(xiàn),各個領(lǐng)域的產(chǎn)品交互模式、用戶信息獲取模式都在逐步發(fā)生改變。
但DevOps對于事實的準(zhǔn)確性、信息的及時性、問題的復(fù)雜性、數(shù)據(jù)的安全性要求都比較高,通用大模型生成內(nèi)容不可靠、信息不及時、領(lǐng)域任務(wù)不完善的問題始終存在。
于是,Codefuse團隊發(fā)起并開源DevOps-ChatBot端到端AI智能助手,專為軟件開發(fā)的全生命周期而設(shè)計:
- 通過DevOps垂類知識庫 知識圖譜增強 SandBox執(zhí)行環(huán)境等技術(shù)來保障生成內(nèi)容的準(zhǔn)確性、及時性并讓用戶交互修改代碼編譯執(zhí)行,確保答案的可靠性;
- 通過靜態(tài)分析技術(shù) RAG檢索增強生成等技術(shù)來讓大模型感知上下文,實現(xiàn)代碼庫級別的組件理解、倉庫項目級的代碼文件修改、生成,不單單只是函數(shù)片段級的代碼補齊;
- 通過完善鏈路級的Multi-Agent調(diào)度設(shè)計、協(xié)同知識庫、代碼庫、工具庫、沙盒環(huán)境,來讓大模型可以實現(xiàn)DevOps領(lǐng)域復(fù)雜多步驟的任務(wù);
- 通過DevOps領(lǐng)域?qū)俚?span id="h5hhhhh" class="candidate-entity-word" data-gid="14344012">領(lǐng)域模型和評測數(shù)據(jù)構(gòu)建支持私有化部署來保障數(shù)據(jù)的安全性,以及特定任務(wù)的高可用性。
Codefuse團隊期望通過本項目逐步改變原有的開發(fā)運維習(xí)慣,從各處資料查詢、獨立分散平臺操作的傳統(tǒng)開發(fā)運維模式轉(zhuǎn)變到大模型問答的智能化開發(fā)運維模式,讓“天下沒有難做的Coder”。
五大核心模塊
DevOps-ChatBot項目整體架構(gòu)簡圖如下:
具體來說,它包含了以下9個功能模塊:
- Multi Source Web Crawl:網(wǎng)絡(luò)爬蟲,提供對指定url爬取相關(guān)信息的能力
- ? Data Process:數(shù)據(jù)處理模塊,提供文檔加載器、數(shù)據(jù)清洗、文本切分的功能,處理和整合多源格式的數(shù)據(jù)文檔
- ? Text Embedding Index:文檔分析核心,通過文檔上傳即可實現(xiàn)文檔檢索
- VeCTOr Database & Graph Database:向量數(shù)據(jù)庫和圖數(shù)據(jù)庫,用于數(shù)據(jù)管理
- Multi-Agent Schedule Core:多智能體調(diào)度核心,通過簡易配置即可構(gòu)建所需交互智能體
- Prompt Control:Prompt控制與管理模塊,定義Agent的上下文管理
- SandBox:沙盒模塊,提供代碼編譯執(zhí)行和動作執(zhí)行的環(huán)境
- LLM:智能體大腦,可支持多種開源模型和LLM接口范圍
- ? API Management:API管理組件,快速兼容相關(guān)開源組件和運維平臺
除了上述功能模塊的組裝協(xié)同,DevOps-ChatBot項目還具有以下核心差異技術(shù)和功能點:
- 智能調(diào)度核心:體系鏈路完善的調(diào)度核心、多模式一鍵配置
- 代碼整庫分析:倉庫級代碼理解、項目文件級代碼編寫生成
- 文檔分析增強:文檔知識庫結(jié)合知識圖譜的檢索、推理增強
- 垂類專屬知識:DevOps專屬知識庫、垂類知識庫自助一鍵構(gòu)建
- 垂類模型兼容:DevOps領(lǐng)域小模型、DevOps周邊平臺兼容
智能調(diào)度核心
在處理復(fù)雜問題時,我們可以通過ReAct過程來選擇、調(diào)用和執(zhí)行工具反饋,實現(xiàn)多輪工具使用和多步驟執(zhí)行。
但對于更復(fù)雜的場景,例如復(fù)雜代碼的開發(fā),單一LLM Agent難以勝任。
研究團隊希望構(gòu)建一個可擴展、易于使用的多智能體(Multi-Agent)框架,通過簡易的配置即可輔助完成日常辦公、數(shù)據(jù)分析、開發(fā)運維等各種通用任務(wù)。
本項目的多智能體框架汲取兼容了多個框架的優(yōu)秀設(shè)計,比如metaGPT中的消息池(message pool)、autogen中的代理選擇器(agent selector)等。
DevOps-ChatBot中多智能體框架的核心要素包括了以下6個方面:
- 智能體信息交互(Agent Communication):Agent之間有效的信息交流對于上下文管理以及問答效率提升至關(guān)重要。包含兩種通信模式:簡潔直觀易于理解的鏈?zhǔn)綄υ?、借鑒metaGPT的消息池框架;
- 標(biāo)準(zhǔn)操作過程(Standard Operation Process,SOP):定義智能體的輸入和輸出范圍和定義SOP標(biāo)識,如Tool、Planning、Coding、Answering、finished等,對LLM的生成結(jié)果進行標(biāo)準(zhǔn)化解析和處理;
- 計劃與執(zhí)行器(Plan and Executor):增加大模型的工具使用、智能體調(diào)度、代碼的生成;
- 長-短期記憶管理(Long-short term memory Management):為了模擬人類團隊協(xié)作過程,增加一個專門負(fù)責(zé)內(nèi)容總結(jié)(類似于會議助理)的Agent,對長期記憶總結(jié)并提取更有效的信息進行傳遞;
- 人-智能體交互(Human-agent interaction):面對復(fù)雜場景,由人類介入智能體交互過程并提供反饋,使大模型能準(zhǔn)確理解人類的意圖,從而更有效地完成任務(wù);
- Prompt控制與管理(Prompt Control and Management):負(fù)責(zé)協(xié)調(diào)和管理智能體間的Prompt交互,提升系統(tǒng)的復(fù)雜性控制和交互效率。輸入和輸出采用Markdown結(jié)構(gòu)化設(shè)計,實現(xiàn)清晰規(guī)范的結(jié)果展示,方便閱讀和解析。
實際操作過程中,用戶可通過組合多個智能體來實現(xiàn)一個完整且復(fù)雜的項目上線場景(Dev Phase),如需求鏈(CEO)、產(chǎn)品論證鏈(CPO、CFO、CTO)、工程組鏈(選擇者、開發(fā)者1~N)、部署鏈(開發(fā)者、部署者)等。
代碼整庫分析
現(xiàn)階段大模型主要用于代碼生成、修復(fù)以及組件理解的任務(wù),面臨以下挑戰(zhàn):
- 代碼訓(xùn)練數(shù)據(jù)存在滯后性,頻繁更新的開源/私有倉庫存在數(shù)據(jù)信息的不及時。
- 大模型無法感知代碼上下文和代碼庫依賴結(jié)構(gòu)。
研究團隊歸納了開發(fā)中遇到的主要問題,從下圖中可以看到在開發(fā)的過程中,現(xiàn)有代碼庫、依賴包的理解,代碼檢索、元信息查詢等占用的時間更長:
針對如上問題,團隊通過程序分析獲取代碼的邏輯結(jié)構(gòu)并存入知識圖譜,然后通過RAG迭代查詢增強獲取必要的上下文信息,又結(jié)合多智能體角色扮演,實現(xiàn)了大模型和代碼庫的有機結(jié)合。
這一部分的整體框架如下:
- 代碼結(jié)構(gòu)分析:針對代碼原文進行清洗和去重來保留住有價值的代碼部分。然后通過靜態(tài)分析的手段,從代碼庫中挖掘到代碼之間的依賴圖,同時借助于大模型的理解能力來針對代碼進行解讀,在生成的結(jié)構(gòu)化信息圖譜中作為重要的補充。
- 代碼檢索生成:提供三種不同的檢索模式。Cypher檢索生成主要面向用戶對于代碼庫結(jié)構(gòu)的理解(比如查詢類的數(shù)量等需求),圖譜檢索主要面向用戶的問題含有具體的類和方法名的時候來檢索代碼。
同時,團隊也在探索通過多智能體的模式,迭代搜索代碼倉庫獲取上下文信息,同時由其他智能體來負(fù)責(zé)階段性提煉總結(jié)信息以及結(jié)果生成等其他任務(wù)。
文檔分析增強
大模型在涉及到專業(yè)領(lǐng)域知識問答(比如醫(yī)療、通訊)、私有知識問答(私域數(shù)據(jù)),容易出現(xiàn)幻覺導(dǎo)致生成的答案不可信。
最直觀的解決方案是將特定/私有領(lǐng)域的數(shù)據(jù)進行加訓(xùn)來增強模型知識,但訓(xùn)練大模型的開銷巨大。
于是研究團隊選擇知識庫外掛的手段和檢索增強生成的方式,將與問題相關(guān)的數(shù)據(jù)從知識庫中檢索出來,作為額外知識輸入到大模型中,保障結(jié)果的可靠性&實時性,同時避免訓(xùn)練開銷。
如何更精準(zhǔn)的搜索檢索,是本模塊核心要解決的問題,為此研究團隊提出了這樣的架構(gòu):
整個DocSearch含三種檢索鏈路,用戶可自行選擇檢索鏈路,也可以三個都選擇以獲取不同的結(jié)果。
- 傳統(tǒng)的文檔向量數(shù)據(jù)庫查詢:文檔向量數(shù)據(jù)庫是當(dāng)前最主流的知識庫構(gòu)建方法。使用Text Embedding 模型對文檔進行向量化并在向量數(shù)據(jù)庫中存儲,結(jié)合上下文學(xué)習(xí)的成果,本項目可選擇不同的檢索策略抽取知識庫中相應(yīng)知識。
- 知識圖譜查詢:本項目采用Nebula圖數(shù)據(jù)庫對知識圖譜進行存儲和管理,支持導(dǎo)入現(xiàn)有知識圖譜進行知識檢索;也支持通過大模型自動抽取實體和關(guān)系,挖掘出數(shù)據(jù)中多種復(fù)雜關(guān)系。
- 知識圖譜推理 向量數(shù)據(jù)查詢:本項目也提供兩者的融合搜索。先對每篇文檔提取標(biāo)簽,同時結(jié)合用戶提問建設(shè)圖譜中的相關(guān)標(biāo)簽。最后,基于標(biāo)簽集合在文檔向量數(shù)據(jù)庫中檢索出與原問題相關(guān)的文檔。
知識庫構(gòu)建與DevOps知識庫
如前文介紹,通過知識庫外掛和增強檢索生成的手段可以很好的解決專有/私域知識問答的問題,接下來的核心問題是如何更好的構(gòu)建知識庫。
構(gòu)建知識庫時常常會面對以下問題:
- 不同的數(shù)據(jù)源之間格式不一致、質(zhì)量參差不齊
- 如何自動化地識別和剔除錯誤、重復(fù)或無關(guān)緊要的數(shù)據(jù)
- 知識庫構(gòu)建需要依賴于專業(yè)知識
- 知識庫需要定期更新,保持信息的準(zhǔn)確性和時效性
基于此,研究團隊提出了這樣的整體架構(gòu):
- 爬蟲(Crawler):實現(xiàn)數(shù)據(jù)的搜集,保障數(shù)據(jù)更新的及時性;
- 文檔加載器(Loader):實現(xiàn)多源異構(gòu)數(shù)據(jù)的導(dǎo)入,靈活應(yīng)對多樣化的數(shù)據(jù)需求;
- 清洗過濾(Filter Func):實現(xiàn)數(shù)據(jù)的過濾清洗,確保后續(xù)分析的準(zhǔn)確性和高效性;
- 文本分析器(TextAnalyzer):實現(xiàn)對數(shù)據(jù)的智能化分析,將復(fù)雜的文本數(shù)據(jù)轉(zhuǎn)化為結(jié)構(gòu)化(包含知識圖譜)、易于理解的信息;
- 管道(Pipeline):串聯(lián)整個過程,實現(xiàn)了數(shù)據(jù)輸入到清洗完畢輸出的端到端自動化;
研究團隊接下來會注重于DevOps領(lǐng)域數(shù)據(jù)的收集和構(gòu)建,同時也期望為這條標(biāo)準(zhǔn)化的數(shù)據(jù)獲取、清洗能力&智能化處理流程為更多的私有知識庫構(gòu)建提供幫助。
平臺與模型兼容
隨著大型語言模型(LLM)的出現(xiàn),我們見證了問題解決方式的變革,比如智能客服系統(tǒng)從依賴小規(guī)模模型微調(diào)和固定規(guī)則轉(zhuǎn)向更為靈活的智能體交互。
研究團隊期望和周邊開源的DevOps平臺打通兼容,通過API的注冊、管理和執(zhí)行能夠?qū)崿F(xiàn)對話式交互驅(qū)動完成各種特定任務(wù)(數(shù)據(jù)查詢、容器操作等)。
為了能夠讓本項目快速兼容相關(guān)開源組件和運維平臺,我們通過python注冊模板BaseToolModel類,編寫Tool_name、Tool_description、ToolInputArgs、ToolOutputArgs、run等相關(guān)屬性和方法即可實現(xiàn)工具的快速接入:
- 通過FastChat啟動私有模型的推理服務(wù)或者其它Restful風(fēng)格的API,如Qwen2.0、文心一言等,即可完成注冊給到LLM進行調(diào)度使用
- 也可注冊螞蟻集團相關(guān)開源項目和運維平臺的API,實現(xiàn)LLM簡單對話即可完成相關(guān)運維操作
目前已封裝工具清單如下:k-sgima異常檢測、代碼檢索、文檔檢索、duckduckgo搜索、百度ocr識別、股票信息查詢、天氣查詢、時區(qū)查詢。
未來展望
目前DevOps框架還處于初期,還有很多不完善的地方,接下來研究團隊計劃在如下方面做核心演進:
- 多智能體調(diào)度核心:自動化構(gòu)建智能體鏈路
- 文檔分析增強:提供多種修正方式和知識圖譜檢索方式
- 代碼整庫分析:細(xì)化代碼解析提取功能,豐富代碼圖譜schema
- 知識庫構(gòu)建:構(gòu)建面向不同垂直領(lǐng)域的知識庫數(shù)據(jù)
- 平臺&模型兼容:與相關(guān)開源項目和運維平臺的API打通
功能展示
在這五大核心模塊的驅(qū)動下,DevOps-ChatBot具有如下這些功能。
首先是文本知識庫管理:
- 文本載入、文本向量化服務(wù)、知識庫的向量檢索服務(wù)
- 提供多個知識庫的創(chuàng)建、管理、下載等功能
- 支持爬蟲進行實時url內(nèi)容爬取功能
除了文本知識庫,DevOps-ChatBot還支持知識圖譜、代碼知識庫文件的上傳和管理。
此外,研發(fā)團隊還封裝了一些Agent場景,諸如chatPhase、docChatPhase、searchChatPhase、codeChatPhase等,可支撐知識庫問答、代碼問答、工具調(diào)用、代碼執(zhí)行等功能。
除了應(yīng)用在DevOps當(dāng)中,DevOps-ChatBot在其他領(lǐng)域也是適用的!
在多智能體的調(diào)度下,DevOps-ChatBot可以延伸出很多有意思的玩法。
以下玩法可以通過本項目的模塊組裝構(gòu)建完成:
代碼解釋器(Code Interpreter)
只要上傳一個數(shù)據(jù)文件,DevOps-ChatBot就會自動進行數(shù)據(jù)分析:
工具使用
例如:查詢某個服務(wù)器的基本時序,傳入到監(jiān)控工具中,并進行分析
智能股票分析(工具 代碼解釋器)
用戶通過簡單的自然語言查詢,就可以獲取特定股票的詳細(xì)信息,包括歷史股價圖表、市場表現(xiàn)和可能的市場走向。
生成測試用例
DevOps-ChatBot可以針對代碼庫中的某個方法生成測試用例。
玩家拯救者(知識庫問答)
除了這些應(yīng)用場景,DevOps-ChatBot還可以回答與具體的網(wǎng)絡(luò)游戲相關(guān)的問題。包含英雄信息、登場時間、所屬城邦等。
例如:英雄聯(lián)盟的英雄關(guān)系知識圖譜
One More Thing
Codefuse團隊發(fā)布了一個針對DevOps領(lǐng)域大模型相關(guān)的開源項目DevOpsGPT,主要分為三個模塊,本文中的DevOps-ChatBot就是其中之一。
除此之外,還有DevOps-Model、DevOps-ChatBot兩個模塊,分別為DevOps領(lǐng)域?qū)俅竽P秃虳evOps領(lǐng)域智能助手。
團隊的目標(biāo)是在DevOps領(lǐng)域,包含開發(fā)、測試、運維、監(jiān)控等場景,真正地結(jié)合大模型來提升效率、成本節(jié)約。
團隊期望相關(guān)從業(yè)者一起貢獻(xiàn)自己的才智,來讓“天下沒有難做的coder”,也會定期分享對于LLM4DevOps領(lǐng)域的經(jīng)驗&嘗試。
歡迎使用&討論&共建
(1)ChatBot – 開箱即用的 DevOps 智能助手: https://github.com/codefuse-ai/codefuse-chatbot
(2)Eval – DevOps 領(lǐng)域 LLM 行業(yè)標(biāo)準(zhǔn)評測:https://github.com/codefuse-ai/codefuse-devops-eval
(3)Model – DevOps 領(lǐng)域?qū)俅竽P停?https://github.com/codefuse-ai/CodeFuse-DevOps-Model
— 完 —
量子位 QbitAI · 頭條號簽約
關(guān)注我們,第一時間獲知前沿科技動態(tài)
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。