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