企業級智能體開發中所遇到的問題以及解決方案 原創
“ 總之,智能體開發的理論很簡單;但其真正的難點卻在具體的落地實現?!?/strong>
智能體開發是目前大模型應用的主流方向之一,但由于大模型的不穩定性導致智能體開發困難重重,特別是構建能夠穩定運行的智能體,更是難上加難。
今天我們就從智能體開發過程中遇到的問題出發,嘗試找到企業級的智能體架構方案。
企業級智能體架構
事實上智能體的概念很簡單——就是LLM(大模型) + Prompt(提示詞) + Tools(工具);但在實際操作中,智能體開發卻有兩種模式,單智能體模式和多智能體模式。
單智能體模式就是一個LLM + Tools多個工具集;而多智能體模式就是由多個單智能體組成一個大的智能體。
這兩種模式看起來好像差別不是很大,但事實上有很多注意點;對很多剛開始接觸智能體開發的人來說,或許認為單智能體開發比較簡單,而多智能開發的主要難點在于不同智能體之間的通訊和數據交互問題。
但實際上不論是單智能體開發還是多智能體開發,其復雜程度都遠超我們的想象;畢竟實踐難度要遠遠高于理論難度,理論誰都會說,但實際操作卻不是誰人都會。
單智能體開發
可能很多人認為的單智能體開發很簡單,不就是定義一個工具集,然后綁定到大模型上即可;然后讓大模型根據業務需求自己去判斷應該調用哪個工具,然后完成任務即可。
但實際上單智能體開發也有很多需要注意的點。
首先,平常學習智能體開發和企業級應用中的智能體開發不是一個概念;以單智能體開發來說,學習過程中可能只需要集成一兩個,兩三個工具即可;但在企業級應用中,可能需要給智能體配備十個,甚至二十個,三十個,甚至更多的工具。
但在實際操作中,隨著工具的增多,大模型對工具準確性的判斷就會降低,很多時候可能會產生幻覺問題——調用錯誤的工具;所以,這是一個注意點。

其次,在一些簡單的任務中,智能體可能只需要調用一兩個,或者很少的工具即可完成任務;但在一些復雜的任務場景中,智能體的工具調用鏈路可能會很長;而隨著工具調用鏈路的增加,其提示詞的長度也會不斷增加,甚至可能會超過模型窗口的限制。
再有,由于工具的種類不同,不同的工具響應的數據格式,形式都會不同;而不同的數據格式或形式會導致響應處理困難;比如說有些工具返回的是json格式,有些是xml格式,或者返回一些圖片,路徑,二進制流等;這些格式的數據是大模型無法處理的。
所以,這時就需要大模型能夠自主判斷,不同格式的數據怎么處理,如果遇到處理不了的數據應該怎么辦。
還有就是,工具調用可能會成功,也可能會失?。蝗绻苯邮》祷劐e誤信息這種還好說,但如果是那種工具正常響應,但響應的內容和用戶需求完全不相干,甚至是錯誤的;這種情況應該怎么處理?

這種情況別說是大模型,甚至人類自己都無法判斷工具響應的準確性。
所以,遇到以上問題,只能通過在提示詞中約束大模型的行為,讓大模型能夠進行自主決斷,最好的方式就是增加嚴格的容錯處理,讓大模型能夠根據自己的判斷選擇是否重試;當然,也可以在智能體運行的過程中,加入一些人為的規則驗證,但這種方式會降低智能體的靈活性,所以這一點在開發過程中需要多注意。
還有一個是關于工具調用的順序問題,因為目前有部分模型開始支持并行工具調用;也就是說給模型配置多個工具,可能會根據需求同時調用多個工具;這種情況能夠提升智能體的響應速度。但其缺點也很明顯,那就是如果在一些需要順序執行工具的過程中,使用并行調用,那就只能GG思密達了。
當然,以上這些情況還只是作者在開發中遇到的,可能還有很多沒有遇到的問題。
單智能體開發所面臨的一些問題,其實可以通過多智能體的方式來解決;根據軟件開發的單一職責原則,可以給一個智能體只配置一個或兩三個很少的工具,讓一個智能體只干一件事,其它的事由別的智能體去做,這樣就可以盡量避免以上的幾個問題。
同時,這種方式也帶來了一些問題,也就是多智能體開發中的問題。

多智能體開發
上面說了單智能體存在的問題,下面再來說說多智能體;首先,多智能體是由單智能體構成的,因此單智能體中所遇到的問題,很多在多智能體中也存在,甚至會更加復雜。
多智能體開發中首要的一個問題就是,不同智能體之間的調度和通訊問題;由于不同的智能體處理的數據不一樣,就導致格式也不一樣;因此,我們需要有一種通用的格式來處理多智能體之間的通訊問題,比如說JSON格式;雖然說我們無法決定智能體響應的數據內容,但我們可以使用一種相對通用的數據格式來約束智能體之間的通訊問題。

而另一個關于多智能體的調度問題,多智能體與單智能體有一個很大的不同點就是:
單智能體中的模型即需要對任務進行拆分,規劃和決策;同時還需要負責工具的調用和任務的具體執行;這種方式除了可能會導致提示詞超長之外,還會嚴重增加大模型的負擔,導致大模型邏輯混亂。
而在多智能體中,為了解決這個問題就需要有一個主智能體負責任務拆分,規劃,決策;這個主智能體不負責任務的具體執行和工具的調用,它就像一個企業的老板,只負責任務調度,以及負責不同智能體之間的協作問題;而具體的任務執行和工具調用,則完全交由子智能體去執行。

使用這種方式即可以避免主智能體提示詞超長的問題,也能防止主智能體出現“腦裂”等現象,提升多智能體系統的穩定性。
總之,智能體開發的理論很簡單;但其真正的難點卻在具體的落地實現。
本文轉載自????AI探索時代???? 作者:DFires

















