场景示例

数据分析

使用 Agent 分析和可视化数据

数据分析示例

使用 Agent 读取、分析和总结数据文件。

完整代码

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/astercloud/aster/pkg/agent"
    "github.com/astercloud/aster/pkg/provider"
    "github.com/astercloud/aster/pkg/sandbox"
    "github.com/astercloud/aster/pkg/store"
    "github.com/astercloud/aster/pkg/tools"
    "github.com/astercloud/aster/pkg/tools/builtin"
    "github.com/astercloud/aster/pkg/types"
)

func main() {
    ctx := context.Background()

    // 创建工具注册表
    toolRegistry := tools.NewRegistry()
    builtin.RegisterAll(toolRegistry)

    // 创建依赖
    deps := &agent.Dependencies{
        ToolRegistry:     toolRegistry,
        SandboxFactory:   sandbox.NewFactory(),
        ProviderFactory:  provider.NewMultiProviderFactory(),
        Store:            store.NewMemoryStore(),
        TemplateRegistry: agent.NewTemplateRegistry(),
    }

    // 创建数据分析 Agent
    ag, err := agent.Create(ctx, &types.AgentConfig{
        TemplateID: "assistant",
        ModelConfig: &types.ModelConfig{
            Provider: "anthropic",
            Model:    "claude-sonnet-4-5",
            APIKey:   os.Getenv("ANTHROPIC_API_KEY"),
        },
        SystemPrompt: `你是一位数据分析专家。

分析步骤:
1. 理解数据结构和字段含义
2. 识别数据质量问题(缺失值、异常值)
3. 计算关键统计指标
4. 发现数据模式和趋势
5. 提供可操作的洞察

输出格式:
- 数据概览
- 关键发现(Top 3-5)
- 详细分析
- 建议行动`,
        Tools: []string{"filesystem", "bash"},
    }, deps)
    if err != nil {
        log.Fatal(err)
    }
    defer ag.Close()

    // 分析数据
    result, err := ag.Chat(ctx, `
分析 sales_data.csv 文件:
1. 读取数据并理解结构
2. 计算总销售额、平均值、最大/最小值
3. 按产品类别统计销售额
4. 识别销售趋势
5. 生成总结报告
`)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(result.Message.Content)
}

示例数据 (sales_data.csv)

date,product,category,price,quantity,amount
2024-01-01,Laptop,Electronics,5000,2,10000
2024-01-02,Mouse,Electronics,50,10,500
2024-01-03,Desk,Furniture,800,1,800
2024-01-04,Chair,Furniture,300,4,1200
2024-01-05,Keyboard,Electronics,100,5,500

输出示例

# 销售数据分析报告

## 数据概览

- 时间范围:2024-01-01 至 2024-01-05
- 记录数:5 条
- 产品类别:Electronics (3), Furniture (2)
- 总销售额:¥13,000

## 关键发现

### 1. 电子产品占主导地位

- Electronics 类别占总销售额的 84.6%
- 其中 Laptop 单品贡献 76.9%

### 2. 高价值订单集中

- 单笔订单最高额:¥10,000 (Laptop)
- 平均订单额:¥2,600
- 存在明显的价格分层

### 3. 销量分布不均

- 最高销量产品:Mouse (10件)
- 最低销量产品:Desk (1件)
- 单价与销量呈负相关

## 详细分析

### 按类别统计

| 类别        | 销售额  | 占比  | 订单数 |
| ----------- | ------- | ----- | ------ |
| Electronics | ¥11,000 | 84.6% | 3      |
| Furniture   | ¥2,000  | 15.4% | 2      |

### 价格区间分析

- 高价区 (>¥1000): 1笔,占 76.9%
- 中价区 (¥100-¥1000): 3笔,占 19.2%
- 低价区 (<¥100): 1笔,占 3.8%

## 建议行动

1. **优化库存结构**
   - 增加 Electronics 类别库存
   - Laptop 保持充足库存

2. **促销策略**
   - 针对 Furniture 类别推出组合优惠
   - 提升中价位产品销量

3. **客户细分**
   - 高价值客户:关注 Laptop 购买者
   - 批量采购客户:关注 Mouse 等配件

分析 JSON 数据

result, _ := ag.Chat(ctx, `
分析 api_logs.json:
1. 统计每个 API 端点的调用次数
2. 计算平均响应时间
3. 识别错误率高的端点
4. 生成性能报告
`)

日志分析

result, _ := ag.Chat(ctx, `
分析 app.log 文件:
1. 统计不同级别的日志数量(ERROR, WARN, INFO)
2. 提取所有错误信息并分类
3. 识别最频繁的错误
4. 分析错误发生的时间模式
`)

数据对比

result, _ := ag.Chat(ctx, `
对比 last_month.csv 和 this_month.csv:
1. 计算同比增长率
2. 识别增长/下降最快的产品
3. 分析变化原因
4. 预测下月趋势
`)

生成图表

result, _ := ag.Chat(ctx, `
分析 sales_data.csv 并生成可视化:
1. 使用 Python + matplotlib 生成销售趋势图
2. 保存为 sales_chart.png
3. 生成分析报告
`)
// Agent 会:
// 1. 读取 CSV
// 2. 编写 Python 脚本
// 3. 使用 bash 工具执行脚本
// 4. 生成图表文件

相关资源