作者 |小戏、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