功能超全的AI Agents開源庫來了,能寫小說,還能當導購、銷售
近一年來,隨著大模型突飛猛進的發展,基于大模型的推理泛化能力的語言智能體 (Language Agents) 展示了通向 AGI 的巨大潛力。科研和開發者社區也涌現出各種語言智能體的框架和系統,如 AutoGPT [1], LangChain [2], SuperAGI [3] 等。這些系統能夠接受人類提供的簡單的指令之后自主規劃和執行任務。盡管看起來很炫酷,這些框架和系統的都存在一個非常致命的通?。褐悄荏w的運行一旦開始,就幾乎脫離了人類的控制,對任務規劃和執行一旦出錯,就會通過誤差傳播引起明顯的滾雪球效應,因此任務失敗概率很高。除了失敗率高以外,更致命的是用戶或開發者遇到這種情況,對于如何調優很容易完全沒有頭緒,只能盲目更改任務描述,依靠玄學希望得到更好的效果。
圖 1 Agents 框架示意圖
為了解決這個痛點,讓 LLM Agent 更可控,調優 LLM Agent 的過程更簡單更系統化,波形智能聯合蘇黎世聯邦理工大學和浙江大學,開發了名為 Agents 的開源智能體框架。
- 論文鏈接:https://arxiv.org/pdf/2309.07870.pdf
- 代碼 / Demo 鏈接:https://github.com/aiwaves-cn/agents
- 官方網站:http://www.aiwaves-agents.com/
Agents 框架探索了通過結合基于推理圖的符號主義 (symbolism) 推理和基于 LLM 的連接主義 (connectionism) 推理,來結合高層次的世界模型知識和低層次的簡單推理泛化能力,從而實現更智能更可控的通用人工智能 (AGI) 方案。
具體來說,該框架創新性地提供了通過符號式的推理圖,即 “SOP”,來對任務進行分解,首次實現了對 LLM Agent 的細粒度控制。框架同時支持長短期記憶,工具使用,網絡搜索,以及多智能體系統的構建,用戶只需要用自然語言填寫配置文檔,就能輕松定義各種功能和使用場景的 AI 智能體 / 多智能體系統,比如導購機器人,客服機器人,以及包含各種角色的小說工作室。
在支持零代碼定制 / 微調多智能體系統的同時,Agents 框架也對開發者和研究者擴展新的功能和定制復雜的多智能體環境 / 場景提供了很好的支持,為基于語言的智能體 (Language Agents) 研究提供便利。Agents 框架的主要功能和亮點如下:
- 長短期記憶:基于 RecurrentGPT [4] 的方案讓自主智能體能夠維持長短期記憶,從而更好地和人類 / 環境 / 其他智能體交互。長期記憶將智能體自己的以及觀察到的對話 / 行為歷史儲存在向量數據庫 (VectorDB) 中并根據當前的觀察 (observation),通過語義搜索 (semantic search) 來選擇性的激活儲存的記憶。短期記憶則是以文字形式,通過 LLM+prompt 進行更新,負責智能體的 working memory。
- 工具使用 / 網絡搜索:該框架通過將各種工具 / API 封裝在 "ToolComponent" 類中,統一定義接口,讓智能體能夠通過 OpenAI GPT 的 function-calling 來智能地使用各種工具。網絡搜索功能也被封裝成了 API,模型可以根據需求,通過 function-calling 自動生成搜索 query,獲取搜索結果來輔助行動。
- 多智能體系統: Agents 框架中同時支持單智能體和多智能體系統。其中多智能體系統區別于現有框架的一點是,不同于其他系統一般利用事先規定好的規則來決定智能體行動的先后順序,Agents 庫當中支持了基于 LLM 的控制器,可以根據當前狀態的目標,智能體的行為,和當前環境,來決定是否進入下一個狀態,以及確定下一個行動的智能體應該是誰。
- 人 - 智能體交互: Agents 框架除了支持多智能體之間的相互交互,也支持了能夠讓人類使用者扮演多智能體系統中的一個或多個智能體的功能,可以方便地支持各種人 - 智能體交互的應用場景,如人和智能體一起玩游戲、辯論等。
- 符號化細粒度控制:作為 Agents 框架的核心亮點,框架中的 SOP 系統支持了通過符號化的推理圖來對智能體 / 多智能體系統提供更細粒度的控制。一個任務 / 場景的 SOP 是一個圖結構,圖中的每個節點被稱作 "狀態",每個狀態定義了該任務場景的一個子任務或者中間過程。用戶可以在 Agent 系統的設置模版 (config template) 中定義每個智能體在每個狀態中的任務描述,策略,規則,和 in-context learning 的樣例等。狀態和狀態之間的切換通過一個基于 LLM 的控制器來決定?;?SOP 的細粒度的控制讓智能體系統更能夠嚴格按照人類確認過的流程運行,從而更加穩定,可控,進而達到可以作為商業化的客服 / 銷售 / 導購等智能體的目標。另外因為智能體系統的控制嚴格按照 SOP 的流程,所以任何一步發生問題,用戶都可以方便的定位到問題所在,并且有針對性地對 SOP 進行修改,提升系統的表現,既提高了 Agent 系統的可解釋性,又方便了系統的編輯和調優。
圖 2 Agents 框架和其他常見開源智能體系統框架的功能對比
Agents 框架介紹
Agents 框架包含三個主要類:Agent、SOP 和 Environment,具體如下:
- Agent 類包含了 Agent 的各種功能,包括長短期記憶,觀察環境,使用工具,調用 LLM 進行推理和生成回復等。
- SOP 類是由狀態和狀態之間的連接定一個一個符號式的計劃(Plan)。SOP 的每個狀態節點由 State 類定義,State 類中涵蓋了 Agent 在這個狀態內特有模塊化的 Prompt 和可以使用的各種工具 / API 等,由用戶在配置文件中定義。每次行動時,Agent 會將這些模塊化 prompt 和工具 / API 的輸出組裝成完整的 prompt,然后調用 LLM 決定如何行動。SOP 中還包括了一個控制器函數,利用大模型的推理能力來動態決定狀態的轉移和下一個行動的 Agent 是哪個。
- Environment (環境類) 是智能體之間交互的媒介,儲存了智能體之間的對話歷史和環境本身的狀態 / 變化等。
智能體系統的初始化代碼如下:所有類均可由一個用戶定制好的 config 文件加載。
加載之后多智能系統的運行邏輯如下:SOP 的控制器決定了下一個狀態和行動的智能體是哪個,之后智能體結合環境和狀態執行行動,最后環境根據智能體的行為進行自我更新。Agents 框架同時支持讓智能體系統動態 Planning,生成新的后續狀態和節點,只需要定義從 action 抽取新狀態節點設置的函數并將對應的設置動態添加到當前的 SOP 中即可。
利用 Agents 框架定制多智能體系統的流程
Step 1:配置多智能體系統參數 (框架提供了相應的 WebUI)
Step 2: 得到 JSON 配置文件
Step 3:啟動多智能體系統
基于 Agents 框架搭建的 “影視工作室” 系統
接下來,作者展示了一個利用 Agents 框架開發的多智能體影視工作室的 Demo。小說工作室中包括了作家,編輯,導演,和演員等角色。SOP 中規定了首先作家和編輯要根據特定的劇情設定來構思人設和劇本大綱,之后作家根據大綱寫出劇本,再由導演根據劇本指導多個演員一起進行每一段情節的表演:
其他的多智能體框架在接受了這樣一個復雜流程的指示之后,很容易會在執行任務的過程中逐漸偏離原始的任務規劃和指示。這是因為在每一次執行的時候,各個智能體都只能根據總體的相對籠統的任務介紹來推測系統現在走到了哪一步以及接下來要做什么,而基于 Agents 框架的智能體系統則為每個智能體提供了當前狀態特有的指令,規則,和示例,并且有了解全局任務和當前 / 下一個狀態各自的目標的控制器來決定狀態的轉變,因此能夠更準確、穩定地沿著預先設定的流程完成整個劇本設計,創作到表演的復雜任務流。
Agents 框架除了支持在終端和 Gradio 體驗多智能體系統之外,還為開發者提供了利用 FastAPI 在后端部署自主智能體系統的示例代碼,可以讓開發者便捷的將調教好的智能體部署到應用程序中。另外 Agents 開發團隊還提供了 community AgentHub,可供方便地供用戶搜索他人共享的智能體系統從而更便捷地打造自己的智能體系統,也可以將自己調試好的智能體系統方便地共享給社區其他用戶。