# AIME数据生成与评估完整运行指南

本文档提供完整的运行步骤，从数据生成到评估报告生成。

## 前置准备

### 1. 环境配置

确保已安装所有依赖：

```bash
# 安装评估系统依赖
pip install hello-agents[evaluation]

# 或手动安装
pip install datasets huggingface_hub pandas tqdm gradio
```

### 2. 环境变量配置

在 `.env` 文件中配置：

```bash
# LLM API密钥（二选一）
DASHSCOPE_API_KEY=your_dashscope_key  # 阿里云DashScope
OPENAI_API_KEY=your_openai_key        # OpenAI

# HuggingFace Token（用于下载数据集）
HF_TOKEN=your_hf_token
```

## 完整运行步骤

### 步骤1：运行完整评估流程

这是**一键运行**的方式，会自动完成生成、评估、报告生成：

```bash
cd docs/chapter12/HelloAgents
python data_generation/run_complete_evaluation.py 30 3.0
```

**参数说明**：
- `30` - 生成30道题目
- `3.0` - 每次生成间隔3秒（推荐2-3秒）

**说明**：
- 使用AIME 2025年真题作为评估参考
- 数据集来源：math-ai/aime25（JSONL格式）

**预计耗时**：
- 生成30道题：约15-30分钟（取决于API速度）
- LLM Judge评估：约10-15分钟
- Win Rate评估：约5-10分钟
- **总计**：约30-55分钟

**输出文件**：
```
data_generation/
├── generated_data/
│   └── aime_generated_YYYYMMDD_HHMMSS.json  # 生成的题目
└── evaluation_results/
    └── YYYYMMDD_HHMMSS/
        ├── llm_judge/
        │   ├── llm_judge_result_YYYYMMDD_HHMMSS.jsonl
        │   └── llm_judge_report_YYYYMMDD_HHMMSS.md
        ├── win_rate/
        │   ├── win_rate_result_YYYYMMDD_HHMMSS.jsonl
        │   └── win_rate_report_YYYYMMDD_HHMMSS.md
        └── comprehensive_report.md  # 综合报告
```

### 步骤2：查看评估报告

#### 2.1 查看综合报告

```bash
# 找到最新的评估结果目录
cd data_generation/evaluation_results
ls -lt  # 查看最新的目录

# 查看综合报告
cat YYYYMMDD_HHMMSS/comprehensive_report.md
```

**综合报告包含**：
- 基本信息（生成时间、题目数量等）
- 数据生成统计（主题分布、答案分析）
- LLM Judge评估结果（总体评分、各维度评分）
- Win Rate评估结果（胜率统计、对比分析）
- 综合结论和改进建议

#### 2.2 查看详细报告

**LLM Judge详细报告**：
```bash
cat YYYYMMDD_HHMMSS/llm_judge/llm_judge_report_YYYYMMDD_HHMMSS.md
```

**Win Rate详细报告**：
```bash
cat YYYYMMDD_HHMMSS/win_rate/win_rate_report_YYYYMMDD_HHMMSS.md
```

### 步骤3：人工验证（可选）

如果需要进行人工验证，运行：

```bash
python data_generation/human_verification_ui.py data_generation/generated_data/aime_generated_YYYYMMDD_HHMMSS.json
```

**操作步骤**：
1. 浏览器自动打开 `http://127.0.0.1:7860`
2. 阅读题目、答案、解答
3. 从4个维度评分（1-5分）
4. 选择验证状态（approved/rejected/needs_revision）
5. 添加评论（可选）
6. 点击"提交验证"
7. 查看下一题

**验证结果保存**：
```
data_generation/generated_data/aime_generated_YYYYMMDD_HHMMSS_verifications.json
```

## 分步运行（高级）

如果需要分步运行，可以按以下步骤：

### 步骤1：仅生成数据

```python
from data_generation.aime_generator import AIMEGenerator

generator = AIMEGenerator(delay_seconds=3.0)
generated_data_path = generator.generate_and_save(num_problems=30)
print(f"生成数据保存在: {generated_data_path}")
```

### 步骤2：仅运行LLM Judge评估

```python
from hello_agents import HelloAgentsLLM
from hello_agents.tools import LLMJudgeTool

llm = HelloAgentsLLM()
llm_judge_tool = LLMJudgeTool(llm=llm)

result = llm_judge_tool.run({
    "generated_data_path": "data_generation/generated_data/aime_generated_XXXXXX.json",
    "reference_year": 2025,
    "max_samples": 30,
    "output_dir": "data_generation/evaluation_results/llm_judge"
})
```

### 步骤3：仅运行Win Rate评估

```python
from hello_agents import HelloAgentsLLM
from hello_agents.tools import WinRateTool

llm = HelloAgentsLLM()
win_rate_tool = WinRateTool(llm=llm)

result = win_rate_tool.run({
    "generated_data_path": "data_generation/generated_data/aime_generated_XXXXXX.json",
    "reference_year": 2025,
    "num_comparisons": 20,
    "output_dir": "data_generation/evaluation_results/win_rate"
})
```

## 常见问题

### 1. API速率限制

**问题**：
```
INFO:openai._base_client:Retrying request to /chat/completions in 0.451826 seconds
```

**解决**：
- 增加延迟时间：`python data_generation/run_complete_evaluation.py 30 5.0`
- 使用检查点恢复：中断后重新运行相同命令会自动恢复

### 2. HuggingFace下载慢

**问题**：下载AIME数据集很慢

**解决**：
```bash
# 使用镜像源
export HF_ENDPOINT=https://hf-mirror.com

# 或手动下载后使用本地路径
```

### 3. 生成题目重复

**问题**：生成的题目有重复

**解决**：
- 已使用900+道真题作为参考样例
- 每次生成都随机选择不同的参考
- 提示词强调"生成完全不同的题目"

### 4. 评估失败

**问题**：LLM Judge或Win Rate评估失败

**解决**：
- 检查API密钥是否正确
- 检查生成的数据文件是否存在
- 检查数据文件格式是否正确

## 质量标准

### 优秀标准
- LLM Judge平均分 ≥ 4.5/5.0
- Win Rate ≥ 48%（接近50%）
- 通过率 ≥ 90%
- 人工验证通过率 ≥ 95%

### 良好标准
- LLM Judge平均分 ≥ 4.0/5.0
- Win Rate ≥ 45%
- 通过率 ≥ 80%
- 人工验证通过率 ≥ 90%

### 需要改进
- LLM Judge平均分 < 4.0/5.0
- Win Rate < 45%
- 通过率 < 80%
- 人工验证通过率 < 90%

## 下一步

根据评估结果：

1. **如果质量优秀**：
   - 可以使用生成的数据
   - 考虑生成更多数据
   - 保留评估报告作为质量证明

2. **如果质量良好**：
   - 进行人工验证
   - 筛选高质量数据
   - 调整生成提示词

3. **如果需要改进**：
   - 分析低分题目的共同问题
   - 调整生成提示词
   - 重新生成并评估

## 示例输出

### 综合报告示例

```markdown
# AIME数据生成与评估综合报告

## 1. 基本信息

- **生成时间**: 2025-01-10 12:00:00
- **生成题目数量**: 30
- **参考AIME年份**: 2025

## 2. 数据生成统计

### 主题分布

| 主题 | 数量 | 占比 |
|------|------|------|
| 代数 | 10 | 33.3% |
| 几何 | 8 | 26.7% |
| 数论 | 7 | 23.3% |
| 组合 | 3 | 10.0% |
| 概率 | 2 | 6.7% |

## 3. LLM Judge评估结果

- **平均总分**: 4.2/5.0
- **通过率**: 85.0%
- **优秀率**: 40.0%

## 4. Win Rate评估结果

- **Win Rate**: 45.0%
- **评级**: 良好

## 5. 综合结论

✅ 生成数据质量**良好**，接近AIME真题水平。
```

## 总结

完整流程：
1. 运行 `python data_generation/run_complete_evaluation.py 30 3.0`
2. 等待30-55分钟
3. 查看综合报告 `data_generation/evaluation_results/XXXXXX/comprehensive_report.md`
4. （可选）运行人工验证
5. 根据评估结果决定下一步

**说明**：
- 所有评估都使用AIME 2025年真题作为参考
- 数据集来源：math-ai/aime25（JSONL格式）

祝你使用愉快！

