You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

313 lines
7.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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/aime25JSONL格式
**预计耗时**
- 生成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/aime25JSONL格式)
祝你使用愉快!