|
@@ -10,7 +10,7 @@ from tabulate import tabulate
|
|
|
from qwen_agent.memory.SqlMemory import SqlRetriever
|
|
|
from qwen_agent.messages.context_message import ChatResponseChoice
|
|
|
from qwen_agent.sub_agent.BaseSubAgent import BaseSubAgent
|
|
|
-from qwen_agent.tools.tools import async_db
|
|
|
+from qwen_agent.tools.tools import async_db,async_xzdb
|
|
|
|
|
|
|
|
|
class LandSiteSelectionSqlAgent(BaseSubAgent):
|
|
@@ -38,7 +38,7 @@ class LandSiteSelectionSqlAgent(BaseSubAgent):
|
|
|
`xzqdm` COMMENTS '行政区代码 6位,前2位代表省,前4位代表市,前6位代表区县',
|
|
|
`dymc` COMMENTS '地块名称',
|
|
|
`yddm` COMMENTS '用地代码',
|
|
|
- `ydxz` COMMENTS '用地性质(土地用途)',
|
|
|
+ `ydxz` COMMENTS '用地性质',
|
|
|
`ydmj` COMMENTS '用地面积 单位:公顷',
|
|
|
`pfwh` COMMENTS '批复文号',
|
|
|
`pfsj` COMMENTS '批复时间',
|
|
@@ -63,9 +63,12 @@ class LandSiteSelectionSqlAgent(BaseSubAgent):
|
|
|
注意7: 问题中设计具体的地点时,需要使用round(st_distance(st_geometryfromtext('具体地点的wkt', 4490)::geography,shape::geography)::numeric,0)获取其distance, 如果问题未指定范围则使用 distance <= 5000 来限制在地点5公里内,并对其排序
|
|
|
注意8: 生成sql时,只对涉及表结构中的字段进行条件设置,不可生成不在表字段列表中的查询条件,不可生成任何不在表字段中的条件,比如周边5公里有什么设施
|
|
|
注意9: 生成sql时,必须使用 st_astext(st_centroid(shape)) as center_wkt
|
|
|
- 注意10: 查询语句必须包含 objectid, xzqmc, xzqdm, dymc, yddm, ydxz, ydmj, rjlsx, rjlxx, jzmdsx, jzmdxx, jzgdsx, jzgdxx, ldlsx, ldlxx, pfwh, pfsj st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt 这几个字段
|
|
|
+ 注意10: 查询语句必须包含 objectid, xzqmc, xzqdm, dymc, yddm, ydxz, ydmj, rjlsx, rjlxx, jzmdsx, jzmdxx, jzgdsx, jzgdxx, ldlsx, ldlxx, pfwh, pfsj, shape,st_area(shape::geography) as pfmarea, st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt 这几个字段
|
|
|
注意11: 只准生成查询 的sql 语句,不可生成任何 修改数据的语句, 比如:update, delete, insert, truncate 等
|
|
|
- 注意12:当用户问题中的土地用途是"工业用地"时,去掉"用地",使用ydxz进行模糊查询,比如ydxz like '%工业%'
|
|
|
+ 注意12:当用户问题中的用地性质是"工业用地"时,去掉"用地",使用ydxz进行模糊查询,比如ydxz like '%工业%',工业用地没有二级分类
|
|
|
+ 注意13:where语句中必须包含NOT EXISTS(select 1 from dlgis.gcs330000k3003_zdzy_gd as b where st_intersects(a.shape, b.shape)
|
|
|
+ 注意14:数据表的schema是dlgis
|
|
|
+ 注意15:from语句中给dlgis.gcs330000g2007_kzxxxgh_kgdk_kgy_dsgj设置别名a
|
|
|
"""
|
|
|
self.retriever = SqlRetriever(query_type='land_site_selection')
|
|
|
|
|
@@ -166,7 +169,7 @@ class LandSiteSelectionSqlAgent(BaseSubAgent):
|
|
|
print(f"sql_to_execute:{sql_to_execute}")
|
|
|
self.sql_code = sql_to_execute
|
|
|
a = time.time()
|
|
|
- res_tuples = await async_db.run(sql_to_execute)
|
|
|
+ res_tuples = await async_xzdb.run(sql_to_execute)
|
|
|
print('SQL Time Cost:', time.time() - a)
|
|
|
result, success = res_tuples
|
|
|
print(f"SQL 查询结果: success:{success}, result: {result}")
|