Complete AI Data Analysis Agent implementation with 95.7% test coverage
This commit is contained in:
162
examples/requirement_based_analysis.py
Normal file
162
examples/requirement_based_analysis.py
Normal file
@@ -0,0 +1,162 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
指定需求分析示例
|
||||
|
||||
这个示例展示了如何指定分析需求,让 AI 根据需求进行针对性分析。
|
||||
AI 会理解抽象的需求概念(如"健康度"),并将其转化为具体的分析指标。
|
||||
|
||||
使用方法:
|
||||
python examples/requirement_based_analysis.py
|
||||
|
||||
或者使用命令行:
|
||||
python -m src.main --data test_data/ticket_sample.csv --requirement "分析工单健康度" --output output/requirement
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加项目根目录到路径
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
|
||||
from src.main import run_analysis
|
||||
from src.logging_config import setup_logging
|
||||
import logging
|
||||
|
||||
def main():
|
||||
"""运行指定需求分析"""
|
||||
# 设置日志
|
||||
setup_logging()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
logger.info("=" * 80)
|
||||
logger.info("指定需求分析示例")
|
||||
logger.info("=" * 80)
|
||||
|
||||
# 配置参数
|
||||
data_file = "test_data/ticket_sample.csv"
|
||||
user_requirement = "我想了解工单的健康度,包括关闭率、处理效率、积压情况和响应及时性"
|
||||
output_dir = "output/requirement"
|
||||
|
||||
logger.info(f"数据文件: {data_file}")
|
||||
logger.info(f"用户需求: {user_requirement}")
|
||||
logger.info(f"输出目录: {output_dir}")
|
||||
logger.info("")
|
||||
logger.info("分析模式: 指定需求")
|
||||
logger.info("AI 将:")
|
||||
logger.info(" 1. 理解用户的抽象需求(健康度)")
|
||||
logger.info(" 2. 将需求转化为具体指标")
|
||||
logger.info(" - 关闭率")
|
||||
logger.info(" - 处理效率(平均处理时长)")
|
||||
logger.info(" - 积压情况(待处理工单占比)")
|
||||
logger.info(" - 响应及时性")
|
||||
logger.info(" 3. 生成针对性的分析计划")
|
||||
logger.info(" 4. 执行分析并生成报告")
|
||||
logger.info("")
|
||||
|
||||
try:
|
||||
# 运行分析(指定需求)
|
||||
report_path = run_analysis(
|
||||
data_file=data_file,
|
||||
user_requirement=user_requirement,
|
||||
template_file=None,
|
||||
output_dir=output_dir
|
||||
)
|
||||
|
||||
logger.info("")
|
||||
logger.info("=" * 80)
|
||||
logger.info("分析完成!")
|
||||
logger.info(f"报告已生成: {report_path}")
|
||||
logger.info("=" * 80)
|
||||
|
||||
# 显示报告预览
|
||||
if os.path.exists(report_path):
|
||||
with open(report_path, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
preview = content[:500] + "..." if len(content) > 500 else content
|
||||
logger.info("")
|
||||
logger.info("报告预览:")
|
||||
logger.info("-" * 80)
|
||||
logger.info(preview)
|
||||
logger.info("-" * 80)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"分析失败: {e}", exc_info=True)
|
||||
sys.exit(1)
|
||||
|
||||
def example_sales_analysis():
|
||||
"""销售数据分析示例"""
|
||||
setup_logging()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
logger.info("=" * 80)
|
||||
logger.info("销售数据分析示例")
|
||||
logger.info("=" * 80)
|
||||
|
||||
data_file = "test_data/sales_sample.csv"
|
||||
user_requirement = "分析销售趋势和区域表现,识别高价值客户和畅销产品"
|
||||
output_dir = "output/sales_analysis"
|
||||
|
||||
logger.info(f"数据文件: {data_file}")
|
||||
logger.info(f"用户需求: {user_requirement}")
|
||||
logger.info(f"输出目录: {output_dir}")
|
||||
logger.info("")
|
||||
|
||||
try:
|
||||
report_path = run_analysis(
|
||||
data_file=data_file,
|
||||
user_requirement=user_requirement,
|
||||
template_file=None,
|
||||
output_dir=output_dir
|
||||
)
|
||||
|
||||
logger.info("")
|
||||
logger.info("=" * 80)
|
||||
logger.info("分析完成!")
|
||||
logger.info(f"报告已生成: {report_path}")
|
||||
logger.info("=" * 80)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"分析失败: {e}", exc_info=True)
|
||||
|
||||
def example_user_analysis():
|
||||
"""用户数据分析示例"""
|
||||
setup_logging()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
logger.info("=" * 80)
|
||||
logger.info("用户数据分析示例")
|
||||
logger.info("=" * 80)
|
||||
|
||||
data_file = "test_data/user_sample.csv"
|
||||
user_requirement = "分析用户活跃度和订阅情况,识别流失风险用户"
|
||||
output_dir = "output/user_analysis"
|
||||
|
||||
logger.info(f"数据文件: {data_file}")
|
||||
logger.info(f"用户需求: {user_requirement}")
|
||||
logger.info(f"输出目录: {output_dir}")
|
||||
logger.info("")
|
||||
|
||||
try:
|
||||
report_path = run_analysis(
|
||||
data_file=data_file,
|
||||
user_requirement=user_requirement,
|
||||
template_file=None,
|
||||
output_dir=output_dir
|
||||
)
|
||||
|
||||
logger.info("")
|
||||
logger.info("=" * 80)
|
||||
logger.info("分析完成!")
|
||||
logger.info(f"报告已生成: {report_path}")
|
||||
logger.info("=" * 80)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"分析失败: {e}", exc_info=True)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 运行主示例
|
||||
main()
|
||||
|
||||
# 取消注释以运行其他示例
|
||||
# example_sales_analysis()
|
||||
# example_user_analysis()
|
||||
Reference in New Issue
Block a user