feat:提示词约束
This commit is contained in:
		| @@ -48,7 +48,7 @@ def create_vana(): | ||||
|             "api_base": config('CHAT_MODEL_BASE_URL', default=''), | ||||
|             "model": config('CHAT_MODEL_NAME', default=''), | ||||
|             'temperature':config('CHAT_MODEL_TEMPERATURE', default=0.7, cast=float), | ||||
|             'max_tokens':config('CHAT_MODEL_MAX_TOKEN', default=20000), | ||||
|             'max_tokens':config('CHAT_MODEL_MAX_TOKEN', default=5000), | ||||
|         }, | ||||
|     ) | ||||
|  | ||||
|   | ||||
| @@ -63,12 +63,12 @@ template: | ||||
|             - **默认行为**:若提问未指定排序,**默认按时间字段降序排序**(即最新数据在前)。 | ||||
|             - **格式化**:若提问要求时间/日期/年月/年,且未指定格式,则分别格式化为 'yyyy-MM-dd HH:mm:ss' / 'yyyy-MM-dd' / 'yyyy-MM' / 'yyyy',语法需适配当前数据库引擎。(达梦数据库如果时间字段是varchar类型也可以) | ||||
|           </rule-detail> | ||||
|           <rule-title> | ||||
|            解析用户问题,识别并替换所有已知的等价短语: | ||||
|           <rule-detail> | ||||
|            解析用户问题,识别并替换所有已知的等价短语,将前面的短语换成后面得等价短语,: | ||||
|             ** 数信部 -> 数字信息部 | ||||
|             ** 安质部 -> 安全质量部 | ||||
|            | ||||
|           </rule-title> | ||||
|           例如:查询数信部有多少人->查询数字信息部有多少人 | ||||
|           </rule-detail> | ||||
|         </rule> | ||||
|         <rule> | ||||
|           <rule-title>聚合与计算</rule-title> | ||||
| @@ -77,7 +77,8 @@ template: | ||||
|           <rule-detail>使用了函数(如 COUNT(), CAST(), SUM())的字段,必须为其指定一个英文别名。</rule-detail> | ||||
|           <rule-detail>计算占比或百分比时,结果保留两位小数,并以 '%' 符号结尾。示例:ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM table), 2) || '%' (PostgreSQL语法)</rule-detail> | ||||
|           <rule-detail>若查询结果包含枚举字段(如 gender=1,2),必须使用 CASE WHEN 语句将其转换为可读的标签。示例: SELECT CASE WHEN "gender" = '1' THEN '男' WHEN "gender" = '2' THEN '女' END AS "gender"</rule-detail> | ||||
|          <rule-detail>重点!重点!涉及查询orgs表时,部门存在多层级,需要递归查询。语法示例:SELECT "id" | ||||
|          <rule-detail>重点!重点!重点!涉及查询orgs表时,部门存在多层级,必须递归查询。使用 start .. with 语法。递归语法示例: | ||||
|                   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" | ||||
|   | ||||
| @@ -182,6 +182,23 @@ org_and_attend_q_a = [ | ||||
|                   CONNECT BY PRIOR "id" = "parentid") AND ps."date_value" LIKE '2025-10%' AND ps."dr" = 0 AND p."dr" = 0 | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     },{ | ||||
|         "question": "10月迟到人数最多的部门", | ||||
|                "answer": ''' | ||||
|                          SELECT o."name" AS "部门名称", COUNT(DISTINCT ps."person_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" | ||||
|                                   JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id" | ||||
|                          WHERE ps."status" = '1006' | ||||
|                            AND ps."date_value" LIKE '2025-10%' | ||||
|                            AND ps."dr" = 0 | ||||
|                            AND o."dr" = 0 | ||||
|                            AND o."enable" = 1 | ||||
|                            AND o."code" LIKE '%CYJ%' | ||||
|                          GROUP BY o."name" | ||||
|                          ORDER BY COUNT(DISTINCT ps."person_id") DESC LIMIT 1 | ||||
|                          ''' | ||||
|     } | ||||
|  | ||||
| ] | ||||
|   | ||||
| @@ -1,32 +1,7 @@ | ||||
| question_and_answer = [ | ||||
|  | ||||
|     {"question": "XX部有多少员工,男女员工分别有多少", | ||||
|      "answer": ''' | ||||
|                SELECT COUNT(*)                                      AS "总人数", | ||||
|                       SUM(CASE WHEN gender = '1' THEN 1 ELSE 0 END) AS "男员工数", | ||||
|                       SUM(CASE WHEN 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"||"shortname" LIKE '%XX部%' | ||||
|                CONNECT BY PRIOR "id" = "parentid" | ||||
|                    ) | ||||
|                       AND p.dr = 0 | ||||
|                    LIMIT 1000; | ||||
|                ''' | ||||
|      }, | ||||
|     { | ||||
|         "question": "外部单位是联通下面有哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT "id"            AS "id", | ||||
|                          "code"          AS "工号", | ||||
|                          "name"          AS "姓名", | ||||
|  | ||||
|                          "external_unit" AS "外部单位" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                   WHERE "external_unit" LIKE '%联通%' LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|  | ||||
|     { | ||||
|         "question": "9月有多少哪些员工在休假", | ||||
|         "answer": ''' | ||||
| @@ -362,21 +337,7 @@ question_and_answer = [ | ||||
|                       LIMIT 1000; | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "XX综合部女员工有多少", | ||||
|         "answer": ''' | ||||
|                   SELECT (SELECT COUNT(*) | ||||
|                           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."gender" = '2' | ||||
|                          AND p."dr" = 0 | ||||
|                       ) AS "女员工数" | ||||
|                   ''' | ||||
|     }, | ||||
|  | ||||
|     { | ||||
|         "question": "XX中心今天各个处室在岗人员数量", | ||||
|         "answer": ''' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 雷雨
					雷雨