import ollama import time start_time = time.time() msg = "三亚市自然资源和规划局计划在天涯区行政区划范围内选取适宜地块作为餐饮用地,要求其不在永久基本农田范围内,远离火葬场500m,距离小学大于500m,坡度小于25度,距离医院小于500米,用地面积在30-50亩之间。" prompt = f"""请扮演文本提取工具,把这句话:"{msg}",基于以下因子选择、选址范围和用地类型提取其对应的相关数据,提取结果请严格将json格式字符串输出并保障寄送格式正确无误, 选址范围 = ['抱坡区','天涯区','崖州区','海棠区','吉阳区' ], 因子选择 = [ "高程", "坡度", "永久基本农田", "城镇开发边界内", "生态保护红线", "文化保护区", "自然保护地", "风景名胜区", "国有使用权", "河道管理线", "水库", "公益林", "火葬场", "垃圾处理场", "污水处理场", "高压线", "变电站", "古树", "城市道路", "主要出入口", "文化活动设施", "体育运动场所", "排水", "供水", "燃气", "电力", "电信", "十五分钟社区生活圈邻里中心", "社区服务设施", "零售商业场所", "医疗卫生设施", "幼儿园服务半径", "小学服务半径", "为老服务设施" ] 用地类型=['园地', '耕地', '林地', '草地', '湿地', '公共卫生用地', '老年人社会福利用地', '儿童社会福利用地', '残疾人社会福利用地', '其他社会福利用地', '零售商业用地', '批发市场用地', '餐饮用地', '旅馆用地', '公用设施营业网点用地', '娱乐用地', '康体用地', '一类工业用地', '二类工业用地', '广播电视设施用地', '环卫用地', '消防用地', '干渠', '水工设施用地', '其他公用设施用地', '公园绿地', '防护绿地', '广场用地', '军事设施用地', '使领馆用地', '宗教用地', '文物古迹用地', '监教场所用地', '殡葬用地', '其他特殊用地', '河流水面', '湖泊水面', '水库水面', '坑塘水面', '沟渠', '冰川及常年积雪', '渔业基础设施用海', '增养殖用海', '捕捞海域', '工业用海', '盐田用海', '固体矿产用海', '油气用海', '可再生能源用海', '海底电缆管道用海', '港口用海', '农业设施建设用地', '耕地', '园地', '林地', '工矿用地', '畜禽养殖设施建设用地', '水产养殖设施建设用地', '城镇住宅用地', '草地', '湿地', '留白用地', '陆地水域', '游憩用海', '特殊用海', '特殊用地', '其他海域', '居住用地', '绿地与开敞空间用地', '水田', '水浇地', '旱地', '果园', '茶园', '橡胶园', '其他园地', '乔木林地', '竹林地', '城镇社区服务设施用地', '农村宅基地', '农村社区服务设施用地', '机关团体用地', '科研用地', '文化用地', '教育用地', '体育用地', '医疗卫生用地', '社会福利用地', '商业用地', '商务金融用地', '二类农村宅基地', '图书与展览用地', '文化活动用地', '高等教育用地', '中等职业教育用地', '体育训练用地', '其他交通设施用地', '供水用地', '排水用地', '供电用地', '供燃气用地', '供热用地', '通信用地', '邮政用地', '医院用地', '基层医疗卫生设施用地', '田间道', '盐碱地', '沙地', '裸土地', '裸岩石砾地', '村道用地', '村庄内部道路用地', '渔业用海', '工矿通信用海', '其他土地', '公共管理与公共服务用地', '仓储用地', '交通运输用地', '公用设施用地', '交通运输用海', '航运用海', '路桥隧道用海', '风景旅游用海', '文体休闲娱乐用海', '军事用海', '其他特殊用海', '空闲地', '田坎', '港口码头用地', '管道运输用地', '城市轨道交通用地', '城镇道路用地', '交通场站用地', '一类城镇住宅用地', '二类城镇住宅用地', '三类城镇住宅用地', '一类农村宅基地', '商业服务业用地', '三类工业用地', '一类物流仓储用地', '二类物流仓储用地', '三类物流仓储用地', '盐田', '对外交通场站用地', '公共交通场站用地', '社会停车场用地', '中小学用地', '幼儿园用地', '其他教育用地', '体育场馆用地', '灌木林地', '其他林地', '天然牧草地', '人工牧草地', '其他草地', '森林沼泽', '灌丛沼泽', '沼泽草地', '其他沼泽地', '沿海滩涂', '内陆滩涂', '红树林地', '乡村道路用地', '种植设施建设用地', '娱乐康体用地', '其他商业服务业用地', '工业用地', '采矿用地', '物流仓储用地', '储备库用地', '铁路用地', '公路用地', '机场用地'] landType是用地类型 districtName是选址范围 area是用地大小,单位统一转换为亩 factors.type是因子选择 其他公里、千米的单位转换为米 输出的json格式数据如下: {{ "districtName": "抱坡区", "landType": "耕地", "area": {{ "min": 30, "max": 50 }}, "factors": [ {{ "type": "水库", "condition": "大于", "value": "100" }}, {{ "type": "永久基本农田", "condition": "不相交" }}, {{ "type": "城镇开发边界内", "condition": "包含" }}, {{ "type": "医疗卫生设施", "condition": "小于", "value": "500" }}, ] }} 把json中"condition"的值改为"gt"、"lt"、"get"、"let"、"between","not_intersect"、"intersect"、"not_contain"、"contain"、"between" """ try: res = ollama.generate( model="qwen2:7b", stream=False, prompt=prompt, options={"temperature": 0}, format="json", keep_alive=-1 ) print(res["response"]) except Exception as e: print(f"生成过程中出现错误: {e}") end_time = time.time() # 计算时间差 elapsed_time = end_time - start_time print(f"耗时: {elapsed_time} 秒")