作者 |小戲、ZenMoore
一個新的未來又逐漸開始從理論走向現實走到我們身邊了。
語言的意義在于使用,而從 ChatGPT 以來這些大規模語言模型的意義,也必然絕不止于 Chat,在四個月前,我們介紹了清華大學關于工具學習的綜述《清華發布工具學習框架,讓ChatGPT操控地圖、股票查詢,賈維斯已來?》,探究如何把以 GPT-4 為代表的大模型更好的與現有的專業工具(如專業設備、程序接口、商業軟件等等)相互結合,將大模型變為一個賈維斯式的私人管家而非單純的聊天機器。
而在四個月前 Demo 式的暢想后,最近香港大學余濤老師組(XLANG Lab)在五個月 15 名研究人員全職投入開發后,推出了一個開源的大模型 Agent——XLANG Agent!
大模型研究測試傳送門
GPT-4傳送門(免墻,可直接測試,遇瀏覽器警告點高級/繼續訪問即可):
Hello, GPT4!
在介紹的博客中,XLANG Agent 的作者將大模型 Agent 可以完成的工作理解為這樣一個過程“想象一下這個過程,將以日常語言為載體的人類的指示或問題轉化為機器可以理解的動作和代碼,隨后機器在特定的環境中執行這些動作,從而改變該環境的狀態。這些變化被觀察、分析,并進而啟動與人類下一步交互的循環”
事實上,這種大模型 Agent 的理念正是科幻作品中那些遵循人類指令執行特定任務的智能體的初級版本。而 XLANG 則充當著自然語言與特定指令(如可執行的代碼或特定動作序列)之間的橋梁,其所互動的環境包括卻不限于數據庫、Web 應用乃至現實的物理世界。在與環境及人類本身相互不斷的一輪輪互動之中,大模型 Agent 可以不斷集成人們的反饋到其上下文中,以協作 Agnet 精準有效的完成任務并且延申與拓展用戶的真實意圖。
具體而言,作者團隊將大模型 Agent 總結為:
-
大模型 Agent 的目標在于在具體環境中解決人類面對的問題,如數據分析、房地產服務等,而非一般的聊天機器人;
-
大模型 Agent 允許用戶以自然語言提供反饋,以指導 Agent 更好的探索并完成任務,換言之,大模型 Agent 可以處理多輪的任務而非單輪的簡單輸入輸出;
-
大模型 Agent 配備了代碼、插件以及瀏覽器等工具增強其能力,而并不僅僅限于大模型本身。
整個 XLANG Agent 的構建基于 LangChain,LangChain 是一種用于構建由大模型驅動應用程序的框架。基于 LangChain 中的 ReAct,作者團隊構建 XLANG Agent 通過三個階段完成任務:
-
思考階段:生成推理軌跡,為下一步行動提供支持;
-
行動階段:參與同環境的相互作用;
-
觀察階段:觀察環境狀態,為下一步決策做好準備。
在 LangChain 的基礎上,XLANG Agent 配備了一套全面的工具、搭建了完整的用戶界面,重構了信息表示以及 Prompting。區別于 OpenAI 發布的代碼解釋器及插件,XLANG Agent 的目標在于構建一個開源通用的大模型 Agent 系統及框架,使得人們可以迭代的添加與改進 Agent 的設計與工作邏輯,集成更多工具,推動大模型 Agent 乃至更宏觀的 Executable Language Grounding 的發展。
目前,XLANG Agent 支持三種不同的 Agent 場景,分別是數據處理、插件使用以及 Web Agent(Robot Agent 即將推出),其中,數據 Agent 可以讓用戶在選擇特定工具后,主動采取行動滿足用戶需求,譬如讓 Agent 首先為自己尋找股票的數據集:
通過點擊式的操作,可以將 Agent 找到的數據集加載到界面的 Files 中:
并且通過簡單的指令就可以讓 Agent 為自己繪制出可交互的圖表
并且可以讓 Agent 使用類似 ARIMA 這樣的模型對數據進行擬合,可以看到 Agent 有可能會擬合失敗:
但是“Try it again”,就可以讓 Agent 再次嘗試并成功搭建好模型
類似的,插件 Agent 可以利用提供的上百個 API 智能的確定當前環境下應該使用的插件,譬如當我前往多倫多時,插件 Agent 會智能的推薦景點、處理貨幣的換算、提供天氣更新、服裝建議等等:
Web Agent 則會利用 Chrome 擴展程序自動化網站導航,簡化瀏覽并增強信息檢索能力,譬如從 IMDb 提取電影評論等等
目前這三個代理都已經上線,作為 XLANG 開源之旅的開始,作者團隊表示在未來幾個月以及更久的時間里,將會有包括所有框架、模型、演示、代碼以及 Benchmark 被發布,XLANG Agent 的主頁、代碼及文檔如下:
博客題目:
Introducing XLang: An Open-Source Framework for Building Language Model Agents via Executable Language Grounding