- 📅 2025年9月18日: EvaLearn 以 5/5/5/5 的高分被 NeurIPS 2025 主会接收!🎉
- 📅 2025年7月15日: 我们更新了新版本!🎉 开源了完整的中文评分标准(rubric),更新了中文README文档,并优化了评测脚本,提升了评估效率和准确性。
- 📅 2025年6月5日: EvaLearn 正式开源!🚀 我们发布了这个创新的基准测试,用于评估大语言模型的学习能力和效率。
EvaLearn 是一个旨在评估大语言模型(LLMs)学习能力和效率的基准测试。它包含 648 个具有挑战性的问题,涵盖六种任务类型,分为 182 个序列。与传统的并行评估模型的基准测试不同,EvaLearn 要求模型按顺序解决问题,使它们能够利用从之前解决方案中获得的经验。
EvaLearn 评估框架包含:
- 一个精简的序列评估工具(
Evaluate/evaluate.py),用于处理问题序列 - 一个问题定义数据集(
Dataset/EvaLearn_Problem.json) - 一个序列定义数据集(
Dataset/EvaLearn_Sequence.json) - 一个用于分析结果的指标评估工具(
Evaluate/evaluate_metric.py)
git clone https://github.com/YOUR_USERNAME/EvaLearn.git
cd EvaLearn
pip install -r requirements.txt运行评估:
python Evaluate/evaluate.py --input Dataset/EvaLearn_Problem.json \
--seq Dataset/EvaLearn_Sequence.json \
--output results.json \
--workers 4 \
--client-api-key YOUR_CLIENT_API_KEY \
--judge-api-key YOUR_JUDGE_API_KEY| 参数 | 描述 |
|---|---|
--input |
问题 JSON 文件的路径 |
--seq |
序列 JSON 文件的路径 |
--output |
保存评估结果的路径 |
--workers |
并行处理的工作线程数 |
--no-check-empty |
跳过对空响应的检查 |
--judge-api-key |
Judge模型的 API 密钥 |
--client-api-key |
Client模型的 API 密钥 |
--judge-model |
Judge模型(默认:"gpt-4o-2024-11-20") |
--client-model |
Client模型(默认:"gpt-4o-2024-11-20") |
--judge-api-base-url |
Judge API 调用的 Base URL |
--client-api-base-url |
Client API 调用的 Base URL |
- 检查点恢复: 自动恢复中断的评估
- API 兼容性: 支持自定义 API 端点
- 并行处理: 多线程执行以加快处理速度
from Evaluate.evaluate import sequentialEval
sequentialEval(
input_json_path="Dataset/EvaLearn_Problem.json",
seq_json_path="Dataset/EvaLearn_Sequence.json",
output_json_path="results.json",
client_api_key="YOUR_CLIENT_API_KEY",
judge_api_key="YOUR_JUDGE_API_KEY"
)使用 Evaluate/evaluate_metric.py 从结果中计算学习指标:
python Evaluate/evaluate_metric.py --results results.json --output report.json- 整体序列准确率
- 位置准确率
- 拟合准确率曲线的斜率
- 第一次正确解决方案的平均位置
- 序列中连续正确解决问题的平均长度
- 热身后准确率
详细的指标描述请参阅论文第2.3节。
您的结果应该是一个 JSON 文件,其中每个项目至少包含:sequence_id: 序列的唯一标识符
position_in_sequence: 问题在序列中的位置(从1开始)type: (可选)任务类型/类别gpt4judge: 包含带有answer_score字段的 JSON 字符串
python Evaluate/evaluate_metric.py --results <results.json> [--problems 7] [--warmup 3] [--output <report.json>]--results: 您的结果 JSON 文件路径(必需)--problems: 每个序列的问题数量(默认:7)--warmup: 热身后准确率要排除的初始问题数量(默认:3)--output: 保存报告为 JSON 的路径(默认:report_<results.json>)
- 向控制台打印所有指标的摘要,包括:
- 整体指标
- 位置准确性
- 按任务类型分类的指标
- 将详细报告保存为 JSON 文件(如果指定了
--output)。
python Evaluate/evaluate_metric.py --results my_eval_results.json --problems 7 --warmup 3 --output my_report.json- 日志保存到
evaluation_metrics.log并打印到控制台。
Dataset/EvaLearn_Problem.json 中的每个问题都有以下结构:
{
"id": 1,
"type": "Logical Reasoning",
"source": "LogicGame-crypto_puzzle",
"level": 1,
"prompt": ["The question text that will be presented to the model"],
"rubric_zh": "用于判断模型回答质量的中文评分标准",
"rubric_en": "English evaluation criteria used by the judge model",
"canonical_answer": "The expected correct answer"
}| 字段 | 描述 |
|---|---|
id |
问题的唯一标识符 |
type |
问题的类别(例如,"逻辑推理"、"数学推理") |
source |
问题的来源 |
level |
难度级别 |
prompt |
问题文本(可以是字符串或字符串数组) |
rubric_zh |
判断模型使用的中文评估标准 |
rubric_en |
判断模型使用的英文评估标准 |
canonical_answer |
预期的正确答案 |
注意: 我们论文中的结果使用的是中文评分标准,该标准由我们的标注团队精心标注,质量很高。英文版本是使用大语言模型翻译的,以帮助理解评分标准的含义。因此,我们强烈建议大家使用中文评分标准进行评估。我们未来也会更新为高质量的英文评分标准。
Dataset/EvaLearn_Sequence.json 中的每个序列都有以下结构:
{
"sequence_id": 1,
"type": "Extraction",
"question_ids": [252, 258, 297, 263, 245, 273, 241]
}| 字段 | 描述 |
|---|---|
sequence_id |
序列的唯一标识符 |
type |
序列的类别(例如,"提取"、"逻辑推理") |
question_ids |
构成序列的问题 ID 的有序列表 |
处理问题序列的主要评估函数,具有检查点恢复和 API 灵活性。
sequentialEval(
input_json_path,
seq_json_path,
output_json_path,
worker_nums=None,
check_empty=True,
judge_api_key=None,
client_api_key=None,
judge_model="gpt-4o-2024-11-20",
client_model="gpt-4o-2024-11-20",
judge_api_base_url=None,
client_api_base_url=None
)参数:
input_json_path: 问题 JSON 文件的路径seq_json_path: 序列 JSON 文件的路径output_json_path: 保存评估结果的路径worker_nums: 工作线程数(默认:5)check_empty: 是否检查并重新处理空响应(默认:True)judge_api_key: Judge模型的 API 密钥client_api_key: Client模型的 API 密钥judge_model: 判断的模型名称(默认:"gpt-4o-2024-11-20")client_model: 响应的模型名称(默认:"gpt-4o-2024-11-20")judge_api_base_url: Judge API 调用的 Base URLclient_api_base_url: Client API 调用的 Base URL
使用推理和判断处理问题序列。
并行处理序列批次,具有线程安全的结果保存。
识别具有空响应的序列以进行重新处理。
处理 JSON 文件加载和保存,具有错误处理和备份机制。
从之前的交互生成格式化的历史提示。
脚本使用 CONFIG 字典来配置各种参数:
max_retries: 最大 API 调用重试次数(默认:10)initial_delay: 初始重试延迟(秒)(默认:1)max_delay: 最大重试延迟(秒)(默认:60)worker_nums: 默认工作线程数(默认:5)questions_per_sequence: 每个序列的预期问题数(默认:7)
本项目根据 Apache-2.0 许可证授权 - 请参阅 LICENSE 文件了解详情。
窦士涵(Shihan Dou): shdou24@m.fudan.edu.cn
张明(Ming Zhang): mingzhang23@m.fudan.edu.cn
我们由衷地感谢字节跳动标注团队所做出的重要贡献,他们的勤奋工作对本论文的成功至关重要 ❤️❤️。标注团队的核心成员:Di Cheng, Linhua Deng, Yanxi Fu, Yafei Qiao, Chaoqian Ren, Mei Su, Ying Wu, Baitong Yang, and Xingyu Zhu.
我们还要向一家未公开的第三方标注公司 ❤️❤️表示诚挚的感谢,感谢他们在数据标注方面的大力支持。
最后,我们要感谢所有参与和支持本项目的个人,感谢他们宝贵的投入。
@article{dou2025evalearn,
title={EvaLearn: Quantifying the Learning Capability and Efficiency of LLMs via Sequential Problem Solving},
author={Dou, Shihan and Zhang, Ming and Huang, Chenhao and Chen, Jiayi and Chen, Feng and Liu, Shichun and Liu, Yan and Liu, Chenxiao and Zhong, Cheng and Zhang, Zongzhang and others},
journal={arXiv preprint arXiv:2506.02672},
year={2025}
}
