教主技術進化論2024.13.LangChain Extract(使用AI分析網絡設備日誌,提取結構數據)

现任明教教主
1粉絲
2024年10月14日
教主技術進化論2024.13.LangChain Extract(使用AI分析網絡設備日誌,提取結構數據)
好 我們開始了
我們進入教主技術進化論
2024年的第13期的內容 好吧
那麼應該這個feature是LongChain出的
Detractor
它的官方文檔
官方文檔在這個地方
好吧
那麼因爲我一直關心這個
發現出了這個玩意兒之後我想試一試
所以說今天做一個進化論
這個玩意兒幹嘛用的呢
就是看一下我的這個文字
就是說使用AI技術
從文本中提取結構化數據
什麼叫文本呢
對於我們網絡工程師而言的話
文本就是
當然了所有的命令啊
ShowRound這些東西也都算是文本
好吧
但是比如說
那我們的比如說
Show IP Interface Brave
就這種玩意兒
好吧
Show IP OSPF Label
在這個Label沒有起來
這種東西
它是文本
它沒問題
但是它是比較規範的文本
什麼叫比較規範的文本呢
就是說你看這種完全是一個表格型的東西
這種比較規範的文本
規範
像Label一下
這個也是比較
也可以說是那種比較規範的文本
那麼規範的文本的話
那麼其實解析起來難度並不大
我們其實也不需要任何人工智能技術
其實很多像Netmeco配的一些工具
或者說思科的PyATX都能幫我們解析
談不上需要人工智能
好吧
這個用一些簡單的政策表達式或者一些工具
就直接就幫你能解析了
談不上是需要什麼人工智能的
但是對於技術家公司而言
這個日誌絕對不是一個標準的那種數據
好吧
你看日誌就是會感覺會比較亂
雖然說可能你也能感覺到一些規律
比如說這是時間戳
這是一些簡單的摘要
然後後面就是一句話
但是後面這句話
它的就會比較亂
好吧
比如說你看這種套路
整體來說它就比較亂一些
那麼你用政策表達式就很難把一些關鍵的
比如說把接口把狀態
這個摳出來
其實難度就會比較大
因爲我講自動化運維
比如說我也講syslog
那麼要摳出裏面的一些關鍵字出來
其實難度比較大
因爲syslog的文字比較較爲隨意一些
就是裏面的這些形式較爲隨意一些
你用政策表達式它就不是很好亂
好吧
然後前一段時間我發現了一個博主
他一直在跟這些
反正我什麼都看
好吧
發現longchain就提供了這麼一個新的功能
longchain就提供了這麼一個track的
這麼一個新功能
好吧
好
這個時候我覺得我就想去來試試
感受一下
今天差不多花了兩個小時來把它體驗了一下
好吧
首先它提供了一個免費的網站
不需要login
直接就可以測試
就是一個track.longchain.com
好吧
那麼你可以去
當然我就做好了
當然你不用管你新建一個
然後把你的那種日誌
把你的這種比如說接口相關的日誌
我就兩種類型
一個接口相關的
一個是OSPF相關的
好吧
那麼比如說你就覺得我們要分析這個日誌
就這種奇奇怪怪的
好吧
我也找不到其中的一些規律
好
那這個時候
你就可以把它給貼到這個網址上
貼到
然後讓他去幫你分析你這些文本
然後讓他去幫你去去構建一個這個jason的sigma
然後你看他就能夠去把你的裏面的
他認爲裏面有時間
他認爲你這個裏面有幾個重要的
第一個可能就是時間戳時間戳
OK
然後他第二個他一來一個叫事件類型
我覺得這個事件類型還行
開始沒有了
事件類型
比如說就中間這個東西事件類型
好吧
然後緊接着接口名字
接口名字
他會把接口名字給扣出來
然後接口狀態
接口狀態怎麼地了
OK
他就自動的分析
然後自動的就幫你產生了
這個jason的sigma
OK
他說你覺得這個東西對不對
好吧
那比如說你覺得沒問題
你就讓他這是這是他你給一個文本
他就自動的分析你的文本
然後他就覺得這些東西是需要被提取出來的
好
你可以去創建一下
好
創建完了之後
你就可以去試一下
比如說你就可以把這東西
貼一貼
然後貼到這兒
然後你試一下
看看是不是能夠就是滿足他的要求
好
你看他幫你解釋的沒問題吧
時間戳
事件類型
然後狀態
然後接口名字
接口名字
OK
好
這個時候
他其實就會幫你產生一個
jason的sigma這麼一個代碼
好吧
但是一會兒你看官方文檔
官方文檔
要讓我們去寫一個這種類
類
但是在線測試是給我們的一個jason sigma
好吧
這是很簡單
好吧
就是jason sigma是吧
好
然後但是你需要去把jason sigma轉到類上面來
那麼是不是需要人工去寫的
完全不需要
你就直接你看直接把這個玩意兒
看一下
我給你直接起一個新的
應該沒問題
起一個新的
好
你就說
上面是jason sigma
jason sigma
jason的sigma
我希望轉換到下面的
Python的class
下面是一個案例
OK
案例
都是人工智能
案例
你按照這個案例
給我寫一個
寫一個滿足要求的
class
就說你不是jason嗎
然後但是你需要python的類碼
對吧
你把你的jason給他
然後你要把最終的要寫成的一個python的東西給他
然後他就能夠自動的幫你寫出來
好吧
就這麼簡單
event type以前他沒有幫我寫
所以說我覺得我可以在我的代碼裏面再加一個
再加一個interface
以前還沒有好吧
event type
然後後面我打印的時候我也可以用到
我可以把這個interface
然後我再print一下event type
OK
就說他在線的網站你可以把一個日子給他
然後他幫你產生這麼一個東西
OK
他自動幫你分析幫你產生
當然你還可以適當的改
你覺得哪些東西想加的話
還可以自動改
好吧
然後你就可以給一個真實的日子
讓他去分析
你看他就能幫你分析出來
好吧
這是一個在線測試的
然後這是他的一個官方文檔
他給了一些案例
首先你就需要寫這個class
這個class是怎麼來的
就是他幫我
openai幫我寫的
好吧
就寫出來了
所以說第一個事就是說要寫這個class
OK
就是這個class是怎麼來的
就openai幫我寫的
也不是我寫的
好吧
好
然後他說如果說你看這是一個class
他說好一個class
你分析一句話是沒問題的
好
當然了
如果說是多個條目
因爲我這個就是我這個
比如說我這是一個日子
那肯定是有多個條目的
那麼多個條目
他說你需要去做一個要起一個新的類
然後做一個list
好吧
那這也很簡單
那就是你看有interface
然後我們就來一個interface data
然後把剛纔的類做一個list就可以了
OK
同樣的辦法
我就不再重複了
我也做了一個跟OSPF有關的
好
然後同樣也做了一個OSPF data
也是一個list的OSPF
這個鄰居改變的這麼一個類
那麼他能夠幫你提取是哪個process
是哪個時間
然後哪個鄰居哪個接口
從什麼狀態到什麼狀態
都能夠幫你摳出來
OK
那麼其實他官方給我摳的
只是告訴我一句話
從什麼狀態到什麼狀態
但是我希望他能夠把to的狀態
和from的狀態給我摳出來
我給他舉了一個例子
比如說for比如說是knowing
OK
好
那麼做好了之後
緊接着
他全是抄的
沒有一個是我自己寫的
他然後有一個需要做一個提示詞
官方
一個案例
他需要一個提示詞
有提示詞嗎
還有一個案例
應該會給一個
提示詞
就這個東西
他的英文的
我就可以改成中文了
就是說你告訴他
你是一個專家級的信息提取算法
然後你要從文本里面提取
然後如果說你不知道的話
就把這麼多屬性
但有些可能你提取不出來
那麼提取不出來的話
你就給他做人鬧
OK
然後我給你一個消息給你
那麼你就幫我去提取出來
就是這個提示詞是通用的
這個不用管
好吧
只是我把他的英文的改成中文的
改不改也不重要
好吧
好
然後這個時候
他這兒要我用的是
Mistro
這個AI
好吧
那麼其實我當時知道
它是一個開源的
但是我發現開源的不行
開源的是叫OpenMistro-7b的
那個是不支持function call的
它需要做函數調用
但是開源是支持不了函數調用的
所以說你必須要用它的收回版本
所以說我們羣裏邊
我們學習羣裏邊有個哥們
他有他就現場就給我了
好吧
那麼放在這兒我不給你看
那麼我就可以引用它這個key
然後用它收回版本
這個版本才支持function call
一定要支持function call
普通的那些
那你用這個就用不了
他說你支持不了function call
你來不了
好吧
所以你需要Mistro的
API
OK
而且必須是這個Large
纔行
小的都不行
就一定要這個
否則沒有function call
好吧
OK
那麼好
這是OpenAI
這個Mistro這個API
也是需要有的
好
然後你就可以讀取我的這個日誌
讀取我這個日誌
好吧
他就把這些很多行都讀出來了
OK
好
然後就可以提示詞
然後通過這個LM
就要從這個數據
一會我們要傳數據進去
然後就要按照這個格式
就按照這個
interface data
裏面有一個list的
一個列表的上面的這麼一個類
OK
他就會自動幫你提取出來
OK
他要提取這個interface data
裏面就是一個list
一個列表的interface
他會
然後你把你的文本送進去
他就能把一個interface的狀態
給你提取出來
好吧
那麼當然了
這既有interface的
也有OSPF的
我們來測試一下效果
好吧
那這是我們的原始的日誌
上面這些應該是跟接口有關的
然後這個是跟OSPF有關的
但是你插一些其他的也沒有問題
你插點其他的進去
沒問題
就是當然了
那個比較費token
我就因爲這也要給錢的
好吧
所以說我就沒有把其他東西插進去了
不重要
那麼就這個文本
那麼我們交給同樣的文本
我們交給分析接口的
他就會把接口的東西給你提取出來
交給OSPF就會把OSPF的提取出來
我們來運行一下
試試看
這樣的話以後要分析一些日誌
就可以用這個解鎖
比如說你要去讓他讀一下
OSPF裏面的一些東西
然後把他關鍵的東西提取出來
OK
看一下
這是接口的
他就是這個
誒
時間沒有扣出來
時間又沒有給我扣出來
經常扣不出來時間
OSPF扣出來了
時間
哪個process
哪個接口
哪個label
from什麼
to什麼
同樣的
那個什麼時間
哪個process
哪個接口
哪個RupertID
from什麼
to什麼
OK
這個是好的
這個interface一陣一陣的
你經常給我扣不出來時間
都已經給點安利了
OK
未來呢
就是說如果說你有很多日誌要分析
那麼你可以比如說
你關心接口的東西
你會關心一些OSPF的東西
OK
這又扣不出來
這個莫名其妙
OSPF沒問題
StateChange
OSPF
你看OSPF都沒有提醒就能搞定
OSPF
鄰居修改
我還給他安利了
這個東西
但是是吧
一陣一陣的
這個能有事就是一陣一陣的
你看其他都沒問題
是吧
其他都沒問題
你要給他提醒清楚
還是接口還是時間提不出來
那麼多奇怪的
這樣我把它幹掉
以前是正常的
我現在就加了個這個玩意
打印就不要打了
你看OSPF這塊是沒問題的
接口老是有點問題
經常接口這塊
我不知道他是怎麼理解這個事的
你看都有時間出
是吧
這個就對了
好吧
但是加上他總是會出點問題
加上他總是
那不管吧
反正就是我把這個取消掉
沒問題了
OK
就是能夠幫你提取什麼時間
什麼接口
然後達到了一個什麼樣的狀態
OSPF也是
好吧
今天是一種探索
那麼我感覺效果
還行
好吧
主要是他的在線工具不錯
好吧
就是在一個在線工具
你可以把文本給他
然後他幫你自動分析這個文本
自動提取一些重點
當然了
你覺得他不好
可以稍微改一改
然後
這個東西是這種Jason格式的
但是他代碼又要一個這個類的格式的
這種體力活
而且說我自己寫也可以的
對吧
這種體力活
那你又交給這個GDP
然後GDP給他
這也是一個案例
就說你給了一個Jason
然後你說你還要做成這個東西
然後你給我幹
那他就幹出來了
好吧
然後再把這個東西貼到你的代碼
基本上就搞定
所以說代碼大部分也沒有幾個是我寫的
好吧
這個現在這個時代就這樣
沒有幾個東西是我寫的
好吧
OK
那這就是今天的我們的這個
