jiyuhang 3 hónapja
szülő
commit
c812a1f96a
5 módosított fájl, 93 hozzáadás és 54 törlés
  1. 49 0
      access_plc_api.py
  2. 44 24
      intent_description_template.py
  3. BIN
      intent_index.faiss
  4. 0 1
      patch_intent_cls.py
  5. 0 29
      tem.py

+ 49 - 0
access_plc_api.py

@@ -0,0 +1,49 @@
+import requests
+import time
+
+def access_plc_query_api(url: str,headers:dict, data: list, max_retries=2):
+    """调用bge-m3,embedding"""
+    # 类型检查
+    time.sleep(0.010)  # 方式频繁调用接口
+    for attempt in range(max_retries):
+        try:
+            response = requests.post(url=url, headers=headers, json=data)
+            if response.status_code == 200:
+                return response.json()
+        except Exception as e:
+            print('请求PLC点位查询接口失败!', e)
+            time.sleep(1)
+            return None
+    return None
+
+def sparse_plc_api_response(response):
+    data = response.get('data')
+    code = response.get('code')
+    if int(code) != 200 or data is None:
+        print(f"访问plc接口失败,状态码:{code}, 返回数据有效:{bool(data)}")
+        return None
+    # 提取名称,时间和值
+    plc_query_results = []  # 查询结果
+    for item in data:
+        plc_query_results.append(f"PLC点位名称:{item.get('alias')},记录时间:{item.get('htime')}, 值:{item.get('val')}")
+
+    return plc_query_results
+
+def post_req_2_plc_api(project_id:int,database_codes:list):
+    headers = {"Content-Type": "application/json",
+               "JWT-TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6NywiVXNlcm5hbWUiOiJhZG1pbiIsIkRlcCI6IjEzNSIsImV4cCI6MTc3NjExOTExNCwiaXNzIjoiZ2luLWJsb2cifQ.0HTtzHZjyd2mHo8VCy8icYROxmntRMuQhyoZsAYRL_M"}
+    # 构造数据
+    data = [{"deviceId":"1","deviceItems":db_code,"deviceName":"外供水PH","project_id":project_id} for db_code in database_codes]
+    # 查询结果
+    resp = access_plc_query_api(url='http://120.55.44.4:8900/api/v1/jinke-cloud/device/current-data?time=1739859286292',
+                      headers=headers, data=data)
+    # 解析结果
+    res = sparse_plc_api_response(resp)
+    return res
+if '__main__' == __name__:
+    res = post_req_2_plc_api(1420,['ns=3;s=1#RO_CSDD_O','ns=3;s=2#RO_CSDD_O'])
+    print('请求结果', res)
+
+
+
+

+ 44 - 24
intent_description_template.py

@@ -1,24 +1,44 @@
+# version 202512051911
 # 意图描述模板(同类问题应具备较高的相似度和关联度,不同类的问题间应保持较低的相似度和关联度,不符合阈值的统一走搜索分支)
 # 字典键为自编号
+# 不要忘记更新faiss!!!
 template = {
     # 水厂问题
     "1":["查询当前、今天、昨天或过去某个时间段的水厂产水水质数据,如外供水电导率、外供水PH、进水氨氮、进水COD、进水总氮、进水水温、进水总磷等产水水质参数等。",
          "查询水厂的某个水质数据",
-         "水厂今天进水COD、悬浮物、氨氮、总氮、总磷、是多少?",
-         "水厂今天进水浊度、电导率、电导、温度是多少?",
-         "水厂今天产水COD、悬浮物、氨氮、总氮、总磷是多少?",
-         "水厂今天产水浊度、电导率、电导、温度是多少?",
-         "查询水厂今天的外供水电导率、外供水PH、进水氨氮、进水COD、进水总氮、进水水温、进水总磷等产水水质"],
+         "水厂今天进水COD、悬浮物、氨氮、总氮、总磷、是多少",
+         "水厂今天进水浊度、电导率、电导、温度是多少",
+         "水厂今天产水COD、悬浮物、氨氮、总氮、总磷是多少",
+         "水厂今天产水浊度、电导率、电导、温度是多少",
+         "查询水厂今天的外供水电导率、外供水PH、进水氨氮、进水COD、进水总氮、进水水温、进水总磷等产水水质",
+         "水厂今天的产水电导率是多少",
+         "水厂今天的进水电导率是多少",
+         "水厂今天的进水浊度是多少",
+         "水厂今天的产水浊度是多少",
+         "水厂今天的超滤进水浊度是多少",
+         "水厂今天的产水浊度是多少",
+         "查看进水电导率是多少",
+         "查看产水电导率是多少",],
     "2":["查询当前、今天、昨天或过去某个时间段的水厂电耗、能耗等信息,如累计用电量等",
          "查询水厂用电量或能耗",
-         "水厂哪台设备用电量最高?什么设备用电量最高?",],
+         "水厂哪台设备用电量最高?什么设备用电量最高?",
+         "今天水厂的用电量和耗电量是多少?",],
     "4":["查询当前、今天、昨天或过去某个时间段的水厂用水量和进水产水流量相关的数据,如总进水量(进水总量)、总出水量(出水总量)、总进水流量或总出水流量。",
          "查询水厂进出水量和流量",
          "今天水厂进水量是多少?",
          "水厂今天的产水量是多少",
-         "水厂今天的浓水产水量是多少?"],
+         "水厂今天的浓水产水量是多少?",
+         "最近一段时间水厂水量怎么样?是否达标?",
+         "水量达标了吗?"],
     "5":["查询当前、今天、昨天或过去某个时间段的水厂药耗情况,如氢氧化钠、盐酸、次氯酸钠、阻垢剂、凝絮剂、杀菌剂等药剂的用药量",
-         "查询水厂药剂药耗情况"],
+         "查询水厂药剂药耗情况",
+         "水厂用了多少的还原剂?",
+         "水厂用了多少阻垢剂?",
+         "水厂用了多少氢氧化钠",
+         "水厂用了多少次氯酸钠",
+         "水厂用了多少杀菌剂",
+         "水厂用了多少盐酸",
+         "水厂药剂和药耗使用情况"],
     "6":["看看水厂综合工况",
          "水厂整体工况怎么样?",
          "水厂综合工况怎么样?",
@@ -50,11 +70,11 @@ template = {
     "20":["打开报警页面。",
           "打开安防报警模块"],
     "21":["打开水厂的水质管理页面模块,查询近期产水水质的详情,了解过去一段时间的水质统计数据。",
-          "最近一段时间水厂的水质情况怎么样?是否达标?"
-          "统计分析最近水厂的水质情况"], # 关联水质管理模块
+          "最近一段时间水厂的水质情况怎么样?是否达标?",
+          "统计分析最近水厂的水质情况",
+          "水质达标了吗?"], # 关联水质管理模块
     "22":["打开水厂的水量管理页面模块,查询近期水量的详情,了解过去一段时间的水量统计数据。",
-          "最近一段时间水厂水量怎么样?是否达标?",
-          "统计分析最近一段时间的水厂水量"],  # 关联水量管理页面
+          "统计分析最近一段时间的水厂水量",],  # 关联水量管理页面
     "23":["打开水厂的能耗电耗管理页面模块,查询近期能耗情况,了解产水电耗和用电量的统计数据。",
           "最近一段时间水厂的电耗用电量是多少?",
           "统计分析最近一段时间的电耗用电量"],  # 关联能耗管理页面
@@ -65,7 +85,7 @@ template = {
           "水厂水泵运行情况、运行的怎么样?",
           "看看水厂水泵的效率怎么样。",
           "看看水厂水泵泵组的效果怎么样"],
-    "26":["打开水厂超滤工况",
+    "26":[#"打开水厂超滤工况",
           "水厂超滤运行得怎么样?",
           "水厂超滤情况如何?效果怎么样?"],  # 关联超滤工况
     "27":["打开水厂反渗透工况",  # 关联反渗透工况
@@ -158,7 +178,7 @@ template = {
     "74":["打开水厂数字资产"],
     "75":["打开水厂实物资产"],
     "76":["打开水厂工艺监控",
-          "看看水厂的工艺监控数据"],
+          "打开水厂的工艺监控数据"],
     "78":["查询流量、压差曲线、压力曲线、进水或产水电导曲线、渗透率曲线、脱盐率曲线",],  # *?* 是否能够和58合并
 
 
@@ -188,10 +208,10 @@ template = {
            "金科环境的公司制度是什么?",
            "金科环境的公司情况、介绍、业务、资质是什么?",
             "水萝卜是什么?新水岛是什么?两者有什么关系?"],
-    "102": ["查看新水岛项目总览。",
-            "打开新水岛项目管理页面",
-            "查看新水岛项目概况",
-            "打开新水岛项目统一管理模块",],
+    # "102": ["查看新水岛项目总览。",
+    #         "打开新水岛项目管理页面",
+    #         "查看新水岛项目概况",
+    #         "打开新水岛项目统一管理模块",],
 
 
     # 人脸识别
@@ -213,9 +233,9 @@ template = {
           "在饮用水深度处理中,如何保障膜系统运行稳定,抗污染能力强?"],
 
     # 面板控制
-    "401": ["关闭或打开左侧面板",
-            "关闭或打开左边栏",
-            "隐藏左面板或左边栏"],
+    # "401": ["关闭或打开左侧面板",
+    #         "关闭或打开左边栏",
+    #         "隐藏左面板或左边栏"],
 
     # 自我介绍
     "501":["你是谁?请介绍一下你自己。",
@@ -233,7 +253,7 @@ intent_code = {
     "1":{"parent":1,"child":1,"leaf":True,"related_id":None, "alias":"PLC查询_by_bge"},
     "2":{"parent":1,"child":2,"leaf":True,"related_id":None, "alias":"电耗查询_by_bge"},
     "3":{"parent":1,"child":3,"leaf":True,"related_id":None, "alias":"不存在_by_bge"},  # 不存在
-    "4":{"parent":1,"child":4,"leaf":True,"related_id":None, "alias":"水量查询_by_bge"},
+    "4":{"parent":1,"child":4,"leaf":True,"related_id":None, "alias":"水量管理模块_by_bge"},
     "5":{"parent":1,"child":5,"leaf":True,"related_id":None, "alias":"药耗查询_by_bge"},
     "6":{"parent":1,"child":6,"leaf":True,"related_id":None, "alias":"工况查询_by_bge"},
     "7":{"parent":1,"child":7,"leaf":True,"related_id":None, "alias":"漏水查询_by_bge"},
@@ -247,11 +267,11 @@ intent_code = {
     "18":{"parent":1,"child":18,"leaf":True,"related_id":None, "alias":"在线检测_by_bge"},
     "19":{"parent":1,"child":19,"leaf":True,"related_id":None, "alias":"门禁查询_by_bge"},
     "20":{"parent":1,"child":20,"leaf":True,"related_id":None, "alias":"安防报警查询_by_bge"},
-    "21":{"parent":1,"child":21,"leaf":True,"related_id":None, "alias":"水质模块查询_by_bge"},
+    "21":{"parent":1,"child":21,"leaf":True,"related_id":None, "alias":"水质管理模块_by_bge"},
     "22":{"parent":1,"child":22,"leaf":True,"related_id":None, "alias":"水量模块查询_by_bge"},
     "23":{"parent":1,"child":23,"leaf":True,"related_id":None, "alias":"电耗模块查询_by_bge"},
     "24":{"parent":1,"child":24,"leaf":True,"related_id":None, "alias":"药耗模块查询_by_bge"},
-    "25":{"parent":1,"child":25,"leaf":True,"related_id":None, "alias":"不存在_by_bge"},
+    "25":{"parent":1,"child":25,"leaf":True,"related_id":None, "alias":"泵组工况查询_by_bge"},
     "26":{"parent":1,"child":26,"leaf":True,"related_id":None, "alias":"超滤工况查询_by_bge"},
     "27":{"parent":1,"child":27,"leaf":True,"related_id":None, "alias":"反渗透工况查询_by_bge"},
     "28":{"parent":1,"child":28,"leaf":True,"related_id":None, "alias":"工况管理查询_by_bge"},

BIN
intent_index.faiss


+ 0 - 1
patch_intent_cls.py

@@ -1,4 +1,3 @@
-
 import os
 script_dir = os.path.dirname(os.path.abspath(__file__))
 import sys

+ 0 - 29
tem.py

@@ -1,29 +0,0 @@
-import requests
-import time
-
-def access_remote_api(url: str,headers:dict, data: dict, max_retries=1):
-    """调用bge-m3,embedding"""
-    # 类型检查
-    time.sleep(0.08)  # 方式频繁调用接口
-    for attempt in range(max_retries):
-        try:
-            response = requests.post(url=url, headers=headers, json=data)
-            if response.status_code == 200:
-                return response.json()
-        except Exception as e:
-            print('请求embedding模型失败', e)
-            time.sleep(1)
-            return None
-    return None
-
-if '__main__' == __name__:
-    headers = {"Content-Type": "application/json",
-               "JWT-TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6NywiVXNlcm5hbWUiOiJhZG1pbiIsIkRlcCI6IjEzNSIsImV4cCI6MTc3NjExOTExNCwiaXNzIjoiZ2luLWJsb2cifQ.0HTtzHZjyd2mHo8VCy8icYROxmntRMuQhyoZsAYRL_M"}
-    data = [{"deviceId":"1","deviceItems":"ns=3;s=2#RO_CSDD_O","deviceName":"外供水PH","project_id":1420},{"deviceId":"1","deviceItems":"ns=3;s=2#RO_CSDD_O","deviceName":"外供水PH","project_id":1420}]
-    resp = access_remote_api(url='http://120.55.44.4:8900/api/v1/jinke-cloud/device/current-data?time=1739859286292',
-                      headers=headers,
-                      data=data)
-    print(resp)
-
-
-