|
@@ -10,6 +10,16 @@ import os
|
|
|
from vocal import voice_text
|
|
|
from voice_translation_test import vocal_text
|
|
|
from flask_cors import CORS
|
|
|
+from dotenv import load_dotenv
|
|
|
+from embed import embed
|
|
|
+from query import query
|
|
|
+from get_vector_db import get_vector_db
|
|
|
+import time
|
|
|
+
|
|
|
+load_dotenv()
|
|
|
+TEMP_FOLDER = os.getenv('TEMP_FOLDER', './_temp')
|
|
|
+os.makedirs(TEMP_FOLDER, exist_ok=True)
|
|
|
+
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
CORS(app)
|
|
@@ -35,6 +45,46 @@ os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
|
|
|
|
|
# 后台接口
|
|
|
|
|
|
+@app.route('/embed', methods=['POST'])
|
|
|
+def route_embed():
|
|
|
+ start_time = time.time()
|
|
|
+ if 'file' not in request.files:
|
|
|
+ return jsonify({"error": "No file part"}), 400
|
|
|
+
|
|
|
+ file = request.files['file']
|
|
|
+
|
|
|
+ if file.filename == '':
|
|
|
+ return jsonify({"error": "No selected file"}), 400
|
|
|
+
|
|
|
+ embedded = embed(file)
|
|
|
+ end_time = time.time()
|
|
|
+ print("Time taken for embedding: ", end_time - start_time)
|
|
|
+
|
|
|
+ if embedded:
|
|
|
+ return jsonify({"message": "File embedded successfully"}), 200
|
|
|
+
|
|
|
+ return jsonify({"error": "File embedded unsuccessfully"}), 400
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def route_query(msg):
|
|
|
+ response = query(msg)
|
|
|
+ if response:
|
|
|
+ resObj = {}
|
|
|
+ resObj["data"] = response
|
|
|
+ resObj["code"] = 200
|
|
|
+ resObj["type"] = "answer"
|
|
|
+
|
|
|
+ return resObj
|
|
|
+
|
|
|
+ return {"error": "Something went wrong"}, 400
|
|
|
+
|
|
|
+@app.route('/delete', methods=['DELETE'])
|
|
|
+def route_delete():
|
|
|
+ db = get_vector_db()
|
|
|
+ db.delete_collection()
|
|
|
+
|
|
|
+ return jsonify({"message": "Collection deleted successfully"}), 200
|
|
|
|
|
|
@app.route("/")
|
|
|
def home():
|
|
@@ -174,35 +224,40 @@ def inputMsg():
|
|
|
print(data['msg'])
|
|
|
|
|
|
msg = data['msg']
|
|
|
+ type = data['type']
|
|
|
+ if type == 'selectLand':
|
|
|
# 调用大模型解析
|
|
|
# 这里调用大模型,并返回解析结果
|
|
|
|
|
|
# 示例:用户输入一条消息
|
|
|
# msg= "我计划在抱坡区选取适宜地块作为工业用地,要求其在城市开发边界内,离小学大于1000m,坡度小于25度,用地面积在80-100亩之间。"
|
|
|
- res = update_chat_history(msg)
|
|
|
- print(res) # 打印生成的回复
|
|
|
-
|
|
|
- addtress = ['抱坡区', '天涯区', '崖州区', '海棠区', '吉阳区']
|
|
|
- land = ['园地', '耕地', '林地', '草地', '湿地', '公共卫生用地', '老年人社会福利用地', '儿童社会福利用地', '残疾人社会福利用地', '其他社会福利用地', '零售商业用地', '居住用地', '批发市场用地', '餐饮用地', '旅馆用地', '公用设施营业网点用地', '娱乐用地', '康体用地', '一类工业用地', '二类工业用地', '广播电视设施用地', '环卫用地', '消防用地', '干渠', '水工设施用地', '其他公用设施用地', '公园绿地', '防护绿地', '广场用地', '军事设施用地', '使领馆用地', '宗教用地', '文物古迹用地', '监教场所用地', '殡葬用地', '其他特殊用地', '河流水面', '湖泊水面', '水库水面', '坑塘水面', '沟渠', '冰川及常年积雪', '渔业基础设施用海', '增养殖用海', '捕捞海域', '工业用海', '盐田用海', '固体矿产用海', '油气用海', '可再生能源用海', '海底电缆管道用海', '港口用海', '农业设施建设用地', '耕地', '园地', '林地', '工矿用地', '畜禽养殖设施建设用地', '水产养殖设施建设用地', '城镇住宅用地', '草地', '湿地', '留白用地', '陆地水域', '游憩用海', '特殊用海', '特殊用地', '其他海域', '绿地与开敞空间用地', '水田', '水浇地', '旱地', '果园', '茶园', '橡胶园', '其他园地', '乔木林地', '竹林地', '城镇社区服务设施用地', '农村宅基地', '农村社区服务设施用地', '机关团体用地', '科研用地', '文化用地', '教育用地', '体育用地', '医疗卫生用地', '社会福利用地', '商业用地', '商务金融用地',
|
|
|
- '二类农村宅基地', '图书与展览用地', '文化活动用地', '高等教育用地', '中等职业教育用地', '体育训练用地', '其他交通设施用地', '供水用地', '排水用地', '供电用地', '供燃气用地', '供热用地', '通信用地', '邮政用地', '医院用地', '基层医疗卫生设施用地', '田间道', '盐碱地', '沙地', '裸土地', '裸岩石砾地', '村道用地', '村庄内部道路用地', '渔业用海', '工矿通信用海', '其他土地', '公共管理与公共服务用地', '仓储用地', '交通运输用地', '公用设施用地', '交通运输用海', '航运用海', '路桥隧道用海', '风景旅游用海', '文体休闲娱乐用海', '军事用海', '其他特殊用海', '空闲地', '田坎', '港口码头用地', '管道运输用地', '城市轨道交通用地', '城镇道路用地', '交通场站用地', '一类城镇住宅用地', '二类城镇住宅用地', '三类城镇住宅用地', '一类农村宅基地', '商业服务业用地', '三类工业用地', '一类物流仓储用地', '二类物流仓储用地', '三类物流仓储用地', '盐田', '对外交通场站用地', '公共交通场站用地', '社会停车场用地', '中小学用地', '幼儿园用地', '其他教育用地', '体育场馆用地', '灌木林地', '其他林地', '天然牧草地', '人工牧草地', '其他草地', '森林沼泽', '灌丛沼泽', '沼泽草地', '其他沼泽地', '沿海滩涂', '内陆滩涂', '红树林地', '乡村道路用地', '种植设施建设用地', '娱乐康体用地', '其他商业服务业用地', '工业用地', '采矿用地', '物流仓储用地', '储备库用地', '铁路用地', '公路用地', '机场用地']
|
|
|
- json_res = res
|
|
|
- if json_res != "未找到相关数据":
|
|
|
- try:
|
|
|
- json_res = json.loads(json_res)
|
|
|
- districtName = json_res["districtName"]
|
|
|
- landType = json_res["landType"]
|
|
|
- # if landType != "未找到相关数据" and landType != "" and districtName != "未找到相关数据"and districtName != "":
|
|
|
- if landType in land and districtName in addtress:
|
|
|
- json_res = jsonResToDict(json_res)
|
|
|
- else:
|
|
|
+ res = update_chat_history(msg)
|
|
|
+ print(res) # 打印生成的回复
|
|
|
+
|
|
|
+ addtress = ['抱坡区', '天涯区', '崖州区', '海棠区', '吉阳区']
|
|
|
+ land = ['园地', '耕地', '林地', '草地', '湿地', '公共卫生用地', '老年人社会福利用地', '儿童社会福利用地', '残疾人社会福利用地', '其他社会福利用地', '零售商业用地', '居住用地', '批发市场用地', '餐饮用地', '旅馆用地', '公用设施营业网点用地', '娱乐用地', '康体用地', '一类工业用地', '二类工业用地', '广播电视设施用地', '环卫用地', '消防用地', '干渠', '水工设施用地', '其他公用设施用地', '公园绿地', '防护绿地', '广场用地', '军事设施用地', '使领馆用地', '宗教用地', '文物古迹用地', '监教场所用地', '殡葬用地', '其他特殊用地', '河流水面', '湖泊水面', '水库水面', '坑塘水面', '沟渠', '冰川及常年积雪', '渔业基础设施用海', '增养殖用海', '捕捞海域', '工业用海', '盐田用海', '固体矿产用海', '油气用海', '可再生能源用海', '海底电缆管道用海', '港口用海', '农业设施建设用地', '耕地', '园地', '林地', '工矿用地', '畜禽养殖设施建设用地', '水产养殖设施建设用地', '城镇住宅用地', '草地', '湿地', '留白用地', '陆地水域', '游憩用海', '特殊用海', '特殊用地', '其他海域', '绿地与开敞空间用地', '水田', '水浇地', '旱地', '果园', '茶园', '橡胶园', '其他园地', '乔木林地', '竹林地', '城镇社区服务设施用地', '农村宅基地', '农村社区服务设施用地', '机关团体用地', '科研用地', '文化用地', '教育用地', '体育用地', '医疗卫生用地', '社会福利用地', '商业用地', '商务金融用地',
|
|
|
+ '二类农村宅基地', '图书与展览用地', '文化活动用地', '高等教育用地', '中等职业教育用地', '体育训练用地', '其他交通设施用地', '供水用地', '排水用地', '供电用地', '供燃气用地', '供热用地', '通信用地', '邮政用地', '医院用地', '基层医疗卫生设施用地', '田间道', '盐碱地', '沙地', '裸土地', '裸岩石砾地', '村道用地', '村庄内部道路用地', '渔业用海', '工矿通信用海', '其他土地', '公共管理与公共服务用地', '仓储用地', '交通运输用地', '公用设施用地', '交通运输用海', '航运用海', '路桥隧道用海', '风景旅游用海', '文体休闲娱乐用海', '军事用海', '其他特殊用海', '空闲地', '田坎', '港口码头用地', '管道运输用地', '城市轨道交通用地', '城镇道路用地', '交通场站用地', '一类城镇住宅用地', '二类城镇住宅用地', '三类城镇住宅用地', '一类农村宅基地', '商业服务业用地', '三类工业用地', '一类物流仓储用地', '二类物流仓储用地', '三类物流仓储用地', '盐田', '对外交通场站用地', '公共交通场站用地', '社会停车场用地', '中小学用地', '幼儿园用地', '其他教育用地', '体育场馆用地', '灌木林地', '其他林地', '天然牧草地', '人工牧草地', '其他草地', '森林沼泽', '灌丛沼泽', '沼泽草地', '其他沼泽地', '沿海滩涂', '内陆滩涂', '红树林地', '乡村道路用地', '种植设施建设用地', '娱乐康体用地', '其他商业服务业用地', '工业用地', '采矿用地', '物流仓储用地', '储备库用地', '铁路用地', '公路用地', '机场用地']
|
|
|
+ json_res = res
|
|
|
+ if json_res != "未找到相关数据":
|
|
|
+ try:
|
|
|
+ json_res = json.loads(json_res)
|
|
|
+ districtName = json_res["districtName"]
|
|
|
+ landType = json_res["landType"]
|
|
|
+ # if landType != "未找到相关数据" and landType != "" and districtName != "未找到相关数据"and districtName != "":
|
|
|
+ if landType in land and districtName in addtress:
|
|
|
+ json_res = jsonResToDict(json_res)
|
|
|
+ else:
|
|
|
+ json_res = "未找到相关数据"
|
|
|
+ json_res = jsonResToDict_wrong(json_res)
|
|
|
+ except:
|
|
|
json_res = "未找到相关数据"
|
|
|
json_res = jsonResToDict_wrong(json_res)
|
|
|
- except:
|
|
|
+ else:
|
|
|
json_res = "未找到相关数据"
|
|
|
json_res = jsonResToDict_wrong(json_res)
|
|
|
- else:
|
|
|
- json_res = "未找到相关数据"
|
|
|
- json_res = jsonResToDict_wrong(json_res)
|
|
|
+ elif type == 'answer':
|
|
|
+ json_res = route_query(msg)
|
|
|
+
|
|
|
# 返回响应
|
|
|
return jsonify(json_res)
|
|
|
|