微軟有最全的安全產品,以云上為主,也就有了最好的數據。他們用了OpenAI的模型,最好的,團隊,也基本沒有哪個公司可比。
所以微軟做了Security Copilot非常炫酷,上一篇已經介紹過了,可以參考
那么,微軟是如何使用大模型的?本文作一分析。
本文共分四部分
一、大模型基本能力
二、大模型的缺陷
三、微軟的應用架構
四、總結
01 大模型的基本能力
我們最常使用大模型的方法,是對話。另外,還有一種方法,是API調用,用于基于大模型的軟件開發。
無論是對話,還是API調用,大模型的運作是一樣的,就是根據一個請求,作出相關的響應,就這一個主要功能。其實這也是大模型的基本能力。
在API調用上,對這個功能再細化,有兩個能力需要重點強調:
Function Calling(函數調用)是大模型與外部系統或API交互的能力。簡單地理解,你有一些函數,用于處理問題。以前的做法,是在代碼里寫死,流程走到哪,調用哪個函數,使用什么參數。
用大模型不一樣了,你可以把函數描述和要求給到大模型作為請求,大模型會根據你的要求,找到合適的函數,并填上適當的參數給你。
函數可以是多個,大模型會根據對話內容,自動選擇合適的函數及參數。
2.Sql生成
Sql生成和函數調用類似。以前需要自己寫Sql,現在不用了,你把數據庫的描述和查詢需求給它,述數據庫結構和查詢需求同時給到大模型,它可以生成一個Sql語句,這個功能實際有很多用法,不過深討論。
02 大模型的缺陷
大模型的函數調用能力,用于對外部工具的調用,是個非常有價值的工具。畢竟,相對原來根據需求,一行一行寫代碼調用,現在只要說一句話,它就能調用哪個工具,并準確輸入參數,這對軟件是個巨大的進步。
但它有個致命的缺陷:大模型并沒有臨時記憶,就是每次請求,都需要完整地輸入所有的函數描述。你沒看錯,是每一次。你跟大模型聊天,看上去大模型記住了你前邊說過的話,實際上,是瀏覽器每一次都把前邊所有的對話也發給了大模型,每一次調用,都要帶上所有歷史記錄,而大模型本身并沒有會話的概念,它什么都記不住。
這是個令人崩潰的事情,一來每次調用都是巨大的tokens消耗,費用巨大,性能非常差。二是針對大的系統,函數的描述是海量的,而大模型的輸入又有長度限制,很可能prompt放不下。
針對這個問題,openai最初給的方案是微調。微調就是給出一系列指令,比如說A需求,調用FA函數,B需求,調用FB函數。這個方案顯然降低了大模型的智能,比傳統寫代碼確實強點,但大模型的智能顯然是沒用好。
最近,OpenAI和Claude又有了一個相對優化的解決方案,是Prompt caching.
Prompt caching是一種優化大型語言模型(LLMs)性能和效率的技術。這個概念相對較新,主要應用于需要頻繁使用LLMs的場景。以下是對prompt caching的詳細介紹:
概念定義:Prompt caching是指將常用的prompt及其對應的模型輸出存儲起來,以便在后續相同或相似的查詢中快速檢索和重用。
這個方案,減少了延遲,降低了成本,但仍然不算最終的理想方案。
這個問題,繞不過。看看微軟是怎么解決的。
03 微軟的應用架構
圖一
上圖是微軟的應用架構,重點看copilot周邊的六條數據流,黃色數字標識的部分。
這里邊,比較關鍵的點有兩個,一個是插件(plugin),一個是Copilot的插件選擇(路由能力)
1.插件(plugin)的原理
它通過標準接口與copilot對接,可與外部數據進行交互。按,每個安全產品對應一個插件,可以獲取相關數據。
2.路由
如何根據用戶的請求(自然語言)找到合適的插件?微軟沒有明確說明。但這個功能,如果用大語言模型實現是非常容易的。兩個方法都可以,一是在進行步驟3之前先調用一下大模型(這與圖示不符),還有一個辦法是在Copilot里再放一個小一點的模型。微軟用了openai的模型,但也反復強調自身的模型訓練,我認為后一種可能性更大。這個方法一般稱為意圖識別。當然,看花容易養花難,理論上好實現,和實際上實現好,還是有很大的差距。
CrowdStrike的Charlotte AI也非常強調路由能力,說的也是這個意思。
04 總結
大模型在近兩年的發展中,表現出無比巨大的能力,但僅有大模型是不夠的,結合大模型,做必要的外圍開發,形成Agent,具備理解用戶,挖掘分析數據,外部環境感知和工具調用能力,才是應用的完整方案。客戶需要的不僅僅是通識問答,而是結合客戶自身情況的完整答案,這個關鍵在于數據獲取能力。
微軟的Security Copilot就是個非常完整的Agent方案。
如果再具體一點,它就是個RAG(檢索增強生成)方案。目前的方案已經表現的很好,相信隨著大模型技術的發展,agent能力更多的由大模型承載,未來會有更強的能力。