修复枚举对应错误,增加问答示例,优化提示词
This commit is contained in:
		| @@ -244,7 +244,10 @@ class OpenAICompatibleLLM(VannaBase): | |||||||
|                 [{'role': 'system', 'content': sys_temp}, {'role': 'user', 'content': user_temp}], **kwargs) |                 [{'role': 'system', 'content': sys_temp}, {'role': 'user', 'content': user_temp}], **kwargs) | ||||||
|             llm_response = str(llm_response.strip()) |             llm_response = str(llm_response.strip()) | ||||||
|             logger.info(f"llm_response:{llm_response}") |             logger.info(f"llm_response:{llm_response}") | ||||||
|             result = {"resp": orjson.loads(extract_nested_json(llm_response))} |             #优化中....... | ||||||
|  |             result = extract_nested_json(llm_response) | ||||||
|  |             logger.info(f"result:{result}") | ||||||
|  |             result = {"resp": orjson.loads(result)} | ||||||
|             logger.info(f"llm_response:{llm_response}") |             logger.info(f"llm_response:{llm_response}") | ||||||
|             sql = check_and_get_sql(llm_response) |             sql = check_and_get_sql(llm_response) | ||||||
|             logger.info(f"sql:{sql}") |             logger.info(f"sql:{sql}") | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| question_and_answer = [ | question_and_answer = [ | ||||||
|  |  | ||||||
|     {"question": "综合处有多少员工,男女员工分别有多少", |     {"question": "XX部有多少员工,男女员工分别有多少", | ||||||
|      "answer": ''' |      "answer": ''' | ||||||
|                SELECT COUNT(*)                                      AS "总人数", |                SELECT COUNT(*)                                      AS "总人数", | ||||||
|                       SUM(CASE WHEN gender = '1' THEN 1 ELSE 0 END) AS "男员工数", |                       SUM(CASE WHEN gender = '1' THEN 1 ELSE 0 END) AS "男员工数", | ||||||
| @@ -8,7 +8,7 @@ question_and_answer = [ | |||||||
|                FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p |                FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p | ||||||
|                WHERE p.internal_dept IN (SELECT "id" |                WHERE p.internal_dept IN (SELECT "id" | ||||||
|                                          FROM "IUAP_APDOC_BASEDOC"."org_orgs" START |                                          FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||||
|                WITH "name"||"shortname" LIKE '%综合处%' |                WITH "name"||"shortname" LIKE '%XX部%' | ||||||
|                CONNECT BY PRIOR "id" = "parentid" |                CONNECT BY PRIOR "id" = "parentid" | ||||||
|                    ) |                    ) | ||||||
|                       AND p.dr = 0 |                       AND p.dr = 0 | ||||||
| @@ -192,13 +192,13 @@ question_and_answer = [ | |||||||
|                                END LIMIT 1000 |                                END LIMIT 1000 | ||||||
|                   ''' |                   ''' | ||||||
|     }, { |     }, { | ||||||
|         "question": "数信中心下有多少员工", |         "question": "XX中心下有多少员工", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                   select count(*) |                   select count(*) | ||||||
|                   from YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database |                   from YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database | ||||||
|                   where internal_dept in (SELECT "id" |                   where internal_dept in (SELECT "id" | ||||||
|                                           FROM "IUAP_APDOC_BASEDOC"."org_orgs" START |                                           FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||||
|                   WITH "name"||"shortname" LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                   WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                   CONNECT BY PRIOR "id" = "parentid" |                   CONNECT BY PRIOR "id" = "parentid" | ||||||
|                       ) |                       ) | ||||||
|  |  | ||||||
| @@ -217,14 +217,14 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "数信中心下各个处室分别有多少人", |         "question": "XX中心下各个处室分别有多少人", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" |                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" | ||||||
|                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p |                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p | ||||||
|                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id |                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id | ||||||
|                     WHERE p.internal_dept IN ( |                     WHERE p.internal_dept IN ( | ||||||
|                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  |                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||||
|                         START WITH "name"||"shortname" LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                         START WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                         CONNECT BY PRIOR "id" = "parentid" |                         CONNECT BY PRIOR "id" = "parentid" | ||||||
|                     ) |                     ) | ||||||
|                     AND p.dr = 0 |                     AND p.dr = 0 | ||||||
| @@ -248,7 +248,7 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "10月数信中心有哪些有员工请假", |         "question": "10月XX中心有哪些有员工请假", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                   SELECT  p."id"                                                               AS "id", |                   SELECT  p."id"                                                               AS "id", | ||||||
|                                   p."code"                                                             AS "工号", |                                   p."code"                                                             AS "工号", | ||||||
| @@ -262,7 +262,7 @@ question_and_answer = [ | |||||||
|                     AND ps."date_value" LIKE '2025-10%' |                     AND ps."date_value" LIKE '2025-10%' | ||||||
|                     and p.internal_dept in (SELECT "id" |                     and p.internal_dept in (SELECT "id" | ||||||
|                                           FROM "IUAP_APDOC_BASEDOC"."org_orgs" START |                                           FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||||
|                   WITH "name" || "shortname" LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                   WITH "name" || "shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                   CONNECT BY PRIOR "id" = "parentid" |                   CONNECT BY PRIOR "id" = "parentid" | ||||||
|                       ) |                       ) | ||||||
|                     AND p."dr" = 0 |                     AND p."dr" = 0 | ||||||
| @@ -279,7 +279,7 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "数信中心员工年龄段分布图", |         "question": "XX中心员工年龄段分布图", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT  |                     SELECT  | ||||||
|                         CASE  |                         CASE  | ||||||
| @@ -301,10 +301,10 @@ question_and_answer = [ | |||||||
|                             WHERE "parentid" IN ( |                             WHERE "parentid" IN ( | ||||||
|                                 SELECT "id"  |                                 SELECT "id"  | ||||||
|                                 FROM "IUAP_APDOC_BASEDOC"."org_orgs"  |                                 FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||||
|                                 WHERE name || shortname LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                                 WHERE name || shortname LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                             ) OR id IN (SELECT "id"  |                             ) OR id IN (SELECT "id"  | ||||||
|                                 FROM "IUAP_APDOC_BASEDOC"."org_orgs"  |                                 FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||||
|                                 WHERE name || shortname LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%') |                                 WHERE name || shortname LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%') | ||||||
|                         ) |                         ) | ||||||
|                     GROUP BY  |                     GROUP BY  | ||||||
|                         CASE  |                         CASE  | ||||||
| @@ -318,7 +318,7 @@ question_and_answer = [ | |||||||
|                     ORDER BY "age_group" ASC LIMIT 1000 |                     ORDER BY "age_group" ASC LIMIT 1000 | ||||||
|                   ''' |                   ''' | ||||||
|     },{ |     },{ | ||||||
|         "question": "查询综合处下面的员工以及他们的年龄", |         "question": "查询XX部下面的员工以及他们的年龄", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                   SELECT p."id"                                                                   AS "员工ID", |                   SELECT p."id"                                                                   AS "员工ID", | ||||||
|                          p."name"                                                                 AS "姓名", |                          p."name"                                                                 AS "姓名", | ||||||
| @@ -331,7 +331,7 @@ question_and_answer = [ | |||||||
|                   WHERE p."dr" = 0 |                   WHERE p."dr" = 0 | ||||||
|                     AND o."id" IN (SELECT "id" |                     AND o."id" IN (SELECT "id" | ||||||
|                                    FROM "IUAP_APDOC_BASEDOC"."org_orgs" START |                                    FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||||
|                   WITH "name"||"shortname" LIKE '%综合处%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                   WITH "name"||"shortname" LIKE '%XX部%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                   CONNECT BY PRIOR "id" = "parentid") |                   CONNECT BY PRIOR "id" = "parentid") | ||||||
|                          AND p."birthday" IS NOT NULL |                          AND p."birthday" IS NOT NULL | ||||||
|                          AND p."birthday" != '' |                          AND p."birthday" != '' | ||||||
| @@ -340,7 +340,7 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "查询综合处下面的员工的平均年龄", |         "question": "查询XX部下面的员工的平均年龄", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                   SELECT ROUND(AVG(2025 - CAST(SUBSTR(p."birthday", 1, 4) AS INT)), 2) AS "平均年龄" |                   SELECT ROUND(AVG(2025 - CAST(SUBSTR(p."birthday", 1, 4) AS INT)), 2) AS "平均年龄" | ||||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p |                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||||
| @@ -348,7 +348,7 @@ question_and_answer = [ | |||||||
|                   WHERE p."dr" = 0 |                   WHERE p."dr" = 0 | ||||||
|                     AND o."id" IN (SELECT "id" |                     AND o."id" IN (SELECT "id" | ||||||
|                                    FROM "IUAP_APDOC_BASEDOC"."org_orgs" START |                                    FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||||
|                   WITH "name"||"shortname" LIKE '%综合处%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                   WITH "name"||"shortname" LIKE '%XX部%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                   CONNECT BY PRIOR "id" = "parentid") |                   CONNECT BY PRIOR "id" = "parentid") | ||||||
|                          AND p."birthday" IS NOT NULL |                          AND p."birthday" IS NOT NULL | ||||||
|                          AND p."birthday" != '' |                          AND p."birthday" != '' | ||||||
| @@ -356,7 +356,7 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "综合处有几个人,男员工,女员工分别有多少", |         "question": "XX部有几个人,男员工,女员工分别有多少", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT COUNT(*) AS "总人数",  |                     SELECT COUNT(*) AS "总人数",  | ||||||
|                     SUM(CASE WHEN p."gender" = '1' THEN 1 ELSE 0 END) AS "男员工数",  |                     SUM(CASE WHEN p."gender" = '1' THEN 1 ELSE 0 END) AS "男员工数",  | ||||||
| @@ -365,7 +365,7 @@ question_and_answer = [ | |||||||
|                     WHERE p."internal_dept" IN ( |                     WHERE p."internal_dept" IN ( | ||||||
|                         SELECT "id" |                         SELECT "id" | ||||||
|                         FROM "IUAP_APDOC_BASEDOC"."org_orgs" |                         FROM "IUAP_APDOC_BASEDOC"."org_orgs" | ||||||
|                         START WITH "name" LIKE '%综合处%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                         START WITH "name" LIKE '%XX部%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                         CONNECT BY PRIOR "id" = "parentid" |                         CONNECT BY PRIOR "id" = "parentid" | ||||||
|                     ) |                     ) | ||||||
|                     AND p."dr" = 0 |                     AND p."dr" = 0 | ||||||
| @@ -373,13 +373,13 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "综合处女员工有多少", |         "question": "XX综合部女员工有多少", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT (SELECT COUNT(*)  |                     SELECT (SELECT COUNT(*)  | ||||||
|                     FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p  |                     FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p  | ||||||
|                     WHERE p."internal_dept" IN (SELECT "id" |                     WHERE p."internal_dept" IN (SELECT "id" | ||||||
|                                FROM "IUAP_APDOC_BASEDOC"."org_orgs" |                                FROM "IUAP_APDOC_BASEDOC"."org_orgs" | ||||||
|                                START WITH "name"||"shortname" LIKE '%综合处%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                                START WITH "name"||"shortname" LIKE '%XX综合部%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                                CONNECT BY PRIOR "id" = "parentid" |                                CONNECT BY PRIOR "id" = "parentid" | ||||||
|                               ) |                               ) | ||||||
|                     AND p."gender" = '2' |                     AND p."gender" = '2' | ||||||
| @@ -388,14 +388,14 @@ question_and_answer = [ | |||||||
|                       ''' |                       ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "数信中心今天各个处室在岗人员数量", |         "question": "XX中心今天各个处室在岗人员数量", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" |                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" | ||||||
|                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p |                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p | ||||||
|                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id |                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id | ||||||
|                     WHERE p.internal_dept IN ( |                     WHERE p.internal_dept IN ( | ||||||
|                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  |                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||||
|                         START WITH "name"||"shortname" LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                         START WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                         CONNECT BY PRIOR "id" = "parentid" |                         CONNECT BY PRIOR "id" = "parentid" | ||||||
|                     )  |                     )  | ||||||
|                     AND p.id IN (SELECT person_id FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" WHERE status = '1001' AND date_value = TO_CHAR(SYSDATE, 'yyyy-MM-dd') AND dr = 0) |                     AND p.id IN (SELECT person_id FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" WHERE status = '1001' AND date_value = TO_CHAR(SYSDATE, 'yyyy-MM-dd') AND dr = 0) | ||||||
| @@ -406,17 +406,17 @@ question_and_answer = [ | |||||||
|                   ''' |                   ''' | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|         "question": "数信中心下的综合管理处有多少人", |         "question": "XX中心下的XX管理处有多少人", | ||||||
|         "answer": ''' |         "answer": ''' | ||||||
|                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" |                     SELECT o.name AS "处室名称", COUNT(p.id) AS "人数" | ||||||
|                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p |                     FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p | ||||||
|                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id |                     JOIN IUAP_APDOC_BASEDOC.org_orgs o ON p.internal_dept = o.id | ||||||
|                     WHERE p.internal_dept IN ( |                     WHERE p.internal_dept IN ( | ||||||
|                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  |                         SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||||
|                         START WITH "name"||"shortname" LIKE '%数信中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' |                         START WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||||
|                         CONNECT BY PRIOR "id" = "parentid" |                         CONNECT BY PRIOR "id" = "parentid" | ||||||
|                     ) |                     ) | ||||||
|                     AND p.dr = 0 AND o.name LIKE '%综合管理处%' |                     AND p.dr = 0 AND o.name LIKE '%XX管理处%' | ||||||
|                     GROUP BY o.name |                     GROUP BY o.name | ||||||
|                     ORDER BY "人数" DESC  |                     ORDER BY "人数" DESC  | ||||||
|                     LIMIT 1000 |                     LIMIT 1000 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 yujj128
					yujj128