Agent Toolkits

代理工具包

3 分钟阅读

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

代理

快速回顾:我们所说的代理是什么意思?以及为什么要使用它们?

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

工具包

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

SQL数据库代理

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

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

要查看实际效果,请查看以下示例。代理被问及关于 Chinook 数据库 的问题;为此,它首先请求表列表,然后请求表元数据,然后执行查询。它最初遇到了一个错误,该错误是由连接到不存在的列引起的。(请参阅完整的 notebook,TypeScript 示例 此处)。

在仔细检查并重写查询后,它能够得到最终答案

OpenAPI 代理

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

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

其他代理工具包示例

  • JSON 代理 - 一种能够与大型 JSON blob 交互的代理。
  • 向量数据库代理 - 一种能够与向量数据库交互的代理。
  • Python 代理 - 一种能够生成和执行 Python 代码的代理。
  • Pandas DataFrame 代理 - 一种能够对 Pandas 数据帧进行问答的代理,构建于 Python 代理之上。
  • CSV 代理 - 一种能够对 CSV 文件进行问答的代理,构建于 Pandas DataFrame 代理之上。

接下来

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