Add web session analysis platform with follow-up topics
This commit is contained in:
74
main.py
Normal file
74
main.py
Normal file
@@ -0,0 +1,74 @@
|
||||
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 = ["./UB IOV Support_TR.csv"]
|
||||
|
||||
# 简化后的需求,让 Agent 自主规划
|
||||
analysis_requirement = "我想了解这份工单数据的健康度。请帮我进行全面分析,并找出核心问题点和改进建议。"
|
||||
|
||||
# 在主函数中先创建会话目录,以便存放日志
|
||||
base_output_dir = "outputs"
|
||||
session_output_dir = create_session_output_dir(base_output_dir, analysis_requirement)
|
||||
|
||||
# 设置日志
|
||||
setup_logging(session_output_dir)
|
||||
|
||||
# force_max_rounds=False 允许 AI 在认为完成后主动停止
|
||||
agent = DataAnalysisAgent(llm_config, max_rounds=20, force_max_rounds=False)
|
||||
|
||||
# 这里的 template_path 如果你有特定的参考模板文件,可以传入路径
|
||||
template_path = None
|
||||
|
||||
report = agent.analyze(
|
||||
user_input=analysis_requirement,
|
||||
files=files,
|
||||
template_path=template_path,
|
||||
session_output_dir=session_output_dir
|
||||
)
|
||||
|
||||
print("\n" + "="*60)
|
||||
print(f"✅ 分析任务圆满完成!")
|
||||
print(f"📊 报告路径: {report.get('report_file_path')}")
|
||||
print("="*60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user