跳转到主要内容

概述

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

示例

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