ソースを参照

更新 'main.py'

张辉 1 ヶ月 前
コミット
d675e4956b
共有1 個のファイルを変更した57 個の追加0 個の削除を含む
  1. 57 0
      main.py

+ 57 - 0
main.py

@@ -31,6 +31,63 @@ async def health_check():
     return {"status": "healthy", "service": "multi_domain_intent_recognition"}
 
 
+# ========== 缓存管理 API ==========
+@app.post("/api/v1/cache/clear")
+async def clear_all_caches():
+    """
+    清除所有缓存(规则更新后调用)
+
+    功能:
+    - 清除Layer1规则匹配缓存
+    - 清除Layer4 LLM缓存
+    - 清除上下文融合缓存
+
+    用途:
+    - 开发/测试阶段:修改规则后调用此接口
+    - 确保新规则立即生效
+
+    Returns:
+        {"status": "success", "message": "所有缓存已清除"}
+    """
+    try:
+        logger = logging.getLogger(__name__)
+
+        # 获取各个组件
+        multi_layer_classifier = getattr(app.state, 'multi_layer_classifier', None)
+        fuser = getattr(app.state, 'fuser', None)
+
+        # 清除Layer1规则匹配缓存
+        if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer1'):
+            if hasattr(multi_layer_classifier.layer1, 'matcher'):
+                if hasattr(multi_layer_classifier.layer1.matcher, 'cache'):
+                    multi_layer_classifier.layer1.matcher.cache.clear()
+                    logger.info("[API] Layer1规则匹配缓存已清除")
+
+        # 清除Layer4 LLM缓存
+        if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer4'):
+            if hasattr(multi_layer_classifier.layer4, 'clear_cache'):
+                multi_layer_classifier.layer4.clear_cache()
+                logger.info("[API] Layer4 LLM缓存已清除")
+
+        # 清除上下文融合缓存
+        if fuser and hasattr(fuser, 'clear_cache'):
+            fuser.clear_cache()
+            logger.info("[API] 上下文融合缓存已清除")
+
+        return {
+            "status": "success",
+            "message": "所有缓存已清除",
+            "timestamp": time.time()
+        }
+    except Exception as e:
+        logger.error(f"[API] 缓存清除失败: {str(e)}")
+        return {
+            "status": "error",
+            "message": f"缓存清除失败: {str(e)}"
+        }
+
+  
+
 if __name__ == "__main__":
     # 启动服务:绑定所有网卡(0.0.0.0),端口 5000(可修改)
     app.run(host='0.0.0.0', port=5500, debug=False)