跳转到主要内容

概述

此工具用于将自然语言转换为 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 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]
    )

示例

主要任务目标是: “检索每个城市的平均、最大和最小月收入,但只包括用户数量多于一个的城市。此外,计算每个城市的用户数量,并按平均月收入降序排列结果” 因此代理尝试从数据库中获取信息,第一次是错误的,所以代理再次尝试并获取了正确的信息,然后将其传递给下一个代理。 alt text alt text 第二个任务目标是: “审查数据并创建详细报告,然后根据提供的数据在数据库中创建包含字段的表。包括每个城市的平均、最大和最小月收入信息,但只包括用户数量多于一个的城市。此外,计算每个城市的用户数量,并按平均月收入降序排列结果。” 现在事情变得有趣起来,代理生成 SQL 查询,不仅创建表,还插入数据。最后,代理仍然返回最终报告,这与数据库中的内容完全一致。 alt text alt text alt text alt text 这是一个简单的示例,展示了 NL2SQLTool 如何用于与数据库交互并根据数据库中的数据生成报告。 该工具为代理的逻辑以及它如何与数据库交互提供了无限的可能性。
 DB -> Agent -> ... -> Agent -> DB