Skip to content

Commit c292466

Browse files
committed
feat(System): Language switch, supports Traditional Chinese.
1 parent 82ddc08 commit c292466

2 files changed

Lines changed: 35 additions & 4 deletions

File tree

backend/templates/sql_examples/Oracle.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ template:
33
<SQL-Generation-Process>
44
<step>1. 分析用户问题,确定查询需求</step>
55
<step>2. 根据表结构生成基础SQL</step>
6-
<step>3. <strong>强制检查:验证SQL中使用的表名和字段名是否在<m-schema>中定义</strong></step>
6+
<step>3. <strong>强制检查:逐字验证SQL中使用的表名和字段名是否在<m-schema>中定义,且字符必须完全匹配(包括繁简体、大小写、特殊字符),不得有任何转换。如發现任何不一致,必须重新生成SQL。</strong></step> <step>4. <strong>强制检查:应用数据量限制规则(默认限制或用户指定数量)</strong></step>
77
<step>4. <strong>强制检查:应用数据量限制规则(默认限制或用户指定数量)</strong></step>
88
<step>5. 应用其他规则(引号、别名、格式化等)</step>
99
<step>6. <strong>最终验证:GROUP BY查询的ROWNUM位置是否正确?</strong></step>

backend/templates/template.yaml

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)