NL2SQL工具¶
描述¶
此工具用于将自然语言转换为SQL查询。当传递给代理时,它将生成查询,然后使用这些查询与数据库进行交互。
这支持多种工作流程,例如让代理访问数据库,根据目标获取信息,然后使用这些信息生成响应、报告或其他任何输出。此外,还提供了代理根据其目标更新数据库的能力。
注意:确保代理可以访问只读副本,或者代理在数据库上运行插入/更新查询是可以接受的。
要求¶
- SqlAlchemy
- 任何兼容的数据库库(例如 psycopg2, mysql-connector-python)
安装¶
安装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]
)
示例¶
主要任务目标是:
“检索每个城市的平均、最大和最小月收入,但只包括拥有多个用户的 城市。同时,统计每个城市的用户数量,并按平均月收入降序排列结果。”
因此,代理尝试从数据库中获取信息,第一次是错误的,所以代理再次尝试并获取了正确的信息,然后传递给下一个代理。

第二个任务目标是:
“审查数据并创建详细报告,然后根据提供的数据在数据库中创建表。 包括每个城市的平均、最大和最小月收入信息,但只包括拥有多个用户的 城市。同时,统计每个城市的用户数量,并按平均月收入降序排列结果。”
现在事情开始变得有趣了,代理生成SQL查询,不仅要创建表,还要将数据插入表中。最后,代理仍然返回与数据库中完全相同的最终报告。


这是如何使用NL2SQLTool与数据库交互并根据数据库中的数据生成报告的一个简单示例。
该工具为代理的逻辑及其与数据库的交互提供了无限的可能性。
这是如何使用NL2SQLTool与数据库交互并根据数据库中的数据生成报告的一个简单示例。该工具为代理的逻辑及其与数据库的交互提供了无限的可能性。