AutoGPT是如何工作的?
注意,本文最初发布于 Locusive。
请保留 HTML 结构,将以下英语文本翻译为简体中文: —
有关“自主代理”或可以在没有人类干预下完成复杂任务的应用程序的概念,近期引起了广泛关注。最近,在GitHub上推出了一种名为“AutoGPT”的非常流行的开源工具,它利用代理处理用户的请求来完成任务,并引起了许多人的惊叹。最近出现的大型语言模型(LLMs)使得大量这些代理能够以以前从未有过的方式运作。虽然这些应用程序有很多潜力,但它们背后的概念相当简单,一旦你弄清楚它们的工作原理,你(或你的工程团队)就可以使用标准的软件工程实践构建自己的AutoGPT。
更深入地了解代理商
你可能以前听过“代理”这个词。如果是这样的话,当涉及到AutoGPT时,你可能会感到困惑。在人工智能的世界中,“代理”这个词已经成为一个通用词,它指的是能够采取一个或多个行动来达成更大目标的任何软件应用程序。几年前,强化学习的进展使得新软件能够击败《星际争霸》和围棋的世界顶尖选手,这个术语变得非常流行。在那些情况下,研究人员构建了“代理”,它们能够玩各自的游戏,以最佳方式采取一系列行动,最终使软件能够击败现任世界冠军。
在LLM的世界里,“代理”是一种软件应用程序,可以采取一系列动作来完成某项任务。与强化学习的世界不同,LLM代理不是为了最大化特定目标(如赢得星际争霸比赛)而进行优化。相反,它们可以执行一项动作,比如调用API或搜索互联网,作为一系列任务的一部分,以完成某个用户指定的目标。
在本文中,我将与AutoGPT一样,或多或少地使用“代理”一词。在最高层次上,它们都指的是同样的事情,即能够完成更大任务的复杂应用程序。
那么既然我们知道了代理商(或AutoGPT)是什么,我们可以开始深入探究他们的工作方式。
AutoGPT应用程序的流程
如果你做过任何一段时间的软件开发,你就会知道,直到最近,创造软件是一个应用逻辑的应用。作为软件开发人员,我们必须创建一组严格规定的规则,一个正在运行的应用程序必须在任何给定情况下遵循这些规则。您还知道,当涉及到遵循这个逻辑时,应用程序是不可宽恕的。有时候,我们可能想让一款软件执行某一项任务,但如果我们错过了边缘情况,或者忘记考虑一个不寻常的情况,它就会出问题。
随着LLMs的出现,我们现在拥有了一个可以让我们更加灵活地实现目标的工具。与试图为特定用例指定严格的规则不同,我们现在可以利用LLMs来“理解”在特定时间点需要做什么,并告诉我们下一步该做什么。
一个类似这样应用的例子是一个虚拟助手App,它可以负责处理来自你的各种指令。例如,你可能想要一个应用程序,可以插入你的日历中为你安排会议,插入你的电子邮件服务以代表你发送电子邮件,并在你要求时连接到你的社交媒体账户以编写新的帖子。这样的应用程序需要能够处理各种各样的指令。
在LLMs出现之前,要创建一个像这样的应用程序,您必须使用一些先进的关键字匹配代码来尝试让应用程序了解它需要完成的任务,您还需要在应用程序中具备大量的状态管理和错误处理来处理边缘案例。然而,随着LLMs的出现,现在可以将大量的繁重工作“外包”给语言模型,作为编排层来执行。
LLMs作为协调者
当您创建一个AutoGPT风格的应用程序时,您可以利用LLM作为智能决策者,告诉您下一步该采取什么行动。例如,让我们以上面的虚拟助手示例为例,分解一下您的应用程序将如何使用LLM执行它需要执行的一系列任务。
首先,你需要拥有代理支持的预定义工具集(这些工具可以是任何你需要的东西 - 计算器,API 端点,搜索引擎等等)。你的应用程序需要提供调用这些工具和保存它们输出以供以后使用的支持。
接下来,您需要提供一种方式让应用程序的用户以聊天格式提供输入。
一旦用户提供查询或命令,您的第一步是向LLM发送一条消息,附带用户的请求列表以及您的应用程序支持的工具,并要求LLM确定下一步要运行哪个工具。您向LLM发出的提示应该清晰明确,并提供指示以便您的应用程序可以最好地理解其响应,但这很容易做到。
一旦LLM根据用户查询提供其下一步运行哪个工具的决策,您的应用程序将需要确定要向该工具提供哪些输入。如果有合适的提示,您也可以使用LLM来完成此操作。一旦LLM执行此操作,您的应用程序就会使用给定的输入调用所选的工具,捕获输出,然后将它们呈现回LLM,并询问它是否有足够的信息来适当地响应用户的请求。如果有,那么您要求它提供最终答案,并将该答案返回给用户。如果没有,则重复以上相同的迭代过程,直到可以满足用户的请求。
使用这种策略,您可以通过利用LLM来指导您的应用程序下一步该做什么,逐步地朝着响应用户请求的方向取得进展。这样,LLMs就成为了您的应用程序的编排层,对需要采取的每一步流程做出智能决策,决定应用程序的行为方式。
新能力
这种程度的自主决策以前从未真正的实现过。直到最近,机器还无法使用非结构化自然语言命令进行推理和智能决策。因此,我们不得不依赖于需要点和单击用户界面的工具,或者提供一小组明确定义的结构化命令的命令行界面,以支持应用程序。这种新的能力开创了许多由自主智能决策创建的机会的世界。
软件开发人员已经利用这种新能力创造出一个有趣、强大、自治的应用程序世界。我们开始看到新的虚拟助手出现,它们具有令人难以置信的复杂性和强大的能力,可以完成各种各样的任务。
在Locusive,我们正在建立一个单一综合代理,供企业使用其数据。我们想象一个世界,在这个世界中,企业可以插入任何数据源、软件应用程序或第三方工具,与一个可以访问它们所有的单一代理进行交互。企业将能够使用此代理快速查找任何数据源的信息,或向潜在客户发送智能和个性化的电子邮件,或使用单个聊天界面创建新报告,使用KPIs。
代理将很快接管软件世界,让我们能够更高效、更有效地利用时间。