螞蟻Codefuse團隊 投稿
量子位 | 公衆号 QbitAI
從設計、編碼到測試、部署,甚至是運維……軟體開發的整個流程,可以通通交給AI了!
一款覆寫軟體開發全生命周期的端到端AI智能助手,讓分散的軟體開發操作變得內建化、智能化。
這款AI助手專門針對開發領域設計,避免了通用大模型不可靠、資訊不及時、領域任務不完善等問題。
這個AI助手名為DevOps-ChatBot,由螞蟻Codefuse項目組研發,安裝過程簡單快速,還可通過docker完成一鍵部署。
DevOps-ChatBot具體都有哪些功能,表現又是如何,請看作者投稿。
解決通用大模型缺陷
随着ChatGPT等通用大模型以及各類垂直領域大模型的出現,各個領域的産品互動模式、使用者資訊擷取模式都在逐漸發生改變。
但DevOps對于事實的準确性、資訊的及時性、問題的複雜性、資料的安全性要求都比較高,通用大模型生成内容不可靠、資訊不及時、領域任務不完善的問題始終存在。
于是,Codefuse團隊發起并開源DevOps-ChatBot端到端AI智能助手,專為軟體開發的全生命周期而設計:
- 通過DevOps垂類知識庫 + 知識圖譜增強 + SandBox執行環境等技術來保障生成内容的準确性、及時性并讓使用者互動修改代碼編譯執行,確定答案的可靠性;
- 通過靜态分析技術 + RAG檢索增強生成等技術來讓大模型感覺上下文,實作代碼庫級别的元件了解、倉庫項目級的代碼檔案修改、生成,不單單隻是函數片段級的代碼補齊;
- 通過完善鍊路級的Multi-Agent排程設計、協同知識庫、代碼庫、工具庫、沙盒環境,來讓大模型可以實作DevOps領域複雜多步驟的任務;
- 通過DevOps領域專屬的領域模型和評測資料建構支援私有化部署來保障資料的安全性,以及特定任務的高可用性。
Codefuse團隊期望通過本項目逐漸改變原有的開發運維習慣,從各處資料查詢、獨立分散平台操作的傳統開發運維模式轉變到大模型問答的智能化開發運維模式,讓“天下沒有難做的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:沙盒子產品,提供代碼編譯執行和動作執行的環境
- LLM:智能體大腦,可支援多種開源模型和LLM接口範圍
- ️ API Management:API管理元件,快速相容相關開源元件和運維平台
除了上述功能子產品的組裝協同,DevOps-ChatBot項目還具有以下核心差異技術和功能點:
- 智能排程核心:體系鍊路完善的排程核心、多模式一鍵配置
- 代碼整庫分析:倉庫級代碼了解、項目檔案級代碼編寫生成
- 文檔分析增強:文檔知識庫結合知識圖譜的檢索、推理增強
- 垂類專屬知識:DevOps專屬知識庫、垂類知識庫自助一鍵建構
- 垂類模型相容:DevOps領域小模型、DevOps周邊平台相容
智能排程核心
在處理複雜問題時,我們可以通過ReAct過程來選擇、調用和執行工具回報,實作多輪工具使用和多步驟執行。
但對于更複雜的場景,例如複雜代碼的開發,單一LLM Agent難以勝任。
研究團隊希望建構一個可擴充、易于使用的多智能體(Multi-Agent)架構,通過簡易的配置即可輔助完成日常辦公、資料分析、開發運維等各種通用任務。
本項目的多智能體架構汲取相容了多個架構的優秀設計,比如metaGPT中的消息池(message pool)、autogen中的代理選擇器(agent selector)等。
DevOps-ChatBot中多智能體架構的核心要素包括了以下6個方面:
- 智能體資訊互動(Agent Communication):Agent之間有效的資訊交流對于上下文管理以及問答效率提升至關重要。包含兩種通信模式:簡潔直覺易于了解的鍊式對話、借鑒metaGPT的消息池架構;
- 标準操作過程(Standard Operation Process,SOP):定義智能體的輸入和輸出範圍和定義SOP辨別,如Tool、Planning、Coding、Answering、finished等,對LLM的生成結果進行标準化解析和處理;
- 計劃與執行器(Plan and Executor):增加大模型的工具使用、智能體排程、代碼的生成;
- 長-短期記憶管理(Long-short term memory Management):為了模拟人類團隊協作過程,增加一個專門負責内容總結(類似于會議助理)的Agent,對長期記憶總結并提取更有效的資訊進行傳遞;
- 人-智能體互動(Human-agent interaction):面對複雜場景,由人類介入智能體互動過程并提供回報,使大模型能準确了解人類的意圖,進而更有效地完成任務;
- Prompt控制與管理(Prompt Control and Management):負責協調和管理智能體間的Prompt互動,提升系統的複雜性控制和互動效率。輸入和輸出采用Markdown結構化設計,實作清晰規範的結果展示,友善閱讀和解析。
實際操作過程中,使用者可通過組合多個智能體來實作一個完整且複雜的項目上線場景(Dev Phase),如需求鍊(CEO)、産品論證鍊(CPO、CFO、CTO)、工程組鍊(選擇者、開發者1~N)、部署鍊(開發者、部署者)等。
代碼整庫分析
現階段大模型主要用于代碼生成、修複以及元件了解的任務,面臨以下挑戰:
- 代碼訓練資料存在滞後性,頻繁更新的開源/私有倉庫存在資料資訊的不及時。
- 大模型無法感覺代碼上下文和代碼庫依賴結構。
研究團隊歸納了開發中遇到的主要問題,從下圖中可以看到在開發的過程中,現有代碼庫、依賴包的了解,代碼檢索、元資訊查詢等占用的時間更長:
針對如上問題,團隊通過程式分析擷取代碼的邏輯結構并存入知識圖譜,然後通過RAG疊代查詢增強擷取必要的上下文資訊,又結合多智能體角色扮演,實作了大模型和代碼庫的有機結合。
這一部分的整體架構如下:
- 代碼結構分析:針對代碼原文進行清洗和去重來保留住有價值的代碼部分。然後通過靜态分析的手段,從代碼庫中挖掘到代碼之間的依賴圖,同時借助于大模型的了解能力來針對代碼進行解讀,在生成的結構化資訊圖譜中作為重要的補充。
- 代碼檢索生成:提供三種不同的檢索模式。Cypher檢索生成主要面向使用者對于代碼庫結構的了解(比如查詢類的數量等需求),圖譜檢索主要面向使用者的問題含有具體的類和方法名的時候來檢索代碼。
同時,團隊也在探索通過多智能體的模式,疊代搜尋代碼倉庫擷取上下文資訊,同時由其他智能體來負責階段性提煉總結資訊以及結果生成等其他任務。
文檔分析增強
大模型在涉及到專業領域知識問答(比如醫療、通訊)、私有知識問答(私域資料),容易出現幻覺導緻生成的答案不可信。
最直覺的解決方案是将特定/私有領域的資料進行加訓來增強模型知識,但訓練大模型的開銷巨大。
于是研究團隊選擇知識庫外挂的手段和檢索增強生成的方式,将與問題相關的資料從知識庫中檢索出來,作為額外知識輸入到大模型中,保障結果的可靠性&實時性,同時避免訓練開銷。
如何更精準的搜尋檢索,是本子產品核心要解決的問題,為此研究團隊提出了這樣的架構:
整個DocSearch含三種檢索鍊路,使用者可自行選擇檢索鍊路,也可以三個都選擇以擷取不同的結果。
- 傳統的文檔向量資料庫查詢:文檔向量資料庫是目前最主流的知識庫建構方法。使用Text Embedding 模型對文檔進行向量化并在向量資料庫中存儲,結合上下文學習的成果,本項目可選擇不同的檢索政策抽取知識庫中相應知識。
- 知識圖譜查詢:本項目采用Nebula圖資料庫對知識圖譜進行存儲和管理,支援導入現有知識圖譜進行知識檢索;也支援通過大模型自動抽取實體和關系,挖掘出資料中多種複雜關系。
- 知識圖譜推理+向量資料查詢:本項目也提供兩者的融合搜尋。先對每篇文檔提取标簽,同時結合使用者提問建設圖譜中的相關标簽。最後,基于标簽集合在文檔向量資料庫中檢索出與原問題相關的文檔。
知識庫建構與DevOps知識庫
如前文介紹,通過知識庫外挂和增強檢索生成的手段可以很好的解決專有/私域知識問答的問題,接下來的核心問題是如何更好的建構知識庫。
建構知識庫時常常會面對以下問題:
- 不同的資料源之間格式不一緻、品質參差不齊
- 如何自動化地識别和剔除錯誤、重複或無關緊要的資料
- 知識庫建構需要依賴于專業知識
- 知識庫需要定期更新,保持資訊的準确性和時效性
基于此,研究團隊提出了這樣的整體架構:
- 爬蟲(Crawler):實作資料的搜集,保障資料更新的及時性;
- 文檔加載器(Loader):實作多源異構資料的導入,靈活應對多樣化的資料需求;
- 清洗過濾(Filter Func):實作資料的過濾清洗,確定後續分析的準确性和高效性;
- 文本分析器(TextAnalyzer):實作對資料的智能化分析,将複雜的文本資料轉化為結構化(包含知識圖譜)、易于了解的資訊;
- 管道(Pipeline):串聯整個過程,實作了資料輸入到清洗完畢輸出的端到端自動化;
研究團隊接下來會注重于DevOps領域資料的收集和建構,同時也期望為這條标準化的資料擷取、清洗能力&智能化處理流程為更多的私有知識庫建構提供幫助。
平台與模型相容
随着大型語言模型(LLM)的出現,我們見證了問題解決方式的變革,比如智能客服系統從依賴小規模模型微調和固定規則轉向更為靈活的智能體互動。
研究團隊期望和周邊開源的DevOps平台打通相容,通過API的注冊、管理和執行能夠實作對話式互動驅動完成各種特定任務(資料查詢、容器操作等)。
為了能夠讓本項目快速相容相關開源元件和運維平台,我們通過python注冊模闆BaseToolModel類,編寫Tool_name、Tool_description、ToolInputArgs、ToolOutputArgs、run等相關屬性和方法即可實作工具的快速接入:
- 通過FastChat啟動私有模型的推理服務或者其它Restful風格的API,如Qwen2.0、文心一言等,即可完成注冊給到LLM進行排程使用
- 也可注冊螞蟻集團相關開源項目和運維平台的API,實作LLM簡單對話即可完成相關運維操作
目前已封裝工具清單如下:k-sgima異常檢測、代碼檢索、文檔檢索、duckduckgo搜尋、百度ocr識别、股票資訊查詢、天氣查詢、時區查詢。
未來展望
目前DevOps架構還處于初期,還有很多不完善的地方,接下來研究團隊計劃在如下方面做核心演進:
- 多智能體排程核心:自動化建構智能體鍊路
- 文檔分析增強:提供多種修正方式和知識圖譜檢索方式
- 代碼整庫分析:細化代碼解析提取功能,豐富代碼圖譜schema
- 知識庫建構:建構面向不同垂直領域的知識庫資料
- 平台&模型相容:與相關開源項目和運維平台的API打通
功能展示
在這五大核心子產品的驅動下,DevOps-ChatBot具有如下這些功能。
首先是文本知識庫管理:
- 文本載入、文本向量化服務、知識庫的向量檢索服務
- 提供多個知識庫的建立、管理、下載下傳等功能
- 支援爬蟲進行實時url内容爬取功能
除了文本知識庫,DevOps-ChatBot還支援知識圖譜、代碼知識庫檔案的上傳和管理。
此外,研發團隊還封裝了一些Agent場景,諸如chatPhase、docChatPhase、searchChatPhase、codeChatPhase等,可支撐知識庫問答、代碼問答、工具調用、代碼執行等功能。
除了應用在DevOps當中,DevOps-ChatBot在其他領域也是适用的!
在多智能體的排程下,DevOps-ChatBot可以延伸出很多有意思的玩法。
以下玩法可以通過本項目的子產品組裝建構完成:
代碼解釋器(Code Interpreter)
隻要上傳一個資料檔案,DevOps-ChatBot就會自動進行資料分析:
工具使用
例如:查詢某個伺服器的基本時序,傳入到監控工具中,并進行分析
智能股票分析(工具+代碼解釋器)
使用者通過簡單的自然語言查詢,就可以擷取特定股票的詳細資訊,包括曆史股價圖表、市場表現和可能的市場走向。
生成測試用例
DevOps-ChatBot可以針對代碼庫中的某個方法生成測試用例。
玩家拯救者(知識庫問答)
除了這些應用場景,DevOps-ChatBot還可以回答與具體的網絡遊戲相關的問題。包含英雄資訊、登場時間、所屬城邦等。
例如:英雄聯盟的英雄關系知識圖譜
One More Thing
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 · 頭條号簽約
關注我們,第一時間獲知前沿科技動态