Browse Source

智能选址agent,支持切换数据源

liutao 2 months ago
parent
commit
fd5936ecf7

+ 0 - 0
aiAgent_gd/qwen_agent/memory/data/plans/plan_examples_找图找地.jsonl → aiAgent_gd/qwen_agent/memory/data/plans/plan_examples_找图找数.jsonl


+ 3 - 3
aiAgent_gd/qwen_agent/memory/data/sqls/sql_examples_智能选址.jsonl

@@ -2,16 +2,16 @@
   {
     "query_type": "land_site_selection",
     "query": "帮我在萧山区推荐几块50亩左右的工业用地,数据表是控制性详细规划",
-    "sql_code": "select objectid from sde.kzxxxgh where xzqmc = '萧山区' and ydxz like '%工业%' and abs(ydmj - 50*0.0667) <= 1  order by ydmj nulls last limit 10"
+    "sql_code": "select objectid from sde.kzxxxgh where xzqmc = '萧山区' and ydxz like '%工业%' and abs(ydmj - 50*0.0667) <= 1  order by ydmj nulls last limit 5"
   },
   {
     "query_type": "land_site_selection",
     "query": "帮我在萧山区推荐一宗1公顷左右的学校用地,数据表是控制性详细规划",
-    "sql_code": "select objectid from sde.kzxxxgh where xzqmc = '萧山区' and ydxz like '%学校%' and abs(ydmj - 1) <= 1 order by ydmj nulls last limit 10"
+    "sql_code": "select objectid from sde.kzxxxgh where xzqmc = '萧山区' and ydxz like '%学校%' and abs(ydmj - 1) <= 1 order by ydmj nulls last limit 1"
   },
   {
     "query_type": "land_site_selection",
     "query": "帮我在萧山区推荐几块50亩左右的工业用地,数据表是公告地块",
-    "sql_code": "select id from sde.ecgap_klyzy where xzqmc = '萧山区' and tdyt like '%工业%' and abs(dkmj-5) <= 1  order by dkmj nulls last limit 10"
+    "sql_code": "select id from sde.ecgap_klyzy where xzqmc = '萧山区' and tdyt like '%工业%' and abs(dkmj-5) <= 1  order by dkmj nulls last limit 5"
   }
 ]

+ 1 - 1
aiAgent_gd/qwen_agent/planning/plan_dispatcher.py

@@ -23,7 +23,7 @@ BIDDING_PLANS = {
     "Gis": "gis图形相关的分析和arcgis server图层查询和空间分析,擅长进行图形的相交等空间叠加分析计算。如: 上传的shp与工业用地图层空间分析的相交结果",
     "KnowledgeChat": "如果用户的问题和自然资源的知识有关,可以选择知识库问答接口",
     "LandSiteSelectionPlan": "土地智能选址分析,如:请帮我推荐杭州市50亩左右的工业用地?",
-    "LandFindPlan": "找图找,如:请帮我查一下萧山区永久基本农田面积大于100亩的地块?",
+    "LandFindPlan": "找图找,如:请帮我查一下萧山区永久基本农田面积大于100亩的地块?",
     "LandSupplyPlan": "土地供应合同分析,用于Question中包含了[一个具体的]区域名称选择、土地供应情况。如:请分析近几年杭州市住宅用地出让情况?",
     "LandUsePlan": "土地利用现状,用于Question中包含了[一个具体的]区域名称选择、土地利用现状情况,包括土地的耕地面积、湿地面积等。如:2022年浙江省土地利用现状情况?",
     "LandApprovalPlan": "土地报批项目,用于Question中包含了[一个具体的]区域名称选择、土地报批项目情况。如:瑞安市2023年报批项目总面积?",

+ 1 - 1
aiAgent_gd/qwen_agent/sub_agent/sql/land_site_selection_sql_agent.py

@@ -74,7 +74,7 @@ class LandSiteSelectionSqlAgent(BaseSubAgent):
         注意3: 使用 order by 进行排序时。必须使用 nulls last 确保 null值不会对排序产生影响,使用方法如下: order by xxxx desc nulls last 或者 order by xxxx nulls last
         注意4: 当用户问题中的面积等于不是一个确定值的时候,如‘面积为xx亩左右’或‘面积为xx平方米左右’或‘面积为xx公顷左右’, 需要条件中添加 abs(ydmj - xx) <= 1, 将面积差控制在1公顷之内。使用 ‘order by abs(ydmj - xx)  nulls last’ 来进行排序
         注意5: 当用户问题中的面积是一个确定值的时候,如‘面积为xx亩’或‘面积为xx平方米’或‘面积为xx公顷左右’, 需要条件中添加 abs(ydmj - xx) <= 1, 将面积差控制在1公顷之内。使用 ‘order by abs(ydmj - xx)  nulls last’ 来进行排序
-        注意6: 查询出地块。必须要对ydmj进行desc排序。查询地块有数量限制时,比如'1宗','一宗','1块',使用limit 1语句;未限定时,只查询10宗,使用limit 10语句
+        注意6: 查询出地块。必须要对ydmj进行desc排序。查询地块有数量限制时,比如'1宗','一宗','1块',使用limit 1语句;未限定时,只查询5宗,使用limit 5语句
         注意7: 问题中设计具体的地点时,需要使用round(st_distance(st_geometryfromtext('具体地点的wkt', 4490)::geography,shape::geography)::numeric,0)获取其distance, 如果问题未指定范围则使用 distance <= 5000 来限制在地点5公里内,并对其排序
         注意8: 控制性详细规划表查询语句select种只包含objectid字段,公告地块表查询语句select种只包含id字段
         注意9: 只准生成查询 的sql 语句,不可生成任何 修改数据的语句, 比如:update, delete, insert, truncate 等

+ 0 - 9
aiAgent_gd/run_server_async.py

@@ -194,15 +194,6 @@ async def klyzyQuery(id: str):
     return json.loads(result)
 
 
-@app.get("/queryGeometryList")
-async def queryGeometryList(items):
-    sql = f'select st_asgeojson(shape) as geom from dlgis.gcs330000g2007_kzxxxgh_kgdk_kgy_dsgj where objectid in {items}'
-    res_tuples = await async_xzdb.run(sql)
-    result, success = res_tuples
-    print(success, result)
-    return json.loads(result)
-
-
 @app.get("/queryYjjbntGeometry")
 async def queryYjjbntGeometry(id: int):
     sql = f'select *,st_astext(shape) as geom from dlgis.gcs330000g2001_yjjbnt_gx_xsb where objectid = {id}'