category
今天有相当多的LLM代理可用。一些最突出的是AutoGPT、AutoGen、BabyAGI和OpenAgents。本文旨在提供这些模型的并排比较,以及我们应该和不应该在哪些用例中使用它们。
AutoGen
AutoGen是一个框架,可以使用多个代理来开发LLM应用程序,这些代理可以相互对话以解决任务。AutoGen代理是可定制的、可交谈的,并无缝地允许人类参与。它们可以在各种模式下运行,这些模式采用LLM、人工输入和工具的组合。通过能够创建可定制和可交谈的代理,AutoGen允许人类在这些多代理对话中无缝参与。
Autogen工作流
在现实世界的场景中,该框架可以通过协调多个人工智能代理和人类之间的合作交互来实现复杂任务的自动化。例如,在软件开发环境中,AutoGen可以通过与人类开发人员一起自主协调各种人工智能代理的工作来促进协作解决问题,从而提高生产力并加快解决开发挑战。
AutoGen GroupChat工作流
最后,通过集成外部工具(可以类似于OpenAI功能来实现),AutoGen的功能可以得到极大扩展。
AutoGen作为旅行助手 https://vimeo.com/879672723
AutoGPT
AutoGPT是一个实验性开源应用程序,展示了GPT-4语言模型的功能。该程序由GPT-4驱动,将LLM“思想”链接在一起,以自主实现您设定的任何目标。作为GPT-4完全自主运行的首批例子之一,AutoGPT突破了人工智能的极限。
当给定要执行的任务时,AutoGPT会为自己设置目标和约束。它查询LLM(默认为OpenAI)以实现其目标。对于LLM无法获得的知识,它有能力浏览互联网以收集完成其目标所需的数据。
AutoGPT工作流
最后,AutoGPT支持插件,使其能够执行许多复杂的任务,如发送电子邮件、在Twitter或Instagram上发帖等。
AutoGPT作为个人电子邮件响应服务 https://vimeo.com/879672682
BabyAGI
BabyAGI是人工智能任务管理系统的一个例子。该系统使用OpenAI和矢量数据库(如Chroma或Weaviate)来创建、排序和执行任务。该系统背后的主要思想是,它根据先前任务的结果和预定义的目标创建任务。然后,该脚本使用OpenAI的自然语言处理(NLP)功能基于目标创建新任务,并使用Chroma/Vaviate存储和检索上下文的任务结果。
信用:https://github.com/yoheinakajima/babyagi
从根本上讲,BabyAGI与其说是LLM代理,不如说是一个智能待办事项列表。尽管它有一种名为“技能”的东西,可以实现为它提供代理功能,但它的使用远不如AutoGen功能直观。最近,它与Langchain代理集成,使其能够使用Langchain工具。
https://vimeo.com/880856942
OpenAgents
大多数语言代理框架旨在促进概念验证语言代理的构建,而忽略了非专家用户对代理的访问,并且很少关注应用程序级设计。OpenAgents是作为一个开放平台构建的,用于在日常生活中使用和托管语言代理。
OpenAgents使普通用户能够通过针对快速响应和常见故障进行优化的web UI与代理功能进行交互,同时为开发人员和研究人员提供本地设置的无缝部署体验,为打造创新的语言代理和促进真实世界的评估奠定基础。我们阐明了挑战和有希望的机会,希望为未来研究和开发真实世界的语言代理奠定基础。
OpenAgents包括三个独立的代理:
- 数据代理。使用Python/SQL和数据工具进行数据分析的数据代理。
信用:https://github.com/xlang-ai/OpenAgents
- 插件代理,提供200多种日常工具。
信用:https://github.com/xlang-ai/OpenAgents
- 用于自主Web浏览的Web代理。
信用:https://github.com/xlang-ai/OpenAgents
OpenAgents还提供了按照以下说明添加所需代理的功能。
安装
我们需要比较和对比LLM代理的第一件事是它们的安装过程。
AutoGen
对于AutoGen来说,这个过程远没有AutoGPT复杂,尤其是如果你需要AutoGPT中的插件支持,因为它还没有集成在主分支中,只在高于0.4.1的版本中。
因此,完全安装AutoGPT和AutoGPT插件是一个相当复杂的过程,而AutoGen只需要安装一个pip包。
这是因为即使遵循文档中提供的所有说明,也不能保证安装AutoGPT插件所需的所有依赖项。
BabyAGI
另一方面,BabyAGI非常容易安装,因为在其根源上,它只是一个使用OpenAI创建任务并确定任务优先级的Python脚本。它的基本模型只有网络抓取和待办事项列表创建功能作为添加的Skills。
OpenAgent虽然目前仅在Linux和Mac上受支持,但在依赖关系方面存在一些问题,也可以安装在Windows上。它有关于如何安装它的优秀文档,与AutoGPT不同,遵循这些说明可以让我们无缝地运行OpenAgent。
OpenAI使用
虽然AutoGen和AutoGPT都需要OpenAI密钥进行推理,但AutoGen为非OpenAI或本地托管的LLM提供开箱即用的支持。要学习如何做到这一点,你可以去这里。
AutoGPT不做同样的事情,虽然在AutoGen中,我们可以通过更改OAI_CONFIG_LIST文件来配置调用什么API进行推理,但AutoGPT没有办法做同样的事,而是在内部调用OpenAI API。
要通过本地托管的LLM完全免费使用AutoGPT,有两个选项:
- 您可以直接在AutoGPT代码库的本地副本中进行更改。这里可以看到一个如何做到这一点的例子,其中AutoGPT与keldenl/gpt-llama.cpp一起使用。它可以归结为将base_url添加到openai_base_url中,并调整向量的维度以匹配本地LLM的维度。可以发现许多这样的AutoGPT分支在非OpenAI模型上运行,每一个都有其挑战。
- 您可以在docker容器中运行AutoGPT,并将容器中的OpenAI API调用代理到本地托管LLM的API。
BabyAGI可以使用OpenAI或任何基于LLaMA的模型,只需对代码和环境变量进行轻微修改,从而使其高度可定制。
要将OpenAgents与不同的LLM一起使用,可以按照此处提供的说明进行操作。
外部工具/API使用
AutoGPT可以直接浏览互联网,这是AutoGPT相对于AutoGen的第一个主要优势
Next AutoGPT有内置插件支持,而AutoGen没有。您需要显式编程您希望AutoGen使用的每个工具。
现在记住这两点,在某些情况下,使用AutoGen比使用AutoGPT更可取,在一些情况下则不然。
对于BabyAGI,我们有两种选择:
- 技能:BabyAGI本机支持称为技能的东西,我们可以实现这些技能来扩展其功能。BabyAGI的当前迭代具有有限的本地可用技能,包括网页抓取技能、文件和目录创建技能、文件读取技能、基于DALL-e的图像生成技能和音乐播放器技能。可以添加新技能,但这样做的过程非常不直观,在这一点上,我们最好只使用AutoGen功能。
- Langchain代理商:BabyAGI已与Langchain集成,使我们能够创建和使用Langchain工具。
最后,OpenAgents也支持插件,但与AutoGPT不同,它有更广泛的插件可供选择(>200)。它的web集成插件比AutoGPT提供的插件强大得多。虽然AutoGPT只能浏览网页,但OpenAgents可以使用XLang web Agent插件直接与浏览器交互并为您执行任务。
所以归根结底,AutoGPT几乎可以做任何事情,OpenAgent都可以做得更好。AutoGPT领先于OpenAgents的唯一地方是需要与用户的本地机器进行交互的任务,这也可以通过为其创建新的OpenAgents插件来弥补。
用例和应用程序
现在,考虑到我们在不同代理中遇到的差异,我们可以决定每个代理实现的利基市场。
可以使用AutoGPT的位置:
- 对于问答、浏览网络以收集和汇总信息、创建整个网站等更大规模的代码生成等用例,AutoGPT是更好的选择,因为它可以更好地访问信息。
- 当我们需要与用户的本地系统交互时,最好使用AutoGPT而不是AutoGen,因为AutoGPT在与运行环境交互方面有更大的自由度,并且可以执行命令,如创建新的项目目录、从类似cli的下一个应用程序创建web应用程序等。
- AutoGen没有同样的自由度。这使它能够以更安全的方式运行,但也在很大程度上限制了它。
可以使用AutoGen的地方:
- 对于在多次执行中需要一定精度和一致性的任务,最好使用AutoGen,因为如前所述,我们必须明确编程希望AutoGen使用的工具,但这会提高执行结果的一致性和控制力。
- 在AutoGPT工具的使用和输入中,生成都是自己完成的,因此我们无法控制过程,因此AutoGen在这些场景中更可取。
- 此外,我们在AutoGPT中没有可以触发的标志来保证调用运行您想要使用的工具的特定程序,插件是根据提供的提示的上下文调用的,因此不能保证会调用插件。
- 对于任何对我们的自定义域进行API调用的用例,即使我们在提示中显式地为其提供格式,我们也无法控制AutoGPT基于我们的上下文生成的输入格式,因此在这种情况下,更安全的选择是使用AutoGen。
AutoGen还有一个独特之处,那就是它支持多智能体聊天和协作。因此,我们可以创建不同的代理,每个代理都有自己的角色和工具集。我们甚至可以让不同的代理调用不同的LLM模型。
- 因此,使用此功能,可以模拟需要职责分离的团队的任务,例如具有专门开发人员、测试人员、QA等的应用程序开发团队。
- 最后,假设每个代理都可以连接到不同的模型,则可以使用AutoGen实现多模态。
- 现在我认为BabyAGI最好用作任务编排工具,而不是LLM代理。我的意思是,BabyAGI非常擅长为任何给定任务创建子任务并对其进行优先级排序。它还可以在任务未完成时无限期运行。使用这两个事实,我们可以配置BabyAGI为我们的用例创建子任务,并将实际执行留给其他代理,如AutoGen、OpenAgents等。
最后,对于OpenAgents,任何可以由AutoGPT执行的用例,OpenAgents都可能做得更好。OpenAgents还有3个独立的代理,每个代理都可以执行唯一的操作。尽管我们可以选择使用任何LLM,但当我将GPT-4与3个代理一起使用时,我得到了最好的结果。
Data Agent是一个全面的工具包,旨在实现高效的数据操作。它提供了搜索、处理、操作和可视化数据的功能。凭借其熟练的代码编写和执行能力,Data Agent简化了一系列以数据为中心的任务。根据我的经验,这个代理的数据搜索功能似乎相当缺乏。以下是相同的一些用例:
- 搜索并组合多个数据集以训练您的自定义模型。
- SQL和Python代码的生成和执行。
- 数据可视化。
- 图像处理。
Plugins Agent与200多个第三方插件无缝集成,每个插件都经过精心挑选,丰富了您日常生活的各个方面。有了这些插件,代理使您能够更有效地处理各种任务和活动。可以同时使用多个插件。可以根据应用程序的需要添加新插件。大多数可用的插件大多适用于不知名的购物网站,很少有例外,如WolframAlpha、Zapier等。
Web Agent利用Chrome扩展的强大功能自动导航和浏览网站。此代理优化了web浏览体验,使查找相关信息、访问所需资源等更加容易。它可用于自动化web任务。以下是相同的一些用例:
- 旅行助理。
- 任何服务评论部分的情绪分析。
- 自动生成内容并在社交媒体上发布。
并排比较
结论
在评估当前LLM代理的能力时,每个代理都展示了针对特定用例定制的不同优势。AutoGPT擅长广泛的任务和与本地环境的交互,而AutoGen提供精确的执行、多智能体协作和可定制的工具集成。BabyAGI虽然主要是一种任务编排工具,但它可以有效地创建子任务并对其进行优先级排序,非常适合更广泛的项目管理。与此同时,OpenAgents凭借其广泛的插件支持脱颖而出,实现了更全面、更通用的任务处理方法,巩固了其在各种应用程序中优于其他代理的优势,以及可用于自动化的惊人浏览器交互。随着技术的进步,代理的选择将取决于手头任务的特殊性以及所需的自主性和定制水平。
- 登录 发表评论