跳转至

NL2SQL工具

描述

此工具用于将自然语言转换为SQL查询。当传递给代理时,它将生成查询,然后使用这些查询与数据库进行交互。

这支持多种工作流程,例如让代理访问数据库,根据目标获取信息,然后使用这些信息生成响应、报告或其他任何输出。此外,还提供了代理根据其目标更新数据库的能力。

注意:确保代理可以访问只读副本,或者代理在数据库上运行插入/更新查询是可以接受的。

要求

  • SqlAlchemy
  • 任何兼容的数据库库(例如 psycopg2, mysql-connector-python)

安装

安装crewai_tools包

pip install 'crewai[tools]'

使用

为了使用NL2SQLTool,您需要将数据库URI传递给工具。URI应采用以下格式:dialect+driver://username:password@host:port/database

from crewai_tools import NL2SQLTool

# 安装psycopg2以使用此示例与PostgreSQL
nl2sql = NL2SQLTool(db_uri="postgresql://example@localhost:5432/test_db")

@agent
def researcher(self) -> Agent:
    return Agent(
        config=self.agents_config["researcher"],
        allow_delegation=False,
        tools=[nl2sql]
    )

示例

主要任务目标是:

“检索每个城市的平均、最大和最小月收入,但只包括拥有多个用户的 城市。同时,统计每个城市的用户数量,并按平均月收入降序排列结果。”

因此,代理尝试从数据库中获取信息,第一次是错误的,所以代理再次尝试并获取了正确的信息,然后传递给下一个代理。

alt text alt text

第二个任务目标是:

“审查数据并创建详细报告,然后根据提供的数据在数据库中创建表。 包括每个城市的平均、最大和最小月收入信息,但只包括拥有多个用户的 城市。同时,统计每个城市的用户数量,并按平均月收入降序排列结果。”

现在事情开始变得有趣了,代理生成SQL查询,不仅要创建表,还要将数据插入表中。最后,代理仍然返回与数据库中完全相同的最终报告。

alt text alt text

alt text alt text

这是如何使用NL2SQLTool与数据库交互并根据数据库中的数据生成报告的一个简单示例。

该工具为代理的逻辑及其与数据库的交互提供了无限的可能性。

 DB -> Agent -> ... -> Agent -> DB
这是如何使用NL2SQLTool与数据库交互并根据数据库中的数据生成报告的一个简单示例。

该工具为代理的逻辑及其与数据库的交互提供了无限的可能性。

 DB -> Agent -> ... -> Agent -> DB