91 lines
3.6 KiB
Plaintext
91 lines
3.6 KiB
Plaintext
|
|
# qwen 模型配置
|
|||
|
|
|
|||
|
|
# system role prompt
|
|||
|
|
system = "你擅长编写 SQL 代码,请结合具体问题编写正确规范的 SQL 代码"
|
|||
|
|
|
|||
|
|
# prompt 模板及参数,在模板中可以使用 {question} {database.metadata} 以及 {params.xxx} 引用参数
|
|||
|
|
prompt = """
|
|||
|
|
### 数据库结构
|
|||
|
|
|
|||
|
|
{database.metadata}
|
|||
|
|
|
|||
|
|
- [table_sql]标记下的是数据库表的建表语句,它告诉我们数据库有哪些字段以及这些字段的类型。
|
|||
|
|
- [field_requirement]标记下是编写SQL语句是对不同字段的要求,模型输出SQL语句时应严格遵守这些要求。
|
|||
|
|
|
|||
|
|
### 问题
|
|||
|
|
|
|||
|
|
根据以上建表语句,生成一个 SQL 来回答如下问题: [QUESTION]{question}[/QUESTION]
|
|||
|
|
|
|||
|
|
### 步骤
|
|||
|
|
|
|||
|
|
1、结合建表语句[table_sql],分析该问题是否为一个指示了要查询某些数据库字段的 “明确提问”。如果该问题不是 “明确提问”,那么进行第二步,否则执行第三步。
|
|||
|
|
2、如果输入的问题不是 “明确提问”,那么它就是一个 “困难提问”,你需要对它进行扩充,生成一个 “明确提问”。
|
|||
|
|
3、结合建表语句,根据 “明确提问” 生成一个 SQL 语句。
|
|||
|
|
|
|||
|
|
### 明确提问示例
|
|||
|
|
生成的 “明确提问” 格式应尽可能规范。一个 “明确问题” 通常会尽可能齐全地写明待查询的中文字段名或其相近名称,示例如下:[EXAMPLE]{example}[/EXAMPLE]。
|
|||
|
|
如果你由 “困难提问” 生成了 “明确提问”,那么输出中需要添加 “明确提问”,包含在```expanded```标记中。
|
|||
|
|
|
|||
|
|
### 输出要求
|
|||
|
|
|
|||
|
|
- 输出的字段名必须用中文描述。
|
|||
|
|
- 输出的 SQL 语句必须能够通过 {database.product} 验证。
|
|||
|
|
- 输出的 SQL 语句必须包含在 ```sql ``` 标记中。
|
|||
|
|
- 输出的 SQL 语句不要添加注释。
|
|||
|
|
- 输出的 SQL 语句使用反引号来引用中文字段名。
|
|||
|
|
- 输出的 SQL 语句中包含的字段名必须和上述的[table_sql]中的字段名保持一致。
|
|||
|
|
- 输出的 SQL 语句禁止使用别名。
|
|||
|
|
- 输出的 SQL 语句在 where 从句中的条件判断中的字段名应和[table_sql]中的字段名保持一致。
|
|||
|
|
|
|||
|
|
### 输出格式
|
|||
|
|
'''expanded
|
|||
|
|
[EXPANDED]
|
|||
|
|
'''
|
|||
|
|
'''sql
|
|||
|
|
[SQL]
|
|||
|
|
'''
|
|||
|
|
[ANSWER]
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# params.requirements = """
|
|||
|
|
# - 生成的 “明确提问” 格式应尽可能规范。一个 “明确问题” 通常会尽可能齐全地写明待查询的中文字段名或其相近名称,示例如下:[EXAMPLE]{example}[/EXAMPLE]。
|
|||
|
|
# - 如果你由 “困难提问” 生成了 “明确提问”,那么输出中需要添加 “明确提问”,包含在```expanded```标记中。
|
|||
|
|
# """
|
|||
|
|
|
|||
|
|
params.example = """
|
|||
|
|
示例1:
|
|||
|
|
输入:签订日期在2022年,合同名称中包含智慧城市,合同金额在300万以上的合同有哪些,列出合同名称,合同金额。
|
|||
|
|
输出:
|
|||
|
|
'''sql
|
|||
|
|
SELECT `合同名称`, `合同签订金额(人民币)` / 10000 AS 合同金额(万元)
|
|||
|
|
FROM `contracts`
|
|||
|
|
WHERE `签订日期` BETWEEN '2022-01-01' AND '2022-12-31'
|
|||
|
|
AND `合同名称` LIKE '%智慧城市%'
|
|||
|
|
AND `合同签订金额(人民币)` > 3000000;
|
|||
|
|
'''
|
|||
|
|
|
|||
|
|
示例2:
|
|||
|
|
输入:所属分公司是七分公司,客户名称是中共广东省委办公厅的项目有哪些,列出所有信息。
|
|||
|
|
输出:
|
|||
|
|
'''sql
|
|||
|
|
SELECT *
|
|||
|
|
FROM contracts
|
|||
|
|
WHERE
|
|||
|
|
经办单位 LIKE '%七分公司%'
|
|||
|
|
AND 客户名称 LIKE '%中共广东省委办公厅%';
|
|||
|
|
'''
|
|||
|
|
|
|||
|
|
示例3:
|
|||
|
|
输入:业务拓展方式是联合拓展,所属分公司是二分公司,地点不在佛山市的项目一共有多少个。
|
|||
|
|
输出:
|
|||
|
|
'''sql
|
|||
|
|
SELECT COUNT(*)
|
|||
|
|
FROM contracts
|
|||
|
|
WHERE
|
|||
|
|
`业务拓展方式` = '联合拓展'
|
|||
|
|
AND `所属分公司` LIKE '%二分公司%'
|
|||
|
|
AND `地点` NOT LIKE '佛山%'
|
|||
|
|
'''
|
|||
|
|
"""
|
|||
|
|
|