prompt_template.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. """
  2. SQL生成提示词模板
  3. 基于控制性详细规划表(sde.kzxxxgh)和公告地块表(sde.ecgap_klyzy)的字段信息
  4. """
  5. PROMPT_TEMPLATE = """
  6. 请根据以下两个表的字段信息生成SQL查询语句:
  7. 1. 控制性详细规划表 (sde.kzxxxgh):
  8. - id: 主键ID
  9. - xzqmc: 所属区县(行政区代码)
  10. - xzqdm: 行政区代码(6位,前2位代表省,前4位代表市,前6位代表区县)
  11. - dymc: 单元名称
  12. - yddm: 用地代码
  13. - ydxz: 用地性质
  14. - ydmj: 用地面积(单位:公顷)
  15. - pfwh: 批复文号
  16. - pfsj: 批复时间
  17. - rjlsx: 容积率上限
  18. - rjlxx: 容积率下限
  19. - jzmdsx: 建筑密度上限
  20. - jzmdxx: 建筑密度下限
  21. - jzgdsx: 建筑高度上限
  22. - jzgdxx: 建筑高度下限
  23. - ldlxx: 绿地率下限
  24. - ldlxx: 绿地率下限
  25. - shape: 地块图形wkt
  26. 2. 公告地块表 (sde.ecgap_klyzy):
  27. - id: 主键ID
  28. - xzqmc: 所属区县(行政区代码)
  29. - xzqdm: 行政区代码(6位,前2位代表省,前4位代表市,前6位代表区县)
  30. - dkmc: 地块名称
  31. - dkid: 地块id
  32. - address: 土地坐落
  33. - dkmj: 土地面积(单位:亩)
  34. - tdyt: 土地用途
  35. - shape: 地块图形wkt
  36. - sfsj: 是否上架(1表示已上架,0表示未上架)
  37. 重要注意事项:
  38. 1. 只准生成查询的SQL语句,不可生成任何修改数据的语句,包括但不限于:
  39. - UPDATE
  40. - DELETE
  41. - INSERT
  42. - TRUNCATE
  43. - DROP
  44. - ALTER
  45. 等修改数据的操作
  46. 2. 所有查询必须包含 shape is not null 条件,以过滤掉所有空图形数据
  47. 3. 面积字段和单位说明:
  48. - 控制性详细规划表(sde.kzxxxgh):使用 ydmj 字段,单位为公顷
  49. - 公告地块表(sde.ecgap_klyzy):使用 dkmj 字段,单位为亩
  50. - 注意单位换算:1公顷 = 15亩
  51. 4. 查询字段限制:
  52. - SELECT 语句中只能查询 id 字段
  53. - 不允许使用 SELECT * 或其他字段
  54. - 示例:SELECT id FROM table WHERE condition;
  55. 5. 使用LIMIT进行数量限制,具体规则如下:
  56. - 如果用户问题中指定了数量(如3宗、5块),则SQL中使用对应的LIMIT值
  57. - 如果未限定数量或限定数量大于5,则SQL中使用LIMIT 5
  58. 6. 其他注意事项:
  59. - 确保SQL语句的语法正确性
  60. - 注意字段名称的准确性
  61. - 合理使用索引字段(如id、xzqmc等)
  62. - 对于空间查询,注意使用正确的空间函数和坐标系
  63. 历史对话和相似示例:
  64. {chat_history}
  65. 用户问题:{question}
  66. 请根据以上字段信息和注意事项,生成符合要求的SQL查询语句。在生成SQL时,请确保:
  67. 1. 只使用SELECT语句
  68. 2. 只查询id字段
  69. 3. 包含shape is not null条件
  70. 4. 正确使用面积字段和单位
  71. 5. 使用LIMIT进行数量限制,具体规则如下:
  72. - 如果用户问题中指定了数量(如3宗、5块),则SQL中使用对应的LIMIT值
  73. - 如果未限定数量或限定数量大于5,则SQL中使用LIMIT 5
  74. 6. 遵循其他注意事项
  75. 请按照以下格式输出,每个部分之间用空行分隔:
  76. 1. Question: 分析用户问题
  77. 2. Thought: 思考查询逻辑
  78. 3. Plan: 制定查询计划
  79. 4. SQL: 生成SQL代码
  80. ```sql
  81. SELECT id FROM table
  82. WHERE condition
  83. LIMIT 5;
  84. ```
  85. 请确保SQL语句是完整且可执行的,并且SQL代码块是独立的部分。"""
  86. def get_prompt():
  87. """
  88. 获取提示词模板
  89. """
  90. return PROMPT_TEMPLATE