多智能體系統架構設計與代碼級落地實現 原創
多智能體系統(Muti-Agents)是能夠自己思考、計劃、找出相關信息來源并從中提取信息、采取行動,甚至在出錯時還能自我糾正的自動系統。
OpenAI 推出了Swarm 開源框架,用來以一種非常靈活的方式來管理和協調多智能體系統。
本文我們基于 OpenAI 推出的 Swarm 開源框架,來實現多智能體系統。內容包括:多智能體案例架構設計;多智能體案例代碼級實現。
下文我們詳細剖析之。
1、多智能體案例架構設計
今天,我們來做個實際的操作演示。我們要做一個網上研究助手多智能體應用,這個應用包括以下功能:
- 接收用戶的查詢請求。
- 在網上搜索相關信息。
- 然后把它變成一篇精心撰寫的文章。
我們會用到:
- OpenAI Swarm 來協調多個智能體。
- Streamlit 來做用戶界面。
網上研究助手多智能體應用架構設計如下:
如上圖所示,我們有三個智能體:
智能體1 → 接收用戶的查詢并在網頁上搜索。
智能體2 → 接收智能體1找到的網頁結果,然后進行優化。
智能體3 → 一個技術寫作智能體,它接收優化后的結果,起草一篇文章,然后發送回給用戶。
2、多智能體案例代碼實現
第一、準備工作
首先,我們從一些基礎的導入開始:
我們使用 OpenAI 的 Swarm 來構建我們的多智能體應用。
我們用 duckduckgo_search 來在網上搜索。
接下來,我們定義大模型名稱,并初始化 Swarm 客戶端和搜索客戶端:
第二、網絡搜索智能體1 架構設計和代碼實現
智能體1需要接收用戶的查詢,在網上搜索,然后返回原始的網頁結果。
為了實現這個功能,我們首先編寫一個函數,該函數接收查詢并返回原始結果。
第7行:在網上搜索。
第9-16行:將所有網頁結果(標題+網址+正文)收集到一個字符串中并返回。
接下來,我們定義一個網絡搜索智能體,它將使用上述函數,我們還在下面為這個智能體指定了指令:
第1行:我們指定角色。
第6-11行:我們定義了一個來自 OpenAI Swarm 的 Agent 類的對象,指定上述函數、指令和 LLM(大語言模型)。
第三、網絡過濾智能體2 架構設計和代碼實現
智能體1 返回的結果可能會相當混亂,并且可能包含很多不相關的信息。我們需要另一個智能體來篩選出合適的信息。
和智能體1一樣,我們再定義一個 Agent 類的另一個對象,并且傳遞指令:
第四、寫作智能體3 架構設計和代碼實現
最后,我們創建另一個智能體3,它接收上面篩選過的結果并起草一篇文章。
第五、多智能體架構和代碼實現整合
雖然我們已經定義了上述三個智能體,但多智能體應用并不知道這些智能體應該按什么順序運行,以及誰的輸出應該傳遞給下一個智能體。
因此,我們需要在一個工作流程中把它們串聯起來。
為了簡單起見,我們一步一步來做。
首先,我們將用戶查詢傳遞給網絡搜索智能體1,它生成原始響應:
接下來,我們將原始響應傳遞給網絡過濾智能體2:
最后,我們將篩選后的結果傳遞給寫作智能體3:
run_worwflow(query) 運行工作流程方法的完整代碼如下:
執行運行工作流程方法會生成預期的輸出,如下圖所示:
當然,我們本文沒有涉及 Streamlit 前端部分,完整的代碼已放在 Github 上。
第六、多智能體應用案例完整代碼獲取地址:
??https://github.com/patchy631/ai-engineering-hub/tree/main??
本文轉載自??玄姐聊AGI?? 作者:玄姐
