91 lines
3.6 KiB
Plaintext
Raw Permalink Normal View History

2025-02-17 10:34:35 +08:00
# 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 '佛山%'
'''
"""