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