使用 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)
}
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 等配件
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. 生成图表文件