跳到主要内容

SQL 数据库 (SQL Database)

SQL 数据库 (SQL Database) 组件在 SQLAlchemy 兼容的数据库 上执行 SQL 查询。 它支持任何 SQLAlchemy 兼容的数据库,例如 PostgreSQL、MySQL 和 SQLite。

对于 CQL 查询,请参阅 DataStax 捆绑包

使用自然语言提示词查询 SQL 数据库

以下示例演示了如何在流中使用 SQL 数据库 (SQL Database) 组件,然后修改该组件以支持通过 代理 (Agent) 组件进行自然语言查询。

这允许您将同一个 SQL 数据库 组件用于任何查询,而不是将其限制为单个手动输入的查询,或要求用户、应用程序或其他组件提供有效的 SQL 语法作为输入。 用户不需要掌握 SQL 语法,因为 代理 (Agent) 组件会将用户的自然语言提示词转换为 SQL 查询,将查询传递给 SQL 数据库 组件,然后将结果返回给用户。

此外,来自应用程序和其他组件的输入不需要提取并转换为精确的 SQL 查询。 相反,您只需要提供足够的上下文,以便代理理解它应该根据传入的数据创建并运行 SQL 查询。

  1. 使用您自己的示例数据库或创建一个测试数据库。

    创建一个测试 SQL 数据库
    1. 创建一个名为 test.db 的数据库:


      _10
      sqlite3 test.db

    2. 向数据库中添加一些值:


      _13
      sqlite3 test.db "
      _13
      CREATE TABLE users (
      _13
      id INTEGER PRIMARY KEY,
      _13
      name TEXT,
      _13
      email TEXT,
      _13
      age INTEGER
      _13
      );
      _13
      _13
      INSERT INTO users (name, email, age) VALUES
      _13
      ('John Doe', 'john@example.com', 30),
      _13
      ('Jane Smith', 'jane@example.com', 25),
      _13
      ('Bob Johnson', 'bob@example.com', 35);
      _13
      "

    3. 验证数据库已创建并包含您的数据:


      _10
      sqlite3 test.db "SELECT * FROM users;"

      结果应该列出您在前面的步骤中输入的文本数据:


      _10
      1|John Doe|john@example.com
      _10
      2|Jane Smith|jane@example.com
      _10
      3|John Doe|john@example.com
      _10
      4|Jane Smith|jane@example.com

  2. 向您的流中添加一个 SQL 数据库 (SQL Database) 组件。

  3. 数据库 URL (Database URL) 字段中,添加您的数据库连接字符串,例如 sqlite:///test.db

    此时,您可以在 SQL 查询 (SQL Query) 字段中输入 SQL 查询,或使用 端口 从另一个组件(如 聊天输入 (Chat Input) 组件)传递查询。 如果您需要更多空间,点击 展开 (Expand) 以打开全屏文本字段。

    然而,为了使此组件在代理上下文中更具动态性,请使用 代理 (Agent) 组件将自然语言输入转换为 SQL 查询,如接下来的步骤所述。

  4. 点击 SQL 数据库 (SQL Database) 组件以公开 组件的标题菜单,然后启用 工具模式 (Tool Mode)

    您现在可以将此组件用作代理的工具。 在 工具模式 (Tool Mode) 下,SQL 数据库 组件中没有设置查询,因为如果代理确定完成用户的请求需要该工具,它将生成并发送一个查询。 更多信息请参阅 为代理配置工具

  5. 向您的流中添加一个 代理 (Agent) 组件,然后输入您的 OpenAI API 密钥。

    默认模型是 OpenAI 模型。 如果您想使用不同的模型,请相应地编辑 模型提供商 (Model Provider)模型名称 (Model Name)API 密钥 (API Key) 字段。

    如果您需要执行高度专业化的查询,请考虑选择针对高级 SQL 查询等任务训练的模型。 如果您喜欢的模型不在 代理 (Agent) 组件的内置模型列表中,请将 模型提供商 (Model Provider) 设置为 连接其他模型 (Connect other models),然后连接任何 语言模型组件

  6. SQL 数据库 (SQL Database) 组件的 工具集 (Toolset) 输出连接到 代理 (Agent) 组件的 工具 (Tools) 输入。

    SQL 数据库组件连接到代理组件

  7. 点击 游乐场 (Playground),然后向代理询问有关数据库中数据的问题,例如 Which users are in my database? (我的数据库中有哪些用户?)

    代理确定需要查询数据库来回答问题,使用 LLM 生成 SQL 查询,然后使用 SQL 数据库 组件的 RUN_SQL_QUERY 操作在您的数据库上运行查询。 最后,它以对话格式返回结果,除非您提供了返回原始结果或其他格式的指令。

    以下示例查询了一个数据很少的测试数据库,但有了更强大的数据集,您可以提出更详细或复杂的问题。


    _10
    以下是您数据库中的用户:
    _10
    _10
    1. **John Doe** - 电子邮件:john@example.com
    _10
    2. **Jane Smith** - 电子邮件:jane@example.com
    _10
    3. **John Doe** - 电子邮件:john@example.com
    _10
    4. **Jane Smith** - 电子邮件:jane@example.com
    _10
    _10
    您的数据库中似乎有重复的用户条目。

SQL 数据库参数

Some parameters are hidden by default in the visual editor. You can modify all parameters through the Controls in the component's header menu.

名称显示名称信息
database_url数据库 URL (Database URL)输入参数。SQLAlchemy 兼容的数据库连接 URL。
querySQL 查询 (SQL Query)输入参数。要执行的 SQL 查询,可以直接输入、从另一个组件传入,或者在 工具模式 (Tool Mode) 下由 代理 (Agent) 组件自动提供。
include_columns包含列名 (Include Columns)输入参数。是否在结果中包含列名。默认启用 (true)。
add_error添加错误 (Add Error)输入参数。如果启用,则将任何返回的错误消息添加到结果中。默认禁用 (false)。
run_sql_query结果表 (Result Table)输出参数。作为 DataFrame 的查询结果。
Search