一個智能助手搞定軟件開發全流程,從設計到運維統統交給AI

2023-12-14 27 12/14

專爲軟件開發者打造

從設計、編碼到測試、部署,甚至是運維……軟件開發的整個流程,可以通通交給AI了!

一款覆蓋軟件開發全生命週期的端到端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項目整體架構簡圖如下:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

具體來說,它包含了以下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)等。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

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)、部署鏈(開發者、部署者)等。

現階段大模型主要用於代碼生成、修復以及組件理解的任務,面臨以下挑戰:

  • 代碼訓練數據存在滯後性,頻繁更新的開源/私有倉庫存在數據信息的不及時。
  • 大模型無法感知代碼上下文和代碼庫依賴結構。

研究團隊歸納了開發中遇到的主要問題,從下圖中可以看到在開發的過程中,現有代碼庫、依賴包的理解,代碼檢索、元信息查詢等佔用的時間更長:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

針對如上問題,團隊通過程序分析獲取代碼的邏輯結構並存入知識圖譜,然後通過RAG迭代查詢增強獲取必要的上下文信息,又結合多智能體角色扮演,實現了大模型和代碼庫的有機結合。

這一部分的整體框架如下:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

  • 代碼結構分析:針對代碼原文進行清洗和去重來保留住有價值的代碼部分。然後通過靜態分析的手段,從代碼庫中挖掘到代碼之間的依賴圖,同時藉助於大模型的理解能力來針對代碼進行解讀,在生成的結構化信息圖譜中作爲重要的補充。
  • 代碼檢索生成:提供三種不同的檢索模式。Cypher檢索生成主要面向用戶對於代碼庫結構的理解(比如查詢類的數量等需求),圖譜檢索主要面向用戶的問題含有具體的類和方法名的時候來檢索代碼。

同時,團隊也在探索通過多智能體的模式,迭代搜索代碼倉庫獲取上下文信息,同時由其他智能體來負責階段性提煉總結信息以及結果生成等其他任務。

大模型在涉及到專業領域知識問答(比如醫療、通訊)、私有知識問答(私域數據),容易出現幻覺導致生成的答案不可信。

最直觀的解決方案是將特定/私有領域的數據進行加訓來增強模型知識,但訓練大模型的開銷巨大。

於是研究團隊選擇知識庫外掛的手段和檢索增強生成的方式,將與問題相關的數據從知識庫中檢索出來,作爲額外知識輸入到大模型中,保障結果的可靠性&實時性,同時避免訓練開銷。

如何更精準的搜索檢索,是本模塊核心要解決的問題,爲此研究團隊提出了這樣的架構:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

整個DocSearch含三種檢索鏈路,用戶可自行選擇檢索鏈路,也可以三個都選擇以獲取不同的結果。

  • 傳統的
    文檔向量數據庫查詢
    :文檔向量數據庫是當前最主流的知識庫構建方法。使用Text Embedding 模型對文檔進行向量化並在向量數據庫中存儲,結合上下文學習的成果,本項目可選擇不同的檢索策略抽取知識庫中相應知識。
  • 知識圖譜
    查詢:本項目採用Nebula圖數據庫對知識圖譜進行存儲和管理,支持導入現有知識圖譜進行知識檢索;也支持通過大模型自動抽取實體和關係,挖掘出數據中多種複雜關係。
  • 知識圖譜推理+向量數據
    查詢:本項目也提供兩者的融合搜索。先對每篇文檔提取標籤,同時結合用戶提問建設圖譜中的相關標籤。最後,基於標籤集合在文檔向量數據庫中檢索出與原問題相關的文檔。

如前文介紹,通過知識庫外掛和增強檢索生成的手段可以很好的解決專有/私域知識問答的問題,接下來的核心問題是如何更好的構建知識庫。

構建知識庫時常常會面對以下問題:

  • 不同的數據源之間格式不一致、質量參差不齊
  • 如何自動化地識別和剔除錯誤、重複或無關緊要的數據
  • 知識庫構建需要依賴於專業知識
  • 知識庫需要定期更新,保持信息的準確性和時效性

基於此,研究團隊提出了這樣的整體架構:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

  • 爬蟲
    (Crawler):實現數據的蒐集,保障數據更新的及時性;
  • 文檔加載器
    (Loader):實現多源異構數據的導入,靈活應對多樣化的數據需求;
  • 清洗過濾
    (Filter Func):實現數據的過濾清洗,確保後續分析的準確性和高效性;
  • 文本分析器
    (TextAnalyzer):實現對數據的智能化分析,將複雜的文本數據轉化爲結構化(包含知識圖譜)、易於理解的信息;
  • 管道
    (Pipeline):串聯整個過程,實現了數據輸入到清洗完畢輸出的端到端自動化;

研究團隊接下來會注重於DevOps領域數據的收集和構建,同時也期望爲這條標準化的數據獲取、清洗能力&智能化處理流程爲更多的私有知識庫構建提供幫助。

隨着大型語言模型(LLM)的出現,我們見證了問題解決方式的變革,比如智能客服系統從依賴小規模模型微調和固定規則轉向更爲靈活的智能體交互。

研究團隊期望和周邊開源的DevOps平臺打通兼容,通過API的註冊、管理和執行能夠實現對話式交互驅動完成各種特定任務(數據查詢、容器操作等)。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

爲了能夠讓本項目快速兼容相關開源組件和運維平臺,我們通過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還支持
知識圖譜

代碼知識庫
文件的上傳和管理。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

此外,研發團隊還封裝了一些Agent場景,諸如chatPhase、docChatPhase、searchChatPhase、codeChatPhase等,可支撐知識庫問答、代碼問答、工具調用、代碼執行等功能。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

除了應用在DevOps當中,DevOps-ChatBot在其他領域也是適用的!

在多智能體的調度下,DevOps-ChatBot可以延伸出很多有意思的玩法。

以下玩法可以通過本項目的模塊組裝構建完成:

只要上傳一個數據文件,DevOps-ChatBot就會自動進行數據分析:

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

例如:查詢某個服務器的基本時序,傳入到監控工具中,並進行分析

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

用戶通過簡單的自然語言查詢,就可以獲取特定股票的詳細信息,包括歷史股價圖表、市場表現和可能的市場走向。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

DevOps-ChatBot可以針對代碼庫中的某個方法生成測試用例。

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

除了這些應用場景,DevOps-ChatBot還可以回答與具體的網絡遊戲相關的問題。包含英雄信息、登場時間、所屬城邦等。

例如:英雄聯盟的英雄關係知識圖譜

一个智能助手搞定软件开发全流程,从设计到运维统统交给AI

還有一件事

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