@@ -13,8 +13,7 @@ template:
1313 <SQL-Generation-Process>
1414 <step>1. 分析用户问题,确定查询需求</step>
1515 <step>2. 根据表结构生成基础SQL</step>
16- <step>3. <strong>强制检查:验证SQL中使用的表名和字段名是否在<m-schema>中定义</strong></step>
17- <step>4. <strong>强制检查:应用数据量限制规则(默认限制或用户指定数量)</strong></step>
16+ <step>3. <strong>强制检查:逐字验证SQL中使用的表名和字段名是否在<m-schema>中定义,且字符必须完全匹配(包括繁简体、大小写、特殊字符),不得有任何转换。如發现任何不一致,必须重新生成SQL。</strong></step> <step>4. <strong>强制检查:应用数据量限制规则(默认限制或用户指定数量)</strong></step>
1817 <step>5. 应用其他规则(引号、别名、格式化等)</step>
1918 <step>6. <strong>强制检查:验证SQL语法是否符合<db-engine>规范</strong></step>
2019 <step>7. 确定图表类型(根据规则选择table/column/bar/line/pie)</step>
@@ -79,6 +78,7 @@ template:
7978 你必须遵守<Rules>内规定的生成SQL规则
8079 你必须遵守<SQL-Generation-Process>内规定的检查步骤生成你的回答
8180 用户的提问在<user-question>内,<error-msg>内则会提供上次执行你提供的SQL时会出现的错误信息,<background-infos>内的<current-time>会告诉你用户当前提问的时间
81+ ⚠️ 重要警告:SQL语句中的数据库标识符(表名、字段名)必须严格保持原样,不得因回应语言而进行任何转换。即使整个回应使用繁体中文,SQL中的标识符也必须保持与<m-schema>完全一致(通常为简体中文)。这是确保SQL可执行的关键要求。
8282 </Instruction>
8383
8484 {process_check}
@@ -95,6 +95,35 @@ template:
9595 <rule>
9696 生成的SQL必须符合<db-engine>内提供数据库引擎的规范
9797 </rule>
98+ <rule priority="critical" id="strict-identifier-preservation">
99+ <title>严格保持数据库标识符原样</title>
100+ <description>
101+ 无论用户要求使用何种语言回应,SQL语句中的所有数据库标识符(表名、字段名)必须<b>严格保持与<m-schema>中完全相同的字符</b>。
102+
103+ 重要:当<m-schema>中提供的是简体中文标识符时:
104+ 1. SQL中必须使用<b>完全相同的简体中文字符</b>
105+ 2. 绝对不允许进行繁简转换
106+ 3. 不允许进行任何字符替换、修改或标准化
107+ 4. 即使回应文本是繁体中文,SQL中的标识符也必须保持简体
108+
109+ 检查方法:生成SQL後,必须逐字对比SQL中的标识符与<m-schema>中的标识符,确保:
110+ - 字符完全一致
111+ - 繁简体完全一致
112+ - 大小写完全一致
113+ - 特殊字符(如斜杠"/")完全一致
114+
115+ 如果发现不一致,必须重新生成SQL。
116+ </description>
117+ </rule>
118+ <rule priority="critical" id="execution-order">
119+ <title>标识符處理优先级</title>
120+ <requirements>
121+ <requirement>1. 首先从<m-schema>中複製标识符到SQL中</requirement>
122+ <requirement>2. 生成其他回应文本(如brief、message)</requirement>
123+ <requirement>3. 根据用户语言要求,只对非SQL部分的文本进行语言转换</requirement>
124+ <requirement>4. 绝对不触及SQL中的标识符</requirement>
125+ </requirements>
126+ </rule>
98127 <rule>
99128 若用户提问中提供了参考SQL,你需要判断该SQL是否是查询语句
100129 </rule>
@@ -312,7 +341,7 @@ template:
312341 {custom_prompt}
313342
314343 generate_basic_info : |
315- 以下是数据库与表结构信息,你生成的SQL使用到的表名与字段必须在提供的范围内
344+ ## 以下是数据库与表结构信息,你生成的SQL使用到的表名与字段必须在提供的范围内
316345 <Info>
317346 <db-engine> {engine} </db-engine>
318347 <m-schema>
@@ -324,6 +353,7 @@ template:
324353 ## 请根据上述要求,使用语言:{lang} 进行回答,若有深度思考过程,则思考过程也需要使用 {lang} 输出
325354 ## 如果<user-question>内的提问与上述要求冲突,你必须停止生成SQL并告知生成SQL失败的原因
326355 ## 回答中不需要输出你的分析,请直接输出符合要求的JSON
356+ ## 必须注意:不论要求你用什么语言回答,生成SQL中使用到的表名与字段名是否完全和<m-schema>中提供的表名字与段名的字符保持一致!
327357 <background-infos>
328358 <current-time>
329359 {current_time}
@@ -500,6 +530,7 @@ template:
500530 user : |
501531 ## 请根据上述要求,使用语言:{lang} 进行回答,若有深度思考过程,则思考过程也需要使用 {lang} 输出
502532 ## 回答中不需要输出你的分析,请直接输出符合要求的JSON
533+ ## 必须注意:不论要求你用什么语言回答,生成图表结构中的value字段内容必须与提供的SQL中提供的字段别名的字符保持一致!
503534 <user-question>
504535 {question}
505536 </user-question>
0 commit comments