NL2SQLTool

描述

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

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

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

需求

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

安装

安装crewai_tools包

pip install 'crewai[tools]'

用法

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

Code
from crewai_tools import NL2SQLTool

# psycopg2 was installed to run this example with 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]
    )

示例

主要任务目标是:

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

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

第二个任务目标是:

“审查数据并创建详细报告,然后根据提供的数据在数据库上创建包含字段的表。 包括每个城市的平均、最大和最小月收入信息,但仅包括拥有超过一个用户的城市。此外,计算每个城市的用户数量,并按平均月收入降序排序结果。”

现在事情开始变得有趣了,Agent 生成了 SQL 查询,不仅创建了表,还将数据插入到表中。最后,Agent 仍然返回了最终报告,这正是数据库中的内容。

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

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

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

这个页面有帮助吗?