Files
assist/src/agent_assistant_new.py
赵杰 Jie Zhao (雄狮汽车科技) da4736c323 feat: 重大功能更新 v1.4.0 - 飞书集成、AI语义相似度、前端优化
主要更新内容:
- 🚀 飞书多维表格集成,支持工单数据同步
- 🤖 AI建议与人工描述语义相似度计算
- 🎨 前端UI全面优化,现代化设计
- 📊 智能知识库入库策略(AI准确率<90%使用人工描述)
- 🔧 代码重构,模块化架构优化
- 📚 完整文档整合和更新
- 🐛 修复配置导入和数据库字段问题

技术特性:
- 使用sentence-transformers进行语义相似度计算
- 快速模式结合TF-IDF和语义方法
- 响应式设计,支持移动端
- 加载状态和动画效果
- 配置化AI准确率阈值
2025-09-19 19:32:42 +01:00

323 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
增强版TSP助手 - 集成Agent功能
重构版本:模块化设计,降低代码复杂度
"""
import logging
import asyncio
from typing import Dict, Any, List, Optional
from datetime import datetime
from src.agent.agent_assistant_core import TSPAgentAssistantCore
from src.agent.agent_message_handler import AgentMessageHandler
from src.agent.agent_sample_actions import AgentSampleActions
logger = logging.getLogger(__name__)
class TSPAgentAssistant(TSPAgentAssistantCore):
"""TSP Agent助手 - 重构版本"""
def __init__(self, llm_config=None):
# 初始化核心功能
super().__init__(llm_config)
# 初始化消息处理器
self.message_handler = AgentMessageHandler(self)
# 初始化示例动作处理器
self.sample_actions = AgentSampleActions(self)
logger.info("TSP Agent助手初始化完成重构版本")
# ==================== 消息处理功能 ====================
async def process_message_agent(self, message: str, user_id: str = "admin",
work_order_id: Optional[int] = None,
enable_proactive: bool = True) -> Dict[str, Any]:
"""使用Agent处理消息"""
return await self.message_handler.process_message_agent(
message, user_id, work_order_id, enable_proactive
)
async def process_conversation_agent(self, conversation_data: Dict[str, Any]) -> Dict[str, Any]:
"""使用Agent处理对话"""
return await self.message_handler.process_conversation_agent(conversation_data)
async def process_workorder_agent(self, workorder_data: Dict[str, Any]) -> Dict[str, Any]:
"""使用Agent处理工单"""
return await self.message_handler.process_workorder_agent(workorder_data)
async def process_alert_agent(self, alert_data: Dict[str, Any]) -> Dict[str, Any]:
"""使用Agent处理预警"""
return await self.message_handler.process_alert_agent(alert_data)
# ==================== 建议功能 ====================
def get_conversation_suggestions(self, context: Dict[str, Any]) -> List[str]:
"""获取对话建议"""
return self.message_handler.get_conversation_suggestions(context)
def get_workorder_suggestions(self, workorder_data: Dict[str, Any]) -> List[str]:
"""获取工单建议"""
return self.message_handler.get_workorder_suggestions(workorder_data)
def get_alert_suggestions(self, alert_data: Dict[str, Any]) -> List[str]:
"""获取预警建议"""
return self.message_handler.get_alert_suggestions(alert_data)
# ==================== 示例动作功能 ====================
async def trigger_sample_actions(self) -> Dict[str, Any]:
"""触发示例动作"""
return await self.sample_actions.trigger_sample_actions()
async def run_performance_test(self) -> Dict[str, Any]:
"""运行性能测试"""
return await self.sample_actions.run_performance_test()
# ==================== 兼容性方法 ====================
def get_agent_status(self) -> Dict[str, Any]:
"""获取Agent状态兼容性方法"""
return super().get_agent_status()
def toggle_agent_mode(self, enabled: bool) -> bool:
"""切换Agent模式兼容性方法"""
return super().toggle_agent_mode(enabled)
def start_proactive_monitoring(self) -> bool:
"""启动主动监控(兼容性方法)"""
return super().start_proactive_monitoring()
def stop_proactive_monitoring(self) -> bool:
"""停止主动监控(兼容性方法)"""
return super().stop_proactive_monitoring()
def run_proactive_monitoring(self) -> Dict[str, Any]:
"""运行主动监控检查(兼容性方法)"""
return super().run_proactive_monitoring()
def run_intelligent_analysis(self) -> Dict[str, Any]:
"""运行智能分析(兼容性方法)"""
return super().run_intelligent_analysis()
def get_action_history(self, limit: int = 50) -> List[Dict[str, Any]]:
"""获取动作执行历史(兼容性方法)"""
return super().get_action_history(limit)
def clear_execution_history(self) -> Dict[str, Any]:
"""清空执行历史(兼容性方法)"""
return super().clear_execution_history()
def get_llm_usage_stats(self) -> Dict[str, Any]:
"""获取LLM使用统计兼容性方法"""
return super().get_llm_usage_stats()
# ==================== 高级功能 ====================
async def comprehensive_analysis(self) -> Dict[str, Any]:
"""综合分析 - 结合多个模块的分析结果"""
try:
# 运行智能分析
intelligent_analysis = self.run_intelligent_analysis()
# 运行主动监控
proactive_monitoring = self.run_proactive_monitoring()
# 运行性能测试
performance_test = await self.run_performance_test()
# 综合结果
comprehensive_result = {
"timestamp": self.execution_history[-1]["timestamp"] if self.execution_history else None,
"intelligent_analysis": intelligent_analysis,
"proactive_monitoring": proactive_monitoring,
"performance_test": performance_test,
"overall_status": self._determine_overall_status(
intelligent_analysis, proactive_monitoring, performance_test
)
}
# 记录综合分析
self._record_execution("comprehensive_analysis", comprehensive_result)
return comprehensive_result
except Exception as e:
logger.error(f"综合分析失败: {e}")
return {"error": str(e)}
def _determine_overall_status(self, intelligent_analysis: Dict,
proactive_monitoring: Dict,
performance_test: Dict) -> str:
"""确定整体状态"""
try:
# 检查各个模块的状态
statuses = []
if intelligent_analysis.get("success"):
statuses.append("intelligent_analysis_ok")
else:
statuses.append("intelligent_analysis_error")
if proactive_monitoring.get("success"):
statuses.append("proactive_monitoring_ok")
else:
statuses.append("proactive_monitoring_error")
if performance_test.get("success"):
statuses.append("performance_test_ok")
else:
statuses.append("performance_test_error")
# 根据状态确定整体状态
if all("ok" in status for status in statuses):
return "excellent"
elif any("error" in status for status in statuses):
return "needs_attention"
else:
return "good"
except Exception:
return "unknown"
async def batch_process_requests(self, requests: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
"""批量处理请求"""
try:
results = []
for request in requests:
request_type = request.get("type", "message")
if request_type == "message":
result = await self.process_message_agent(
request.get("message", ""),
request.get("user_id", "admin"),
request.get("work_order_id"),
request.get("enable_proactive", True)
)
elif request_type == "conversation":
result = await self.process_conversation_agent(request)
elif request_type == "workorder":
result = await self.process_workorder_agent(request)
elif request_type == "alert":
result = await self.process_alert_agent(request)
else:
result = {"error": f"未知请求类型: {request_type}"}
results.append(result)
# 记录批量处理
self._record_execution("batch_process", {
"request_count": len(requests),
"results": results
})
return results
except Exception as e:
logger.error(f"批量处理请求失败: {e}")
return [{"error": str(e)} for _ in requests]
def get_system_summary(self) -> Dict[str, Any]:
"""获取系统摘要"""
try:
# 获取各种状态信息
agent_status = self.get_agent_status()
system_health = self.get_system_health()
workorders_status = self._check_workorders_status()
# 计算摘要指标
summary = {
"timestamp": datetime.now().isoformat(),
"agent_status": agent_status,
"system_health": system_health,
"workorders_status": workorders_status,
"execution_history_count": len(self.execution_history),
"llm_usage_stats": self.get_llm_usage_stats(),
"overall_health_score": system_health.get("health_score", 0)
}
return summary
except Exception as e:
logger.error(f"获取系统摘要失败: {e}")
return {"error": str(e)}
def export_agent_data(self) -> Dict[str, Any]:
"""导出Agent数据"""
try:
export_data = {
"export_timestamp": datetime.now().isoformat(),
"agent_status": self.get_agent_status(),
"execution_history": self.execution_history,
"llm_usage_stats": self.get_llm_usage_stats(),
"system_summary": self.get_system_summary()
}
return {
"success": True,
"data": export_data,
"message": "Agent数据导出成功"
}
except Exception as e:
logger.error(f"导出Agent数据失败: {e}")
return {
"success": False,
"error": str(e)
}
def import_agent_data(self, data: Dict[str, Any]) -> Dict[str, Any]:
"""导入Agent数据"""
try:
# 验证数据格式
if not isinstance(data, dict):
raise ValueError("数据格式不正确")
# 导入执行历史
if "execution_history" in data:
self.execution_history = data["execution_history"]
# 其他数据的导入逻辑...
return {
"success": True,
"message": "Agent数据导入成功"
}
except Exception as e:
logger.error(f"导入Agent数据失败: {e}")
return {
"success": False,
"error": str(e)
}
# 测试函数
async def main():
"""测试函数"""
print("🚀 TSP Agent助手测试")
# 创建Agent助手实例
agent_assistant = TSPAgentAssistant()
# 测试基本功能
status = agent_assistant.get_agent_status()
print("Agent状态:", status)
# 测试消息处理
result = await agent_assistant.process_message_agent("你好,请帮我分析系统状态")
print("消息处理结果:", result)
# 测试示例动作
sample_result = await agent_assistant.trigger_sample_actions()
print("示例动作结果:", sample_result)
# 测试综合分析
analysis_result = await agent_assistant.comprehensive_analysis()
print("综合分析结果:", analysis_result)
if __name__ == "__main__":
asyncio.run(main())