实际应用场景 / 数据分析与商业智能
CHAPTER 09 · TOPIC 03

数据分析与商业智能

数据分析是 Agent 最具价值的应用场景之一——Agent 可以连接数据库、执行代码、生成图表,将"问数据"变成"对话式探索"。本章讲解数据分析 Agent 的架构、核心能力和实现方案。

一句话理解

数据分析是 Agent 最具价值的应用场景之一——Agent 可以连接数据库、执行代码、生成图表,将"问数据"变成"对话式探索"。本章讲解数据分析 Agent 的架构、核心能力和实现方案。

阅读前置

具备大模型与 Agent 全局认识

本文关注

数据分析 Agent 的能力、架构设计、多工具协作分析

所在知识层

业务落地 · 实际应用场景

文章导航
主教学视觉数据分析与商业智能 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

数据分析是 Agent 最具价值的应用场景之一——Agent 可以连接数据库、执行代码、生成图表,将"问数据"变成"对话式探索"。本章讲解数据分析 Agent 的架构、核心能力和实现方案。


1. 数据分析 Agent 的能力

1.1 传统 BI vs Agent BI

对比维度传统 BI 工具Agent BI
交互方式拖拽式 / SQL 编写自然语言对话
学习门槛需要学习工具操作会说中文就能用
分析深度受限于预设功能Agent 可自主探索
灵活性固定仪表盘动态生成分析
解释能力展示数字解释趋势、原因和建议

1.2 典型工作流

语义 SVG 重绘数据分析与商业智能

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Agent 执行流程:1. 理解意图需要销售数据分析2. 查询数据库SELECT product, SUM…3. 获取数据
查看原文结构
Agent 执行流程:
  1. 理解意图 → 需要销售数据分析
  2. 查询数据库 → SELECT product, SUM(sales) FROM ...
  3. 获取数据 → Top 10 产品销售数据
  4. 深入分析 → 查询营销活动数据、竞品动态
  5. 生成图表 → 柱状图 + 趋势线
  6. 生成洞察 → "A 产品销售最佳,主要因为双11促销..."
  7. 提出建议 → "建议加大 A 产品的推广力度"

2. 架构设计

2.1 Text-to-SQL Agent

语义 SVG 重绘数据分析与商业智能

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
async def query(self, question: str) -> str:
        # Step 1: 生成 SQL
        sql = await self.llm.generate(f"""
            数据库 Schema:
            {self.schema}

2.2 Python 代码执行 Agent

PYTHON
class CodeExecutionAgent:
    """通过执行 Python 代码进行数据分析"""
    
    def __init__(self):
        self.sandbox = PythonSandbox(
            allowed_packages=["pandas", "numpy", "matplotlib", "scipy"],
            timeout=30,
            memory_limit="512MB"
        )
    
    async def analyze(self, data: pd.DataFrame, question: str):
        # 生成分析代码
        code = await self.llm.generate(f"""
            数据列: {data.columns.tolist()}
            数据样本: {data.head(5).to_string()}
            
            分析需求: {question}
            
            请编写 Python 代码完成分析。
            使用 pandas 处理数据,matplotlib 生成图表。
            代码必须完整可运行。
        """)
        
        # 在沙箱中执行
        result = self.sandbox.execute(code)
        
        if result.success:
            return {
                "output": result.stdout,
                "charts": result.images,
                "code": code
            }
        else:
            # 自动修复
            fixed_code = await self.llm.generate(f"""
                代码执行错误: {result.error}
                原始代码: {code}
                请修复代码。
            """)
            return self.sandbox.execute(fixed_code)

3. 多工具协作分析

3.1 分析工具链

语义 SVG 重绘数据分析与商业智能

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
┌─ 数据获取工具 ─────────────────────────────────────┐
│  query_database: SQL 查询                           │
│  fetch_api: 调用外部 API 获取数据                    │
│  read_csv: 读取 CSV/Excel 文件                     │
├─ 数据处理工具 ─────────────────────────────────────┤
│  run_python: 执行 Python 代码(pandas 处理)        │
│  clean_data: 数据清洗和预处理                        │
├─ 分析工具 ─────────────────────────────────────────┤
│  statistical_test: 统计检验(t检验、卡方检验等)     │
│  trend_analysis: 趋势分析和预测                     │
│  correlation: 相关性分析                            │
├─ 可视化工具 ───────────────────────────────────────┤
│  create_chart: 生成各类图表                          │
│  create_dashboard: 生成仪表盘                       │
└────────────────────────────────────────────────────┘

3.2 端到端分析示例

PYTHON
async def end_to_end_analysis(question: str):
    """端到端数据分析流程"""
    
    agent = DataAnalysisAgent()
    
    # 1. 理解需求并规划
    plan = await agent.plan_analysis(question)
    
    # 2. 获取数据(可能需要多个数据源)
    data_sources = []
    for source in plan["data_sources"]:
        if source["type"] == "database":
            data = await agent.query_database(source["sql"])
        elif source["type"] == "api":
            data = await agent.fetch_api(source["url"], source["params"])
        data_sources.append(data)
    
    # 3. 数据处理
    merged = await agent.merge_data(data_sources)
    cleaned = await agent.clean_data(merged)
    
    # 4. 分析
    results = []
    for step in plan["analysis_steps"]:
        result = await agent.run_python(step["code"])
        results.append(result)
    
    # 5. 可视化
    charts = []
    for viz in plan["visualizations"]:
        chart = await agent.create_chart(viz)
        charts.append(chart)
    
    # 6. 生成报告
    report = await agent.generate_report(question, results, charts)
    
    return report

4. 安全与合规

4.1 数据安全

语义 SVG 重绘数据分析与商业智能 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def sanitizeresult(…dict:"""对查询结果进行脱敏"""for row in result "…for col in self.SEN…if col in row:
查看原文结构
def sanitize_result(self, result: dict) -> dict:
        """对查询结果进行脱敏"""
        for row in result["rows"]:
            for col in self.SENSITIVE_COLUMNS:
                if col in row:
                    row[col] = self.mask_value(row[col])
        return result
语义 SVG 重绘数据分析与商业智能 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def maskvalue(self,…str:"""脱敏处理"""if "@" in value: 邮箱name, domain = valu…return f" name 0 @ …
查看原文结构
def mask_value(self, value: str) -> str:
        """脱敏处理"""
        if "@" in value:  # 邮箱
            name, domain = value.split("@")
            return f"{name[0]}***@{domain}"
        elif len(value) == 18:  # 身份证
            return f"{value[:6]}********{value[-4:]}"
        elif len(value) == 11:  # 手机号
            return f"{value[:3]}****{value[-4:]}"
        return value

5. 本章小结

维度要点
核心能力自然语言查询 + 代码执行 + 图表生成 + 洞察解读
工具集SQL 查询 + Python 执行 + 统计分析 + 可视化
安全SQL 白名单 + 数据脱敏 + 沙箱执行
价值降低数据分析门槛,让业务人员直接用自然语言分析数据

相关章节


延伸阅读

  • Anthropic (2024). "Claude for Data Analysis"
  • Text-to-SQL Benchmarks: Spider, BIRD
  • Pandas AI: github.com/gventuri/pandas-ai