當運維遇上LLM:大模型 Agent 在 AIOps 運維場(chǎng)景有哪些新實(shí)踐
一、為什么要用大模型Agent技術(shù)
近期,大模型的迅猛發(fā)展為 AI 行業(yè)帶來(lái)了巨大的進(jìn)步,也有力地推動(dòng)了 AIOps 的變革。大模型主要通過(guò)對話(huà)的方式實(shí)現智能賦能,Agent 借助多步對話(huà),利用規劃、反思以及工具的使用,以目標為驅動(dòng),形成能夠自治完成復雜任務(wù)的智能體。 Agent 對大模型的加持,極大地提升了大模型的智能能力,并且能對 AIOps 任務(wù)類(lèi)場(chǎng)景起到很好的智能增強作用,有助于提升運維的人效和加強自動(dòng)化程度。 大模型 Agent 在 AIOps 運維場(chǎng)景中,可以解決日常任務(wù),將 SRE 從重復的勞動(dòng)中解脫出來(lái),提高人效,如日常的巡檢,重復故障發(fā)現和處置,知識/數據查詢(xún)分析等;Agent 不再依靠 SRE 針對低級指令和流程的編輯/計劃,可完全自驅的進(jìn)行分析,規劃,最終解決問(wèn)題;而針對一些創(chuàng )新性和探索性的工作,Agent 也可以通過(guò)知識探索,流程規劃,工具使用等方式實(shí)現。 人工交互,主要是針對單/多 Agent 中模型的推理能力和知識信息不足的問(wèn)題,通過(guò)人工介入進(jìn)行補充。 在 AIOps 運維中,大模型 Agent 對傳統場(chǎng)景帶來(lái)了全新的增強與提升: ChatOps:大模型 Agent 對 ChatOps 的支持較為直接,最直接體現在意圖識別和工具使用上,可直接借助大模型和 Agent 的能力來(lái)實(shí)現并增強,對于知識問(wèn)答,還可以充分利用 RAG 的方式,實(shí)現知識庫的引用及回答的生成。 二、如何建設大模型Agent來(lái)幫助AIOps場(chǎng)景 Agent 的建設有比較常見(jiàn)架構,包括了重要的組成部分:行動(dòng),計劃,記憶,工具,同時(shí)依賴(lài)大模型LLM的能力,角色和環(huán)境。各個(gè)組成部分根據功能分工,利用sop進(jìn)行合理編排,形成不同領(lǐng)域或者特性的智能體,在線(xiàn)上環(huán)境中通過(guò)Agent的制定或者意圖的識別,實(shí)現調用和執行。如下簡(jiǎn)單介紹一下各個(gè)組件常用的構建方法和落地時(shí)間。 大模型是整個(gè)Agent的大腦,Agent的運行都需要大腦的反思能力和規劃能力來(lái)自驅Agent的思考和運行,針對目前商用和開(kāi)源的大模型的能力上看,在不同的場(chǎng)景和專(zhuān)業(yè)領(lǐng)域各有差異,在使用中可根據不同場(chǎng)景進(jìn)行比對分析選擇合適的模型和參數,并需要建立統一的適配器接口,達到方便進(jìn)行模型調試比對的能力。同時(shí),依賴(lài)LLMOps的功能實(shí)現模型的訓練/微調,實(shí)現模型能力的調整和優(yōu)化。 計劃規劃,Agent一般對需要多次大模型的交互和工具調用來(lái)達到任務(wù)目標,整個(gè)過(guò)程需要通過(guò)大模型能力等方式來(lái)進(jìn)行規劃計劃,其中最常用的方法是反思,通過(guò)大模型的批判和思考能力,對于問(wèn)題,中間回答等進(jìn)行反思來(lái)確定下一步工作,常見(jiàn)的方法如 ReAct,Self-Ask,ReWoo 等。 這里的實(shí)踐落地中,需要考慮運維的 SOP(Standard Operating Procedures)如何引入規劃中,針對重復的有規范的任務(wù),可通過(guò)專(zhuān)家經(jīng)驗生成流程驅動(dòng)規劃,針對無(wú)法匹配的任務(wù),嘗試推理生成規劃,并能通過(guò)自學(xué)習來(lái)完善和豐富經(jīng)驗流程。 另外,如在根因定位和故障排查等場(chǎng)景中,可通過(guò)啟發(fā)式算法,搜索問(wèn)題空間,如 ToT(Tree of Thought),GoT(Graph of Thought) 等。 記憶管理,Agent 的記憶,最常見(jiàn)的是分長(cháng)記憶和短記憶,長(cháng)記憶最常用的方法是通過(guò) RAG 的方式從外掛的知識庫來(lái)獲取知識,整個(gè) RAG的過(guò)程可以使用固定的流程,更好的方式也使用Agent的規劃和反思的能力,選擇和調整檢索的策略,來(lái)提升檢索知識的有效性。 短記憶,一般是通過(guò) prompt 的方式,將會(huì )話(huà)的歷史,指令,例子,要求等信息放入,讓大模型進(jìn)行回答,有很多相關(guān)的策略和方法,重要的是要控制token數,從生成大模型的主要機制上,整體的 token 數量一般是有限制的,根據注意力機制,prompt 中過(guò)多的語(yǔ)義也是會(huì )被遺忘的,可通過(guò) chatGPT 等對 prompt 進(jìn)行生成和壓縮,將重要信息放到 prompt 的開(kāi)頭和結尾,通過(guò)引號等方式加重關(guān)鍵信息。 工具執行,工具執行是大模型拓展到 Agent 的關(guān)鍵基礎能力,很多大模型都通過(guò)針對性的預訓練和微調將 function calling 的能力加入到模型本身中,通過(guò)模型的調用來(lái)實(shí)現工具調用的決策,當然通過(guò) ReAct 的方式,調用通用大模型也是可行的。在運維領(lǐng)域,相關(guān)工具和能力不會(huì )在通用的訓練數據中,因為領(lǐng)域知識的缺乏導致很多工具決策不夠精準,可通過(guò)模型的微調,或者訓練中小模型來(lái)達到精準的工具調用。 環(huán)境交互,在 AIOps 的運維場(chǎng)景中,環(huán)境主要是通過(guò)工具來(lái)定義,通過(guò)工具的使用來(lái)實(shí)現 Agent 的對環(huán)境的感知,控制以及互動(dòng)。在建設實(shí)踐中,原有 AIOps 和運維平臺中的相關(guān)平臺和工具都是可以打包成工具,作為感知和操作的工具,如異常檢測的模型,根因分析的工具,運維可觀(guān)測的數據,日志,告警的信息等,Agent 智能體需要通過(guò)這些工具。 角色定義
在 Agent 的協(xié)作中,有個(gè)比較困難的障礙,就是多 Agent 的協(xié)作,多 Agent 的協(xié)作有很多的困境需要解決,目前比較明顯的問(wèn)題是角色區分和協(xié)作設計控制。角色,需要大模型能深刻理解角色,并在協(xié)作交互中,通過(guò)角色定義進(jìn)行交互,在通用場(chǎng)景中,大模型對于角色的理解尚且可以,在運維場(chǎng)景中,相關(guān)角色界線(xiàn)相對模糊,如 SRE 中的一線(xiàn)運維,二線(xiàn)運維,我們經(jīng)常說(shuō)的業(yè)務(wù)運維,技術(shù)運維,理解有一定的難度,容易理解錯誤;另外,Agent 之間的協(xié)作也很復雜,通過(guò)大模型去規劃和控制比較困難,容易進(jìn)入死循環(huán),容易偏離大目標,實(shí)踐中常用的方法就是減少 Agent 的數量,使用主持人默認進(jìn)行統一管理協(xié)作,并設定協(xié)作最大輪數,盡量使用簡(jiǎn)單的協(xié)作策略來(lái)提升協(xié)作效率、降低協(xié)作的復雜度。
三、大模型 Agent 在 AIOps 運維場(chǎng)景的實(shí)踐 故障總結:根據排查計劃和排查結果,進(jìn)行故障的總結,總結包括故障現象,故障分析過(guò)程,故障根因,推薦止損措施,推薦修復措施。相關(guān)的總結信息,需要通過(guò) RAG(Retrieval-Augmented Generation) 的方式,檢索內部故障庫,知識庫,以及利用搜索引擎進(jìn)行知識搜集后,通過(guò)大模型進(jìn)行總結回答,回答后的結果,進(jìn)行格式整理存入故障庫中,在人工審核后形成新的故障知識,為之后的故障排查使用。 總體上來(lái)說(shuō),故障排查通過(guò)固定流程(范圍界定->故障排查->故障總結)的生成降低了可能的排查遺漏,復用了歷史故障排查,提升了排查效率;通過(guò)并發(fā)的逐步反思排查的步驟執行,盡可能的分析相關(guān)事件,指標,日志等的異常,代替SRE進(jìn)行故障下鉆分析;通過(guò)故障總結,自動(dòng)化利用歷史知識和外部知識,進(jìn)行故障的根因分析和修復推薦,輔助SRE進(jìn)行相關(guān)故障分析,幫助場(chǎng)景實(shí)現自學(xué)習。 在 Oncall 運維場(chǎng)景中,期望通過(guò)智能問(wèn)答實(shí)現一線(xiàn)攔截,提升一線(xiàn)人效的同時(shí),減少二線(xiàn)的介入量,提升 SRE 的人效。知識問(wèn)答目前主要的實(shí)現方法就是通過(guò) RAG 的技術(shù),實(shí)現外掛知識庫的檢索,通過(guò)大模型進(jìn)行回答,其中有些比較有效的實(shí)踐如下:
針對故障診斷/修復的場(chǎng)景,可使用多 Agent 的方式進(jìn)行實(shí)現,多 Agent 可根據故障依賴(lài)的組織結構設計多個(gè) Agent,使用主持人的方式,規劃/管理各個(gè)角色的協(xié)作,并對目標的達成進(jìn)行判斷決策。
針對使用的知識,工具和環(huán)境交互,可利用工具箱進(jìn)行劃分,分配給不同的角色,減少一個(gè)角色的使用的工具,精簡(jiǎn)一個(gè)角色的職能,提升多 Agent 的協(xié)作效率。