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