跳转到主要内容

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

代理

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

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

工具程序

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

SQL数据库代理

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

使用SQLDatabaseToolkit,代理从DB中检索表,选择相关表,获取其表信息,创建并检查查询以回答问题,并在遇到错误时重复此过程的部分内容。

要了解这一点,请查看下面的示例。特工被问到一个关于奇努克数据库的问题;为此,它要求提供表的列表,然后是表元数据,然后执行查询。它最初遇到一个错误,该错误是由于在一个不存在的列上联接而引起的。(请参阅完整的笔记本,此处为TypeScript示例)。

经过反复检查和重写查询,可以得出最终答案:

OpenAPI代理

该代理能够与OpenAPI规范交互,并根据从规范中收集的信息发出正确的API请求。

在下面的示例中,我们使用OpenAI API的OpenAPI规范,您可以在这里找到。使用OpenAPIToolkit,代理能够筛选规范的JSON表示(请参阅JSON代理),找到POST请求到/completions端点所需的基本URL、路径和所需参数,然后发出请求。(请参阅完整的笔记本,此处为TypeScript示例)。

其他代理工具包示例:

  • JSON agent-一个能够与大型JSON blob进行交互的代理。
  • Vectorstore agent一种能够与矢量存储交互的代理。
  • Python agent-一个能够生成和执行Python代码的代理。
  • Pandas DataFrame agent-一个能够在Pandas数据帧上回答问题的代理,构建在Python代理的基础上。
  • CSV agent-一个能够通过CSV回答问题的代理,建立在Pandas DataFrame代理的基础上。

下一个

我们刚刚开始使用代理工具包,并计划在未来添加更多代理工具包。我们相信,以代理的方式与工具和实用程序交互会带来许多令人兴奋的可能性。如果您还想看到其他用例,请联系我们!

文章链接