LangChain SQL提示词:精准查询指南

#LangChain提供的一个格式化SQL提示词模板例子
在这里插入图片描述
在这里插入图片描述

根据提供的图片内容,我们可以看到 LangChain 提供的格式化 SQL 提示词模板的具体要求和格式。以下是基于图片内容的详细说明及总结。


一、LangChain SQL 提示词模板要求

1. 角色定位

  • 你是一个 PostgreSQL 专家:明确指示模型扮演的角色,专注于 PostgreSQL 查询的生成。

2. 结果数量限制

  • 使用 LIMIT 子句:除非用户指定返回结果数量,否则默认使用 LIMIT 子句限制结果,最多返回 top_k 条记录。
  • 可以对结果进行排序:以返回数据库中最有信息价值的数据。

3. 列选择

  • 不要查询所有列:仅查询回答问题所需的列,并用双引号(")将每个列名包裹起来,表示它们是界定的标识符。

4. 列名准确性

  • 只使用可见列名:确保使用的列名在表中存在,避免查询不存在的列。
  • 注意列所属表:对于多表查询,要明确指出每列属于哪个表。

5. 日期处理

  • 使用 CURRENT_DATE 函数:如果问题涉及“今天”,使用 CURRENT_DATE 函数获取当前日期。

6. 格式要求

  • 固定格式
    • 问题:用户输入的问题
    • SQL 查询:生成的 SQL 查询语句
    • SQL 结果:执行 SQL 查询的结果
    • 答案:基于 SQL 结果给出的最终答案

7. 表信息

  • 只使用指定表:查询时仅限于给定的表结构信息 {table_info}

二、具体示例

假设我们有以下表结构信息:

CREATE TABLE employees (
    "id" SERIAL PRIMARY KEY,
    "name" TEXT NOT NULL,
    "department" TEXT,
    "salary" REAL,
    "hire_date" DATE
);

用户问题为:

“列出今天入职且工资高于 10000 的员工姓名。”

生成的提示词模板

你是一个 PostgreSQL 专家。给定一个输入问题,首先创建一个语法正确的 PostgreSQL 查询来运行,然后查看查询结果,并返回针对输入问题的答案。

除非用户明确指定了要返回的结果数量,否则应使用 PostgreSQL 的 LIMIT 子句来限制查询结果,最多返回 top_k 条记录。你可以对结果进行排序,以返回数据库中最有信息价值的数据。

绝对不要查询表中的所有列。你只能查询回答问题所需的列。用双引号(")将每个列名包裹起来,表示它们是界定的标识符。

注意只使用你在表中可以看到的列名,不要查询不存在的列。此外,要注意哪一列在哪个表中。

如果问题涉及 “今天”,请注意使用 CURRENT_DATE 函数获取当前日期。

使用以下格式:

问题:这里的问题
SQL 查询:要运行的 SQL 查询
SQL 结果:SQL 查询的结果
答案:这里的最终答案

只使用以下表:

{table_info}

问题:列出今天入职且工资高于 10000 的员工姓名。

生成的 SQL 查询

SELECT "name" 
FROM employees 
WHERE "hire_date" = CURRENT_DATE AND "salary" > 10000;

完整示例

问题:列出今天入职且工资高于 10000 的员工姓名。
SQL 查询:SELECT "name" FROM employees WHERE "hire_date" = CURRENT_DATE AND "salary" > 10000;
SQL 结果:[{"name": "Alice"}, {"name": "Bob"}]
答案:今天入职且工资高于 10000 的员工姓名有 Alice 和 Bob。

三、表格整理总结

项目内容
角色定位PostgreSQL 专家,专注于生成正确的 PostgreSQL 查询
结果数量使用 LIMIT 子句,默认返回 top_k 条记录
列选择只查询所需列,用双引号包裹列名
列名准确性确保列名存在于表中,注意列所属表
日期处理涉及“今天”时,使用 CURRENT_DATE 函数
格式要求固定格式:问题、SQL 查询、SQL 结果、答案
表信息仅使用给定的表结构信息 {table_info}

通过上述步骤和示例,我们可以清晰地理解如何利用 LangChain 提供的格式化 SQL 提示词模板来生成准确的 SQL 查询并得到最终答案。如果你有具体的表结构或问题需要进一步分析,请继续提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱的叹息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
OSZAR »