当然,下一代 AutoGPT 仍是开源的。
还记得去年 AI 大牛 Andrej Karpathy 大力宣传的「AutoGPT」项目吗?它是一个由 GPT-4 驱动的实验性开源应用程序,可以自主实现用户设定的任何目标,展现出了自主 AI 的发展趋势。
一年多的时间,该项目的 GitHub 星标总数已经超过了 16 万,足可见其持续受欢迎的程度。
GitHub 地址:https://github.com/Significant-Gravitas/AutoGPT
昨日,项目作者在社媒 X 上宣布了下一代「AutoGPT」的到来,目前是 Pre-alpha 版本。与前代相比,下一代「AutoGPT」让构建、运行和共享 AI 智能体变得比以往任何时候都更容易,同时可靠性也大大提升。
图源:https://x.com/SigGravitas/status/1812803289739633018
作者展示了如何使用下一代「AutoGPT」快速构建、部署并使用 Reddit 营销智能体,可以自动回复评论,执行其他复杂任务。新系统不再像初版「AutoGPT」那样不可靠和低效。
当被问到该项目是否可以构建多智能体驱动的应用程序时, 作者给出了肯定回答并表示这是构建该项目的重要原因。
现在,你可以设计一个图表,让多个专家智能体协同解决问题。SubGraphs 也即将发布,可以帮助简化复杂图表的处理。
该项目还可以自定义添加节点,并且手动编写新块(下文提到的关键特性)非常简单。作者发现,这方面 Claude 做得非常出色,可以完美地创建自定义块。
当然,该项目的两个主要组件(即下文提到的 Server 和 Builder)可以在不同的机器上运行。
不过,对于下一代「AutoGPT」,作者承认它仍处于非常早期的阶段,存在缺陷且比较基础,但还是希望从一开始就与大家分享并开源出来。
主要组件和关键特性
该项目具有以下两个主要组件,分别是后端的 AutoGPT Server 和前端的 AutoGPT Builder。其中 Server 负责创建复合多智能体系统,将 AutoGPT 智能体和其他非智能体组件用作其原语(primitive)。
AutoGPT Server (Backend):
https://github.com/Significant-Gravitas/AutoGPT/tree/master/rnd/autogpt_server
AutoGPT Builder (Frontend):
https://github.com/Significant-Gravitas/AutoGPT/tree/master/rnd/autogpt_builder
设置和运行 Server 和 Builder 的具体步骤如下:
导航到 AutoGPT GitHub 存储库;
单击「代码」(Code)按钮,然后选择「下载 ZIP」;
下载后,将 ZIP 文件解压到你选择的文件夹中;
打开解压的文件夹并导航到「rnd」目录;
进入「AutoGPT Server」文件夹;
在「rnd」目录中打开一个终端窗口;
找到并打开 AutoGPT Server 文件夹中的 README 文件;
将 README 中的每个命令复制并粘贴到你的终端中(重要提示:等待每个命令完成后再运行下一个命令);
如果所有命令运行均无错误,请输入最后一个命令「poetry run app」;
在终端中看到服务器正在运行;
导航回「rnd」文件夹;
打开「AutoGPT builder」文件夹;
打开此文件夹中的 README 文件;
在终端中运行以下命令:
npm install
npm run dev Once the front-end is running, click the link to navigate to localhost:3000.
前端运行后,单击链接导航到「localhost:3000」;
单击「构建」(Build)选项;
添加几个块来测试功能;
将块连接在一起;
单击「运行」;
检查你的终端窗口。此时应该看到服务器已收到请求、正在处理请求并已执行请求。
按照以上步骤,你就可以成功地设置并测试 AutoGPT。
视频来源:https://github.com/Significant-Gravitas/AutoGPT/tree/master/rnd/
除了两个主要组件外,下一代「AutoGPT」的关键特性是使用「块」(Blocks)来构建智能体。你可以将一些高度模块化的功能结合起来,创建自定义行为。
目前,项目已经为 Reddit 发帖、Discord 消息发送和维基百科摘要获取等操作提供了相应的块。同时在设计时追求易创建和使用。以下是维基百科摘要获取的块示例:
class GetWikipediaSummary(Block): class Input(BlockSchema): topic: str class Output(BlockSchema): summary: str def **init**(self): super().__init__( id="h5e7f8g9-1b2c-3d4e-5f6g-7h8i9j0k1l2m", input_schema=GetWikipediaSummary.Input, output_schema=GetWikipediaSummary.Output, test_input={"topic": "Artificial Intelligence"}, test_output={"summary": "Artificial intelligence (AI) is intelligence demonstrated by machines..."}, ) def run(self, input_data: Input) -> BlockOutput: response = requests.get(f"https://en.wikipedia.org/api/rest_v1/page/summary/{input_data.topic}") summary_data = response.json() yield "summary", summary_data['extract']
作者表示,这仅仅是个开始,未来还将添加更多块,并改进 UI,大幅提升整体体验和功能。