歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
本文由 織雲平臺團隊 團隊釋出在騰訊雲+社群
誕生背景
最近這些年,運維行業提出了不少概念,各種各樣的“XX運維”可以說是你方未唱罷我方已登場。然而,這些概念,都有一個共同點:專注於面向運維同學自身的工具和系統。
這些,其實都隱含了一個前提:DO分離後,開發和運維都做好自己的事情,然後就可以老死不相往來了。哦,還有一個另類,DevOps。雖然這個概念,在運維行業炒得更火,但它的初衷,其實是開發拋開運維單幹吧?只不過運維同學利用自己手握裝置資源的優勢,發起了一波反攻,在固有的部署和運營領域以外,趁勢還染指了研發流程。天天忙著敲程式碼做需求的開發們,也得了便利,就偃旗息鼓了。
當然,以上只是戲言。但有一點是事實:DO分離後,開發和運維之間,有了無形的隔閡。運維同學不熟悉研發環境,開發同學不熟悉運營系統。運維同學作為業務運營的主要責任方,運維崗位作為支撐崗位,而且是7*24小時支撐崗位,其職責要求能夠隨時隨地支援業務——無論是開發同學的緊急需求,還是硬體裝置的自身故障。
開發同學希望運維同學能第一時間響應需求,緊急故障需要運維同學第一時間處理。然而,運維同學也是普通人。工作時間,會有開會,培訓,吃飯之類不處於隨時待命狀態的情況。非工作時間,各種瑣事更是多種多樣。
如何緩解這個矛盾呢?每天給IDC的機器上三炷香自然於事無補。正所謂求人不如求己,我們的幸福生活,需要我們自己來創造。我們專注於運維場景,藉助於AI技術,開發了智慧運維機器人,為的就是緩解這一矛盾。
登場亮相
什麼是智慧運維機器人?我們所開發的智慧運維機器人,就是採用了人工智慧技術的,預設場景定位於日常運維諮詢和操作需求的,面向開發和運維兩類人群的,依託於企業IM工具的客服機器人。
這個定義不怎麼友好。眼見為實。這張截圖,就是披著企業微信外衣的智慧運維機器人:
簡單來說,一方面,它是個智慧客服機器人,能理解自然語言,能自動回答開發的諮詢問題,能執行開發的操作需求。另一方面,它不是一個單純的客服,它還是一個面向運維同學自己的移動運維平臺。
智慧運維機器人的這樣設計,自然是針對運維場景的特殊性而來。運維場景最典型的特點有以下三條:
• 操作類需求。不同於一般客服,諮詢需求的佔比並沒有排在第一位,反倒是操作類需求很可能佔到三分之二。所以,定位於運維場景的機器人,不僅要“說到”,更要“做到”。
• 移動運維平臺。日常運營中,運維同學會用到一些運營系統或工具。在公司使用自然沒問題,一旦業務有問題時,需要在公司外使用,即使手頭有電腦,也得花好幾分鐘VPN先連到公司內網。第一,時間上不划算,第二,半夜三更的,VPN一次,折騰下來,說不定都就此睡意全消了。一個移動運維平臺,對運維同學的工作生活平衡非常重要。
• 指令碼開發。很多運維同學都有一定的開發能力。當然,有些運維同學的開發能力還很強。不過,對於不少運維同學來說,手機APP開發,門檻還是高了點。寫寫指令碼就能完成的開發,才是他們想要的。
產品定位
不管依託於哪種企業IM工具,披著什麼樣的“外衣”,智慧運維機器人本質上是一個開發自助平臺,也是一個移動運維平臺。
作為開發自助平臺,一方面,它依託於企業IM工具,開發在使用前不需要額外安裝配置。另一方面,通過自然語言處理技術,開發可以用聊天這種最自然的方式提出需求並得到解決。
這兩個特點,可以說,對於開發而言,使用這個自助平臺的門檻為零。設計大師唐納德.諾曼說,好的設計,有兩個重要特徵,可視性(discoverability)和易通性(understanding)。簡單來說,就是看了就知道怎麼操作。對於這樣一個也面向開發,而不只是運維自嗨的產品而言,零使用門檻的重要性怎麼強調都不為過。
作為移動運維平臺,使用者鑑權和聯通內網環境,企業IM工具已經內嵌了這兩個功能;引數提取,操作識別以及介面互動,智慧運維機器人幫你做好。運維同學只需要按照規定的格式實現一個非同步的HTTP任務介面(一個任務發起,一個任務查詢)就可以新增自定義的工具了。
開發工作基本就是簡單的指令碼。甚至後續我們會支援同步的HTTP任務介面。這一點切合運維工具定製化強,開發敏捷的特點。而且相比手機APP這個正統的移動運維平臺,智慧運維機器人的移動運維工具開發門檻低到大多數的運維同學都能夠邁過去。
典型場景
說了那麼多,來看看我們的智慧運維機器人的典型應用場景。智慧運維機器人的應用場景可以分為兩類:
• 隨時響應使用者(主要是開發)的諮詢和操作需求
• 非工作時間執行運維自己定製的工具直接處理問題或者提供輔助資訊
下面的截圖是幾個實際使用案例。
場景一:隨時隨地響應使用者諮詢
場景二:隨時隨地響應使用者操作需求
場景三:非工作時間手機處理告警
場景四:非工作時間獲取自定義輔助資訊
這幾個使用案例只是拋磚引玉。比如,四個案例中,有兩個都是和告警有關的。實際上,理論上來講,告警處理的最高境界,應該是沒有告警,其次是告警出來後自動處理。讓告警發出來,就已經落入了下乘。
不過,一萬年太久,只爭朝夕。在更上乘更完整的解決方案出臺前,先自己動手來個可以接受的妥協方案,未嘗不是一件可取的事情。而且,運維工作中,會遇到很多階段性的緊急需求。只要開發門檻足夠低,工具化就是值得的。
有了上述的介紹內容,相信大家對於智慧運維機器人是什麼,能做些什麼,已經有了一定的印象。接下來詳細介紹智慧運維機器人的技術方案。
技術方案
智慧運維機器人是基於企業IM工具的,它和使用者的互動介面,就是IM工具的會話視窗。我們定義會話有三種模式:
智慧模式,這是預設的模式。智慧模式下,會對使用者輸入的訊息進行文字匹配,返回相應的匹配結果。
操作模式。操作模式不提供主動切換的入口,而是在智慧模式下,當識別到使用者的輸入,是一種操作需求時,自動進入操作模式。而操作發起或取消後,又自動切換為預設的智慧模式。
人工模式。人工模式是使用者主動點選切換的。在人工模式下,使用者所有輸入直接透傳給運維賬號的值班人員。
以下是一條訊息或一個事件的簡單處理流程:
- 智慧運維機器人流程
考慮到一些小細節,實際處理邏輯比這個更復雜。比如,怎麼避免兩個智慧運維機器人賬號相互“灌水”?怎麼回應使用者傳送的純表情?又比如一些體驗問題。當FAQ庫裡找不到使用者問題的回答時,我們會提供一個快捷選單,列出一些常見的自助操作或文件。那麼怎麼設計快捷選單的出現時機?
作為智慧客服的變種,對話系統是智慧運維機器人的核心。上述流程圖中,只是簡單地寫了呼叫對話系統獲取結果。實際上,呼叫對話系統後的返回,會有幾種情況。具體如下圖所示:
– 和對話系統的互動
上圖其實透露了一點,我們的對話系統,技術選型並非是當前研究熱點的生成式模型,而是基於檢索的模型。這也是考慮到智慧運維機器人的應用場景中,使用者和智慧運維機器人互動時,不是想找個人聊聊天放鬆一下,而是想得到一個權威解答。
所以,我們利用運維賬號積累的使用者高頻問題和對應的標準化答案,構成了一個簡單易編輯可擴充套件的知識庫。對話系統的主要功能,就是把使用者問題和知識庫中的合適答案關聯起來。下圖就是對話系統的結構圖。其中,多輪引擎和圖譜引擎還在實現中。
- 對話系統結構示意
我們的這一套技術框架裡,對於使用者的問題,會使用建有高效索引的檢索系統先召回部分高分的答案,再進行精確的匹配和排序。這種“粗排”和“精排”兩步走的方案,是很多資訊檢索系統(包括推薦系統)的標準正規化。新增一個“粗排”的步驟,可以排除大部分無關的候選集,大大減少需要精確排序的候選集。在知識庫的知識條目數很大的時候,耗時能夠指數級地減少。
“粗排”過後,我們就可以對召回的那部分候選的知識庫問答對做“精排”了。這個過程中,我們用到了兩大類的匹配模型。
一類是傳統的文字匹配模型。 這些模型都沒有用到深度學習,本質上就是判斷使用者問題和知識庫中的問題(及部分答案資訊)的相似度(兩個文字串的相似)。根據匹配的語素單位分,可以基於字、基於詞、基於N-gram的多粒度的匹配。在簡單文字匹配方法裡,有編輯距離和扎卡德係數等。在傳統資訊檢索方法裡,利用領域語料資訊的檢索方法,如TFIDF,已經有更好平滑方法的BM25。
另一類,就是神經網路分類模型。 簡單來說,這個模型是這樣的:
- 神經網路分類模型
圖片比較抽象,接下來我們詳細說明一下。
在搜尋引擎這類文字檢索的場景,查詢往往是幾個關鍵字,但是待查詢的文件卻很長,不用擔心查詢的關鍵字和待查詢文字沒有交集。但是在問答的場景中,使用者問題和知識庫中的問題,很大概率沒有任何一個相同詞,但是仍然表達一個意思。
所以,我們藉助詞向量技術,將任何語素單位(字、詞)表示成一個低維空間的連續變數,這樣可以構建一個字詞之間的有效距離空間,進而更加精確地去匹配兩個文字的語義距離,而不是字面上的距離。我們將詞向量技術同我們的監督任務本身在一個端對端網路中進行訓練。
這種方法也是當前文字表示和文字匹配技術的標準正規化。先將字詞等語素單位通過詞向量矩陣對映成連續向量,然後利用CNN/RNN等神經網路去提取文字詞向量之上的高階特徵,再通過這些特徵去構建一個分類任務。
在智慧運維機器人場景裡,就是對使用者問題和一個個知識庫問題做0/1分類,1表示這兩個問題是同一個意思。由於詞向量矩陣、CNN/RNN引數以及特徵做分類的權重矩陣都是一個網路圖裡面的引數,可以聯合起來訓練,這樣就給了網路更大的靈活性。
與文字表示的場景不一樣,文字匹配的場景更依賴於兩個句子的互動資訊。而一維匹配模型分別去建模兩個句子,然後對錶示求距離的方式並不能很好地建模兩個句子的互動資訊。我們選擇用二維匹配模型,在一開始就構建兩個句子的聯合表示,對這個聯合表示去求特徵,以得到更好的結果。
此外除了詞向量的資訊,句子中其它特徵也可以編碼成向量作為CNN/RNN的特徵。比如句子裡面的字詞位置資訊、兩個句子相互重疊的位置、詞的詞性資訊等資訊。同時在自然語言處理領域的attention機制也是文字匹配的關鍵資訊,讓句子對特定的字詞更加敏感,這也是符合人類認知的習慣,通過最顯著的部分來抓住資訊的關鍵。
所有的傳統文字匹配模型得到的分數,和神經網路分類模型得到最後的分數,用一個迴歸模型組合起來,得到使用者問題和知識庫問題的匹配度,最後把匹配度在指定閾值之上的知識庫問題和它的答案返回給使用者。
只是開始
在這個AI的東風吹得滿世界人心躁動的時代,在這個人人談AI,處處見AI的時代,我們做智慧運維機器人,確實有著蹭熱點的嫌疑。我們也無意去澄清這個嫌疑。這麼多人,這麼多企業關注AI,投身AI,連國家也將其作為重大戰略,不僅僅出於被AI取代,被時代拋棄的恐懼,更是因為無法拒絕AI給我們帶來的無窮想象空間。
當我們出於降低使用者使用門檻的需求而引入了自然語言處理技術後,發現原本單純的運維客服賬號,瞬間充滿了可能性。騰訊織雲智慧運維機器人,只是AI在運維領域的小試牛刀。當越來越多的AI技術引入運維領域後,我們能憧憬,我們的征途,正駛向星辰大海嗎?
問答
相關閱讀
此文已由作者授權騰訊雲+社群釋出,轉載請註明文章出處