# 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 '佛山%' ''' """