如何通过LangChain代理使您的LLM更强大

通过LangChain代理增强您的LLM

LLMs非常擅长执行许多对我们来说似乎不可思议的壮举,但它们受到生成型人工智能最初意图的限制:根据它们所接受的训练数据生成文本。

它们无法访问网络上的任何服务来给我们提供更准确和最新的答案,而是以它们的创建者多年前能够收集到的训练数据来回答问题。它们无法访问像计算器这样简单的工具,这些工具可以帮助提供数学答案,而不是必须记住每个数学运算的结果。它们依赖于我们在现实世界中执行它们建议的动作,并向它们报告结果。

为了使我们的LLMs具备真正对我们有用的能力,我们可以使用代理

什么是代理?

代理是一个LLM,它被提示思考完成请求所需的动作,使用一组工具。代理可以与任何LLM一起使用。它只是在LLM之上的一个层,构建提示,为代理指示上下文、个性以及完成请求所需的策略

显然,单独的代理是不够的。我们还需要创建/使用代理能够使用的工具。代理执行器是执行代理和工具的运行时。工具可以是独立的函数,也可以是一组被称为工具包的工具集合。

工具和工具包

工具是函数,它们将代表LLM执行操作。代理会获得一组供其使用的工具列表,并请求使用一个、多个或不使用。代理执行器将执行所需的工具,并将结果反馈给代理。一个例子是Google搜索功能,它允许LLMs使用Google搜索来查找一些它们没有的信息。

为了使代理能够正确选择所需的工具,这些工具必须存在,并且为代理的目的正确实现,并且在工具列表中。但更重要的是,这些工具必须经过详细描述,以便代理可以轻松决定是否需要它们以及它们将对何种方面有帮助。

工具包只是一组工具,通常一起使用很有用。这些工具可能有助于实现多步目标,或者它们可能被分组,因为它们执行相似的操作或在同一领域执行操作。一个例子是Gmail工具包,它允许LLMs阅读邮件、起草新邮件并删除邮件。

代理使用什么策略?

提供一组工具给代理后,它如何知道要使用哪个工具?代理可以使用各种提示工程策略,使LLM进行推理和决策。在前一篇文章“提示工程”中讨论了一些热门的提示工程实践。

代理最流行的策略是ReAct方法。ReAct使用少样本学习和一些链式推理示例。这些示例包含:

  • 思考从推理策略中转录下来。
  • 动作让LLM以口头方式与其环境进行交互。
  • 观察在执行这些动作后得到的结果。

然后,LLM理解如何以这种方式行动并与工具进行交互,并能将其应用于真实的交互。一个ReAct提示的例子是:

如何使用LangChain代理

LangChain是一个Python库(还有JS/TS),非常适用于快速开始将LLMs集成到您的应用程序中。它提供了许多可用的提示策略,也有很多代理。

您可以使用LangChain的工具自己编写工具,像这样(非常重要:给函数一个文档字符串描述;代理将使用它来选择要使用的工具):

在此之后,您可以使用此工具与您选择的代理一起使用,还可以与Langchain一起使用:

您可以通过访问其文档了解更多关于LangChain及其工具的信息。

看起来代理将在不久的将来为LLMs带来更多的功能。随着这些新功能的推出到应用程序和工具中,将有更多出色的事情变得可能。我非常好奇并期待着新的可能性。