mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: improve chat template
This commit is contained in:
+29
-15
@@ -12,7 +12,7 @@ template:
|
||||
<Infos>内有<db-engine><m-schema><terminologies>等信息;
|
||||
其中,<db-engine>:提供数据库引擎及版本信息;
|
||||
<m-schema>:以 M-Schema 格式提供数据库表结构信息;
|
||||
<terminologies>:提供一组专业术语,块内每一个<terminology>就是专业术语,其中同一个<words>内的多个<word>代表术语的多种叫法,也就是术语与它的同义词,<description>即该专业术语对应的专业术语的描述,其中也可能是能够用来参考的计算公式,或者是一些其他的查询条件
|
||||
<terminologies>:提供一组术语,块内每一个<terminology>就是术语,其中同一个<words>内的多个<word>代表术语的多种叫法,也就是术语与它的同义词,<description>即该术语对应的描述,其中也可能是能够用来参考的计算公式,或者是一些其他的查询条件
|
||||
用户的提问在<user-question>内,<error-msg>内则会提供上次执行你提供的SQL时会出现的错误信息,<background-infos>内的<current-time>会告诉你用户当前提问的时间
|
||||
</Instruction>
|
||||
|
||||
@@ -40,6 +40,7 @@ template:
|
||||
</rule>
|
||||
<rule>
|
||||
如果问题是图表展示相关,可参考的图表类型为表格(table)、柱状图(column)、条形图(bar)、折线图(line)或饼图(pie), 返回的JSON内chart-type值则为 table/column/bar/line/pie 中的一个
|
||||
图表类型选择原则推荐:趋势 over time 用 line,分类对比用 column/bar,占比用 pie,原始数据查看用 table
|
||||
</rule>
|
||||
<rule>
|
||||
如果问题是图表展示相关且与生成SQL查询无关时,请参考上一次回答的SQL来生成SQL
|
||||
@@ -56,9 +57,6 @@ template:
|
||||
<rule>
|
||||
SQL查询中不能使用星号(*),必须明确指定字段名
|
||||
</rule>
|
||||
<rule>
|
||||
SQL查询中不能使用星号(*),必须明确指定字段名
|
||||
</rule>
|
||||
<rule>
|
||||
SQL查询的字段名不要自动翻译,别名必须为英文
|
||||
</rule>
|
||||
@@ -99,12 +97,17 @@ template:
|
||||
如果用户没有指定数据条数的限制,输出的查询SQL需要加上1000条的数据条数限制
|
||||
</rule>
|
||||
<rule>
|
||||
如果用户指定了数据条数的限制,该限制上限也为1000,输出的查询SQL需要加上数据条数限制
|
||||
如果用户指定的限制大于1000,则按1000处理
|
||||
</rule>
|
||||
<rule>
|
||||
若需关联多表,优先使用<m-schema>中标记为"Primary key"/"ID"/"主键"的字段作为关联条件。
|
||||
</rule>
|
||||
<rule>
|
||||
我们目前的情况适用于单指标、多分类的场景(展示table除外)
|
||||
</rule>
|
||||
|
||||
</Rules>
|
||||
|
||||
### 以下<example>帮助你理解问题及返回格式的例子,不要将<example>内的表结构用来回答用户的问题
|
||||
### 以下<example>帮助你理解问题及返回格式的例子,不要将<example>内的表结构用来回答用户的问题,<example>内的<input>为后续用户提问传入的内容,<output>为根据模版与输入的输出回答
|
||||
<example>
|
||||
<Info>
|
||||
<db-engine> PostgreSQL17.6 (Debian 17.6-1.pgdg12+1) </db-engine>
|
||||
@@ -169,7 +172,7 @@ template:
|
||||
<current-time>
|
||||
2025-08-08 11:23:00
|
||||
</current-time>
|
||||
<background-infos>
|
||||
</background-infos>
|
||||
<user-question>查询各个国家每年的GDP</user-question>
|
||||
</input>
|
||||
<output>
|
||||
@@ -182,7 +185,7 @@ template:
|
||||
<current-time>
|
||||
2025-08-08 11:23:00
|
||||
</current-time>
|
||||
<background-infos>
|
||||
</background-infos>
|
||||
<user-question>使用饼图展示去年各个国家的GDP</user-question>
|
||||
</input>
|
||||
{{"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2024' ORDER BY \"gdp\" DESC LIMIT 1000","tables":["sample_country_gdp"],"chart-type":"pie"}}
|
||||
@@ -195,7 +198,7 @@ template:
|
||||
<current-time>
|
||||
2025-08-08 11:24:00
|
||||
</current-time>
|
||||
<background-infos>
|
||||
</background-infos>
|
||||
<user-question>查询今年中国大陆的GDP</user-question>
|
||||
</input>
|
||||
{{"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2025' AND \"country\" = '中国' LIMIT 1000","tables":["sample_country_gdp"],"chart-type":"table"}}
|
||||
@@ -242,7 +245,8 @@ template:
|
||||
请使用语言:{lang} 回答,若有深度思考过程,则思考过程也需要使用 {lang} 输出
|
||||
</rule>
|
||||
<rule>
|
||||
支持的图表类型为表格(table)、柱状图(column)、条形图(bar)、折线图(line)或饼图(pie), 提供给你的<chart-type>值则为 table/column/bar/line/pie 中的一个,若没有推荐类型,则由你自己选择一个合适的类型
|
||||
支持的图表类型为表格(table)、柱状图(column)、条形图(bar)、折线图(line)或饼图(pie), 提供给你的<chart-type>值则为 table/column/bar/line/pie 中的一个,若没有推荐类型,则由你自己选择一个合适的类型。
|
||||
图表类型选择原则推荐:趋势 over time 用 line,分类对比用 column/bar,占比用 pie,原始数据查看用 table
|
||||
</rule>
|
||||
<rule>
|
||||
不需要你提供创建图表的代码,你只需要负责根据要求生成JSON配置项
|
||||
@@ -264,25 +268,35 @@ template:
|
||||
<rule>
|
||||
如果需要柱状图,JSON格式应为(如果有分类则在JSON中返回series):
|
||||
{{"type":"column", "title": "标题", "axis": {{"x": {{"name":"x轴的{lang}名称", "value": "SQL 查询 x 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "y": {{"name":"y轴的{lang}名称","value": "SQL 查询 y 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "series": {{"name":"分类的{lang}名称","value":"SQL 查询分类的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}}}}}
|
||||
必须从 SQL 查询列中提取"x"、"y"与"series"。
|
||||
柱状图使用一个分类字段(series),一个X轴字段(x)和一个Y轴数值字段(y),其中必须从SQL查询列中提取"x"、"y"与"series"。
|
||||
</rule>
|
||||
<rule>
|
||||
如果需要条形图,JSON格式应为(如果有分类则在JSON中返回series),条形图相当于是旋转后的柱状图,因此 x 轴仍为维度轴,y 轴仍为指标轴:
|
||||
{{"type":"bar", "title": "标题", "axis": {{"x": {{"name":"x轴的{lang}名称", "value": "SQL 查询 x 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "y": {{"name":"y轴的{lang}名称","value": "SQL 查询 y 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "series": {{"name":"分类的{lang}名称","value":"SQL 查询分类的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}}}}}
|
||||
必须从 SQL 查询列中提取"x"和"y"。
|
||||
条形图使用一个分类字段(series),一个X轴字段(x)和一个Y轴数值字段(y),其中必须从SQL查询列中提取"x"和"y"与"series"。
|
||||
</rule>
|
||||
<rule>
|
||||
如果需要折线图,JSON格式应为(如果有分类则在JSON中返回series):
|
||||
{{"type":"line", "title": "标题", "axis": {{"x": {{"name":"x轴的{lang}名称","value": "SQL 查询 x 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "y": {{"name":"y轴的{lang}名称","value": "SQL 查询 y 轴的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "series": {{"name":"分类的{lang}名称","value":"SQL 查询分类的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}}}}}
|
||||
必须从 SQL 查询列中提取"x"、"y"与"series"。
|
||||
折线图使用一个分类字段(series),一个X轴字段(x)和一个Y轴数值字段(y),其中必须从SQL查询列中提取"x"、"y"与"series"。
|
||||
</rule>
|
||||
<rule>
|
||||
如果需要饼图,JSON格式应为:
|
||||
{{"type":"pie", "title": "标题", "axis": {{"y": {{"name":"值轴的{lang}名称","value":"SQL 查询数值的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, "series": {{"name":"分类的{lang}名称","value":"SQL 查询分类的列(有别名用别名,去掉外层的反引号、双引号、方括号)"}}}}}}
|
||||
必须从 SQL 查询列中提取"y"与"series"。
|
||||
饼图使用一个分类字段(series)和一个数值字段(y),其中必须从SQL查询列中提取"y"与"series"。
|
||||
</rule>
|
||||
<rule>
|
||||
如果SQL中没有分类列,那么JSON内的series字段不需要出现
|
||||
</rule>
|
||||
<rule>
|
||||
如果SQL查询结果中存在可用于数据分类的字段(如国家、产品类型等),则必须提供series配置。如果不存在,则无需在JSON中包含series字段。
|
||||
</rule>
|
||||
<rule>
|
||||
我们目前的情况适用于单指标、多分类的场景(展示table除外),若SQL中包含多指标列,请选择一个最符合提问情况的指标作为值轴
|
||||
</rule>
|
||||
<rule>
|
||||
如果你无法根据提供的内容生成合适的JSON配置,则返回:{{"type":"error", "reason": "抱歉,我无法生成合适的图表配置"}}
|
||||
可以的话,你可以稍微丰富一下错误信息,让用户知道可能的原因。例如:"reason": "无法生成配置:提供的SQL查询结果中没有找到适合作为分类(series)的字段。"
|
||||
</rule>
|
||||
|
||||
<Rules>
|
||||
|
||||
Reference in New Issue
Block a user