70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
from data_analysis_agent import DataAnalysisAgent
|
|
from config.llm_config import LLMConfig
|
|
|
|
import sys
|
|
import os
|
|
from datetime import datetime
|
|
|
|
from utils.create_session_dir import create_session_output_dir
|
|
|
|
class DualLogger:
|
|
"""同时输出到终端和文件的日志记录器"""
|
|
def __init__(self, log_dir, filename="log.txt"):
|
|
self.terminal = sys.stdout
|
|
log_path = os.path.join(log_dir, filename)
|
|
self.log = open(log_path, "a", encoding="utf-8")
|
|
|
|
def write(self, message):
|
|
self.terminal.write(message)
|
|
# 过滤掉生成的代码块,不写入日志文件
|
|
if "🔧 执行代码:" in message:
|
|
return
|
|
self.log.write(message)
|
|
self.log.flush()
|
|
|
|
def flush(self):
|
|
self.terminal.flush()
|
|
self.log.flush()
|
|
|
|
def setup_logging(log_dir):
|
|
"""配置日志记录"""
|
|
# 记录开始时间
|
|
logger = DualLogger(log_dir)
|
|
sys.stdout = logger
|
|
# 可选:也将错误输出重定向
|
|
# sys.stderr = logger
|
|
print(f"\n{'='*20} Run Started at {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} {'='*20}\n")
|
|
print(f"📄 日志文件已保存至: {os.path.join(log_dir, 'log.txt')}")
|
|
|
|
|
|
def main():
|
|
llm_config = LLMConfig()
|
|
files = ["./cleaned_data.csv"]
|
|
analysis_requirement = """
|
|
基于所有运维工单,整理一份工单健康度报告,包括但不限于对所有车联网技术支持工单的全面数据分析,
|
|
深入挖掘工单处理过程中的关键问题、效率瓶颈及改进机会。涵盖工单状态、问题类型、模块分布、严重程度、责任人负载、车型分布、来源渠道及处理时长等多个维度。
|
|
通过多轮交叉分析与趋势洞察,为提升车联网服务质量、优化资源配置及降低运营风险提供数据驱动的决策依据,问题总揽,高频问题、重点问题分析,输出若干个重要的统计指标,并绘制相关图表;结合图表,总结一份,车联网运维工单健康度报告,汇报给我。
|
|
"""
|
|
|
|
# 在主函数中先创建会话目录,以便存放日志
|
|
# 默认输出目录为 'outputs'
|
|
base_output_dir = "outputs"
|
|
session_output_dir = create_session_output_dir(base_output_dir, analysis_requirement)
|
|
|
|
# 设置日志
|
|
setup_logging(session_output_dir)
|
|
|
|
# 如果希望强制运行到最大轮数,设置 force_max_rounds=True
|
|
agent = DataAnalysisAgent(llm_config, force_max_rounds=False)
|
|
|
|
report = agent.analyze(
|
|
user_input=analysis_requirement,
|
|
files=files,
|
|
session_output_dir=session_output_dir
|
|
)
|
|
print(report)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|