跳转到主要内容

LLM代理的客观比较

今天有相当多的LLM代理可用。一些最突出的是AutoGPT、AutoGen、BabyAGI和OpenAgents。本文旨在提供这些模型的并排比较,以及我们应该和不应该在哪些用例中使用它们。

AutoGen


AutoGen是一个框架,可以使用多个代理来开发LLM应用程序,这些代理可以相互对话以解决任务。AutoGen代理是可定制的、可交谈的,并无缝地允许人类参与。它们可以在各种模式下运行,这些模式采用LLM、人工输入和工具的组合。通过能够创建可定制和可交谈的代理,AutoGen允许人类在这些多代理对话中无缝参与。

【LLM】LangChain 自治代理和代理模拟

在过去的两周里,以代理方式使用LLM的人数大幅增加。具体来说,像AutoGPT、BabyAGI、CAMEL和Generative Agents这样的项目已经出现。LangChain社区现在已经在LangChain框架中实施了所有这些项目的一些部分。在研究和实施这些项目时,我们试图最好地了解它们之间的区别以及每个项目的新颖之处。这个博客是对我们所学知识的解释。

注意:这是一个相当技术性的博客。它假设对LangChain和这些相关项目有一定的熟悉程度。如果你不熟悉这些项目,读一篇更具介绍性的文章(比如索菲亚·杨的这篇精彩的文章)可能会有所帮助。

TL;DR:

  • “自主代理”项目(BabyAGI、AutoGPT)的长期目标在很大程度上是新颖的,这需要新型的规划技术和不同的内存使用。
  • “代理模拟”项目(CAMEL,Generative Agents)在很大程度上是新颖的,因为它们的模拟环境和基于事件反映和调整的长期内存。

我们还讨论了我们在LangChain框架中复制的每个项目的哪些部分,以及我们为什么选择这些部分。在LangChain框架中实现这些功能有以下好处:

【Langchain】Langchain 代理工具包

今天,我们宣布了代理工具包,这是一种新的抽象,允许开发人员创建为特定用例设计的代理(例如,与关系数据库交互或与OpenAPI规范交互)。我们希望继续开发不同的工具包,使特工能够做出惊人的壮举。Python和TypeScript都支持工具包。

代理

快速复习:我们所说的代理是什么意思?为什么要使用它们?

我们所说的代理是指一个使用LLM来决定以重复的方式采取什么行动的系统,其中未来的决定是基于对先前行动结果的观察。这种方法有几个好处。首先,它允许将LLM与外部知识或计算来源(工具本身)相结合。其次,它允许迭代规划和采取行动,这对于有一系列事情要做的更复杂的任务很有用。最后,它允许以一种稳健的方式进行错误处理,因为代理可以观察某个操作是否引发了错误并尝试纠正它。这些好处在下面的示例中显而易见。

工具程序

工具包允许您对共享特定资源(如数据库连接或json对象)的一组工具进行逻辑分组和初始化。它们可以用于为特定的用例构建代理。以下是使用它们创建的工具包和代理的一些示例:

SQL数据库代理

该代理基于SQLDatabaseChain构建,能够回答有关数据库的一般问题,在执行查询之前仔细检查查询,并从错误中恢复。

【LLM】大型语言模型背景下的自主代理LangChain

随着大型语言模型(LLM)的实现在深度和广度上的扩展,出现了一些要求:

  1. 对LLM进行编程并创建可重复使用的提示的能力&将提示无缝地合并到更大的应用程序中。
  2. 创建链以对大型应用程序的LLM交互进行排序。
  3. 通过一个可以在工具范围内自主行动的代理,自动进行即兴的思维链提示。
  4. 创建可扩展的提示管道,可以从各种来源收集相关数据,所有这些都基于用户输入并构成提示;并将提示提交给LLM。

“任何足够先进的技术都与魔术难以区分。”

-阿瑟·C·克拉克

对于LLM相关的操作,显然需要自动化。目前,这种自动化是以所谓的代理的形式出现的。

提示链接是指执行一系列预先确定的动作。