修复枚举对应错误,增加问答示例,优化提示词

This commit is contained in:
yujj128
2025-10-16 23:25:33 +08:00
parent 1d03bdbf76
commit 4030789b2f
3 changed files with 149 additions and 18 deletions

View File

@@ -88,7 +88,7 @@ template:
<rule-detail>若问题与图表展示相关,根据查询意图推荐最合适的图表类型,参考以下原则: <rule-detail>若问题与图表展示相关,根据查询意图推荐最合适的图表类型,参考以下原则:
- **折线图**:展示数据随时间(或其他连续维度)的**趋势**。 - **折线图**:展示数据随时间(或其他连续维度)的**趋势**。
- **柱状图/条形图**:展示不同**分类**之间的**数值对比**。柱状图常用于分类较少,条形图常用于分类较多或分类名较长。 - **柱状图/条形图**:展示不同**分类**之间的**数值对比**。柱状图常用于分类较少,条形图常用于分类较多或分类名较长。
- **饼图**:展示单一维度各部分占**整体的比例**且分类不宜过多建议少于7个 - **饼图**:展示单一维度各部分占**整体的比例**且分类不宜过多建议少于7个,展示男女比例例外,禁用饼图
- **表格**:用于展示**详细的原始数据**,或用户明确要求查表的场景。 - **表格**:用于展示**详细的原始数据**,或用户明确要求查表的场景。
</rule-detail> </rule-detail>
<rule-detail>返回的chart-type值必须是 table, column, bar, line, pie 中的一个。</rule-detail> <rule-detail>返回的chart-type值必须是 table, column, bar, line, pie 中的一个。</rule-detail>
@@ -228,6 +228,9 @@ template:
<rule> <rule>
你需要在JSON内生成一个图表的标题放在"title"字段内,这个标题需要尽量精简 你需要在JSON内生成一个图表的标题放在"title"字段内,这个标题需要尽量精简
</rule> </rule>
<rule>
涉及查询男女性别比例时建议采用表格或者柱状图展示,禁止采用饼状图
</rule>
<rule> <rule>
如果需要表格JSON格式应为 如果需要表格JSON格式应为
{{"type":"table", "title": "标题", "columns": [{{"name":"{lang}字段名1", "value": "SQL 查询列 1(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, {{"name": "{lang}字段名 2", "value": "SQL 查询列 2(有别名用别名,去掉外层的反引号、双引号、方括号)"}}]}} {{"type":"table", "title": "标题", "columns": [{{"name":"{lang}字段名1", "value": "SQL 查询列 1(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, {{"name": "{lang}字段名 2", "value": "SQL 查询列 2(有别名用别名,去掉外层的反引号、双引号、方括号)"}}]}}
@@ -276,11 +279,19 @@ template:
<input> <input>
<sql>SELECT `u`.`email` AS `邮箱`, `u`.`id` AS `ID`, `u`.`account` AS `账号`, `u`.`enable` AS `启用状态`, `u`.`create_time` AS `创建时间`, `u`.`language` AS `语言`, `u`.`default_oid` AS `所属组织id`, `u`.`name` AS `姓名`, `u`.`phone` AS `电话`, FROM `per_user` `u` LIMIT 1000</sql> <sql>SELECT `u`.`email` AS `邮箱`, `u`.`id` AS `ID`, `u`.`account` AS `账号`, `u`.`enable` AS `启用状态`, `u`.`create_time` AS `创建时间`, `u`.`language` AS `语言`, `u`.`default_oid` AS `所属组织id`, `u`.`name` AS `姓名`, `u`.`phone` AS `电话`, FROM `per_user` `u` LIMIT 1000</sql>
<user-question>查询所有用户信息</user-question> <user-question>查询所有用户信息</user-question>
<chart-type></chart-type> <chart-type>table</chart-type>
</input> </input>
<output> <output>
{{"type":"table","title":"所有用户信息","columns":[{{"name":"邮箱","value":"email"}},{{"name":"ID","value":"id"}},{{"name":"账号","value":"account"}},{{"name":"启用状态","value":"enable"}},{{"name":"创建时间","value":"create_time"}},{{"name":"语言","value":"language"}},{{"name":"所属组织id","value":"default_oid"}},{{"name":"姓名","value":"name"}},{{"name":"电话","value":"phone"}}]}} {{"type":"table","title":"所有用户信息","columns":[{{"name":"邮箱","value":"email"}},{{"name":"ID","value":"id"}},{{"name":"账号","value":"account"}},{{"name":"启用状态","value":"enable"}},{{"name":"创建时间","value":"create_time"}},{{"name":"语言","value":"language"}},{{"name":"所属组织id","value":"default_oid"}},{{"name":"姓名","value":"name"}},{{"name":"电话","value":"phone"}}]}}
</output> </output>
<input>
<sql>SELECT 'XX中心' AS "部门名称" SUM(CASE WHEN p."gender" = '1' THEN 1 ELSE 0 END) AS "男员工数",SUM(CASE WHEN p."gender" = '2' THEN 1 ELSE 0 END) AS "女员工数" FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p WHERE p."internal_dept" IN (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" START WITH "name" LIKE '%数信中心%' AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%' CONNECT BY PRIOR "id" = "parentid") AND p."dr" = 0 LIMIT 1000;</sql>
<user-question>XX中心男女人数</user-question>
<chart-type>table</chart-type>
</input>
<output>
{{'type': 'table', 'title': 'XX中心男女员工统计', 'columns': [{{'name': '部门名称', 'value': '部门名称'}}, {{'name': '男员工数', 'value': '男员工数'}}, {{'name': '女员工数', 'value': '女员工数'}}]}}
</output>
</example> </example>
<example> <example>
<input> <input>

View File

@@ -421,7 +421,132 @@ question_and_answer = [
ORDER BY "人数" DESC ORDER BY "人数" DESC
LIMIT 1000 LIMIT 1000
''' '''
} },
{
"question": "XX中心男女各多少人",
"answer": '''
SELECT
SUM(CASE WHEN p."gender" = '1' THEN 1 ELSE 0 END) AS "男员工数",
SUM(CASE WHEN p."gender" = '2' THEN 1 ELSE 0 END) AS "女员工数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE p."internal_dept" IN (
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name" LIKE '%XX中心%' AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
LIMIT 1000;
'''
},
{
"question": "XX中心在藏最长时间的人是谁待了多少天了",
"answer": '''
SELECT p."name" AS "姓名", COUNT(ps."id") AS "在藏天数"
FROM YJOA_APPSERVICE_DB."t_yj_person_status" ps
JOIN YJOA_APPSERVICE_DB."t_pr3rl2oj_yj_person_database" p ON ps."person_id" = p."code"
WHERE ps."is_in_tibet" = 1
AND p."internal_dept" IN (SELECT id FROM IUAP_APDOC_BASEDOC."org_orgs" START WITH name||shortname LIKE '%XX中心%' AND dr=0 AND enable=1 AND code LIKE '%CYJ%' CONNECT BY PRIOR "id" = "parentid")
AND ps."dr" = 0
AND p."dr" = 0
GROUP BY p."name"
ORDER BY "在藏天数" DESC
LIMIT 1
'''
},
{
"question": "张三今天早上9点半之前今天早上0点之后有打卡记录吗",
"answer": '''
SELECT a."person_name" AS "姓名", a."attendance_time" AS "考勤时间", a."attendance_address" AS "考勤地址",
CASE
WHEN a."status" = 1 THEN '在岗'
WHEN a."status" = 2 THEN '出差'
WHEN a."status" = 3 THEN '休假'
END AS "状态",
CASE
WHEN a."enter_or_exit" = 1 THEN ''
WHEN a."enter_or_exit" = 2 THEN ''
END AS "进出类型"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a
WHERE a."person_name" = '张三'
AND a."attendance_time" >= '2025-10-16 00:00:00'
AND a."attendance_time" < '2025-10-16 09:30:00'
AND a."dr" = 0
ORDER BY a."attendance_time" DESC LIMIT 1000
'''
},
{
"question": "XX中心正式人员有多少各个处室有多少",
"answer": '''
SELECT o.name AS "处室名称", COUNT(p.id) AS "正式员工数量"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p.internal_dept = o.id
WHERE p.person_type = 'YG'
AND p.dr = 0
AND o.enable = 1
AND o.dr = 0
AND (
o.id IN (
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
AND "enable" = 1
AND "dr" = 0
CONNECT BY PRIOR "id" = "parentid"
)
)
GROUP BY o.name
ORDER BY "正式员工数量" DESC
LIMIT 1000;
'''
},
{
"question": "XX部门年龄最小的员工是谁多少岁",
"answer": '''
SELECT p."name" AS "姓名",
CAST(p."birthday" AS DATE) AS "出生日期",
EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM CAST(p."birthday" AS DATE)) AS "年龄"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE p."internal_dept" IN (
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name" || "shortname" LIKE '%XX%'
AND "dr" = 0
AND "enable" = 1
AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
AND p."birthday" IS NOT NULL
AND p."birthday" != ''
ORDER BY "年龄" ASC
LIMIT 1
'''
},
{
"question": "有多少人外部单位是XX公司的",
"answer": '''
SELECT "external_unit" AS "外部单位", COUNT(*) AS "人数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE "external_unit" LIKE '%XX%' AND "dr" = 0
GROUP BY "external_unit" LIMIT 1000
'''
},
{
"question": "XX部门博士多少人",
"answer": '''
SELECT COUNT(*) AS "博士人数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name"||"shortname" LIKE '%XX%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
AND p."highest_degree" = '3'
LIMIT 1000
'''
},
] ]

View File

@@ -12,6 +12,8 @@ train_document='''
根据部门名称查询部门时除了全称name简称shortname也重要信息 根据部门名称查询部门时除了全称name简称shortname也重要信息
数信部是简称 数信部是简称
部门表org_orgs中的level字段 {1公司2一级部门3二级部门.....} 部门表org_orgs中的level字段 {1公司2一级部门3二级部门.....}
internal_dept和internal_unit是部门编号不是名称注意区分
查询部门信息时尽量使用internal_dept而非internal_unit<UNK>
''' '''
person_database_ddl = """ person_database_ddl = """
@@ -63,9 +65,9 @@ person_database_ddl = """
{ {
"name": "external_unit", "name": "external_unit",
"type": "VARCHAR(600)", "type": "VARCHAR(600)",
"comment": "外部单位", "comment": "外部单位名称",
"role": "dimension", "role": "dimension",
"tags": ["组织信息", "外部单位"] "tags": ["组织信息", "外部单位","外部单位名称"]
}, },
{ {
"name": "photo", "name": "photo",
@@ -472,13 +474,6 @@ person_database_ddl = """
"type": "foreign_key", "type": "foreign_key",
"comment": "关联部门表" "comment": "关联部门表"
}, },
{
"from": "internal_unit",
"to_table": "IUAP_APDOC_BASEDOC.org_orgs",
"to_field": ["id","parentid"],
"type": "foreign_key",
"comment": "关联部门表"
},
], ],
"tags": ["人员管理", "人力资源", "审批流程", "基本信息", "工作信息"], "tags": ["人员管理", "人力资源", "审批流程", "基本信息", "工作信息"],
@@ -695,9 +690,9 @@ person_attendance_ddl = '''
"type": "INT", "type": "INT",
"comment": "状态", "comment": "状态",
"value": { "value": {
"0": "在岗", "1": "在岗",
"1": "出差", "2": "出差",
"2": "休假" "3": "休假"
}, },
"role": "dimension", "role": "dimension",
"tags": ["状态标识", "人员在岗状态","枚举"] "tags": ["状态标识", "人员在岗状态","枚举"]
@@ -738,8 +733,8 @@ person_attendance_ddl = '''
"type": "INT", "type": "INT",
"comment": "进出类型", "comment": "进出类型",
"value": { "value": {
"0": "", "1": "",
"1": "" "2": ""
}, },
"role": "dimension", "role": "dimension",
"tags": ["进出标识", "打卡方向"] "tags": ["进出标识", "打卡方向"]