| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import os
- import json
- import shutil
- from hello_agents import HelloAgentsLLM, SimpleAgent
- from agents.react_agent import NewReActAgent
- from agents.agent_prompts import PLAN_AGENT_PROMPT, ANALYSIS_AGENT_PROMPT, REPORT_AGENT_PROMPT
- from tools.data_exploration import create_data_exploration_registry
- from tools.data_analysis import create_data_analysis_registry
- if __name__ == "__main__":
- # 清空 out 目录
- if os.path.exists("out"):
- shutil.rmtree("out")
- os.makedirs("out", exist_ok=True)
- os.makedirs("out/figures", exist_ok=True)
- llm = HelloAgentsLLM()
- registry = create_data_exploration_registry()
- planning_agent = NewReActAgent(
- name="PlanningAgent",
- llm=llm,
- custom_prompt=PLAN_AGENT_PROMPT,
- tool_registry=registry,
- max_steps=5
- )
- question = "请开始分析"
- try:
- plan_result = planning_agent.run(question)
- print(f"任务规划: {plan_result}")
- except Exception as e:
- print(f"执行过程中出现错误: {e}")
- # 检查 plan_result 是否符合 python 列表格式
- if not isinstance(plan_result, list):
- print("错误:任务规划结果格式不正确,预期为Python列表。")
- exit(1)
- registry = create_data_analysis_registry()
- analysis_agent = NewReActAgent(
- name="AnalysisAgent",
- llm=llm,
- custom_prompt=ANALYSIS_AGENT_PROMPT,
- tool_registry=registry,
- max_steps=5
- )
- task_result = []
- for task in plan_result:
- print(f"执行任务: {task}")
- try:
- answer = analysis_agent.run(task)
- task_result.append({ "task": task, "result": answer })
- print(f"任务结果: {answer}")
- except Exception as e:
- print(f"执行过程中出现错误: {e}")
- print(f"\n所有任务结果: {task_result}")
- report_agent = SimpleAgent(
- name="ReportAgent",
- system_prompt=REPORT_AGENT_PROMPT,
- llm=llm,
- enable_tool_calling=False
- )
- final_result = report_agent.run(json.dumps(task_result, ensure_ascii=False))
- # 清理报告内容,确保以"# 执行摘要"开头
- if "# 执行摘要" in final_result:
- start_idx = final_result.find("# 执行摘要")
- final_result = final_result[start_idx:]
- print(f"\n最终分析报告: \n{final_result}")
- # 保存报告到文件
- os.makedirs("out", exist_ok=True)
- with open("out/analysis_report.md", "w", encoding="utf-8") as f:
- f.write(final_result)
|