If you like AGI-Eval, please star the project to get the latest updates~⭐️
This project is an open-source Large Language Model (LLM) evaluation framework from the AGI-Eval platform, aiming to provide a flexible and extensible evaluation platform. The framework adopts a plugin-based architecture design, supporting multiple evaluation scenarios, model access methods, and evaluation metrics.
The following provides the environment setup process for AGI-Eval, requirements for custom datasets, and evaluation model requirements.
We strongly recommend using conda to manage your Python environment.
# Python version: Requires Python 3.11 or higher
conda create --name agieval python=3.11 -y
conda activate agieval- Clone source code
git clone https://github.com/AGI-Eval-Official/agi-eval.git- Install dependencies
cd agi-eval
# Install Native backend
pip install -e .- Optional dependencies installation
The above installs the necessary dependencies for framework operation and execution commands. The core plugin system of the framework allows users to implement custom plugins. Their necessary dependencies can be placed as optional dependencies of the framework in the plugin dependencies file requirements.json, and will be automatically installed when the corresponding plugin is loaded and used for the first time. The format requirements are as follows. The file content is in json format, the key is the module where the plugin is located, and the value is the dependency list, which can specify versions and installation sources.
{
"agieval.plugin.metrics.drop_f1_metrics": [
"scipy>=1.16.0 -i https://mirrors.aliyun.com/pypi/simple/"
]
}AGI-Eval has adapted some public datasets that can be used directly. Use the agieval benchmarks command to view the list of supported datasets. The first evaluation of these datasets will automatically download data files to the local datasets directory. For detailed instructions, see Public Datasets.
AGI-Eval supports using local datasets for evaluation. You can download datasets to local through HuggingFace or ModelScope, then adapt them according to Dataset Adaptation before use.
Currently only supports evaluation through litellm API calls, so you need to provide a model service that supports the OpenAI API protocol. If the model to be evaluated has been deployed with a model service that supports the OpenAI API protocol, you can use it directly. Execute the following commands to configure model parameters:
# Model to be evaluated
export API_BASE_URL=http://your-api-endpoint
export MODEL_NAME=your-model-name
export API_KEY=your-api-key
# Scoring model
export SCORE_API_BASE_URL=http://your-api-endpoint
export SCORE_MODEL_NAME=your-model-name
export SCORE_API_KEY=your-api-keyIf you want to use weight models for evaluation, please deploy the model service yourself.
If the deployed model service cannot support the OpenAI protocol, please adapt load_model type plugins according to the Plugin Development Guide.
Ensure all the above preparations are completed, now you can start using AGI-Eval for evaluation! This project supports two startup methods: Command Line Interface (CLI) and Python scripts.
For public datasets that have been adapted and supported by the framework or datasets that have been adapted according to framework requirements, it is recommended to use the Command Line Interface (CLI) for evaluation.
Execute the following command to ensure AGI-Eval is installed, refer to Source Installation.
agieval -v # Output AGI-Eval 1.0.0
agieval -help # View help documentationagieval start
- Dataset name, required
- --runner, running method, overwrites the runner field in dataset configuration
- --benchmark_config, dataset configuration file, overwrites the benchmark_config field in dataset configuration
For detailed instructions, see Parameter Description
# Specify evaluation model information through environment variables
export API_BASE_URL=http://your-api-endpoint
export MODEL_NAME=your-model-name
export API_KEY=your-api-key
agieval start test
# Or specify evaluation model information through runtime parameters
agieval start test --plugin_param base_url=http://your-api-endpoint model=your-model-name api_key=your-api-key
# If the task starts successfully, it will output process id and log file address
Task process started successfully pid: 8059, log address: /home/user/result/test/logs/info.logMore agieval commands
-
agieval stop
# If no process id is specified, stop all running evaluation tasks agieval stop 8059 -
agieval status
agieval status # Output example, key is the evaluation task process pid, value is the startup parameters of the evaluation task AGI-Eval running task pids: 8059 AGI-Eval running task configs: { "8059": { "debug": false, "runner": "data_parallel", "benchmark_config_template": true, "dataset_files": "datasets/test", "benchmark_config": "", "flow_config_file": "", "work_dir": "result/test", "data_parallel": 10, "global_param": {}, "plugin_param": { "base_url": "http://your-api-endpoint", "model": "your-model-name", "api_key": "your-api-key" } } }
-
agieval benchmarks
agieval benchmarks # Output example Adapted benchmarks: AIME2024, AIME2025, BBEH, BBH-Cot-3Shot, BeyondAIME, CEval, CMMLU, DROP, GPQA, GSM8K, IFEval, MATH, MATH-500, MGSM, MMLU, MMLU-Pro, MMLU-Redux, MMMLU, OlympiadBench, SimpleQA, SuperGPQA, mIFEval, test
-
agieval appstart
- --result_dir=result/test, required parameter, directory where evaluation results are located
- --port=8080, optional parameter, evaluation service listening port, default is 38410
agieval appstart --result_dir=result/test # Output example, visualization result address Visit the following URL to view the evaluation report: http://localhost:38410/agieval/visualization/reportor.html?path=result/test
-
agieval appstop
agieval appstop # Output example Evaluation result visualization service stopped: 17558
The script execution entry is run.py. For new datasets that require secondary development of the framework for adaptation, it is recommended to use Python scripts for evaluation.
python3 run.py \
--runner data_parallel \
--benchmark_config_template \
--dataset_files datasets/test \
--benchmark_config example/dataset/test/benchmark_config.json \
--flow_config_file example/flow_config/default_flow.json \
--work_dir result/test \
--data_parallel 2 \
--global_param k1=v1 k2=v2 \
--plugin_param base_url=http://your-api-endpoint model=your-model-name api_key=your-api-keyFor detailed descriptions of each parameter, see Detailed Parameter Description.
--runner: Optional, scheduler type, optional valuesdummy,local,data_parallel, default isdummy.--benchmark_config_template: Optional, whether the dataset configuration file is used as a template, bool value, default is False.--dataset_files: Optional, parent directory of dataset files, required when--benchmark_config_templateis True.--benchmark_config: Required, dataset configuration file, must be injsonformat, evaluation tasks run according to this configuration.--flow_config_file: Optional, evaluation flow configuration, must be injsonformat, as the fallback configuration for evaluation task configuration.--work_dir: Required, specify the output directory of evaluation results.--data_parallel: Optional, specify the concurrency degree when--runnerisdata_parallel, default is 1.--global_param: Optional, set global parameters, default is empty.--plugin_param: Optional, override runtime parameters of each plugin, default is empty.
Evaluation results support simple visualization display. Run the agieval appstart command to start the visualization service.
agieval appstart --result_dir=result/test
# Output example
Visit the following URL to view the evaluation report: http://localhost:38410/agieval/visualization/reportor.html?path=result/test|
Evaluation Metrics |
Evaluation Details |
|
Evaluation Parameters |
Evaluation Flow |
| Model | MMLU-Redux | GPQA | MMLU-Pro | MMMLU | SimpleQA | GSM8K | MATH | MATH-500 | AIME2025 | AIME2024 |
|---|---|---|---|---|---|---|---|---|---|---|
| Claude-Opus-4-Thinking | 0.9108 | 0.7382 | 0.8666 | 0.8045 | 0.2795 | 0.9682 | 0.9570 | 0.9840 | 0.6948 | 0.8000 |
| Claude-Opus-4 | - | 0.6762 | 0.8619 | - | 0.1230 | 0.9689 | 0.9404 | - | 0.3656 | 0.5396 |
| Claude-Sonnet-4.5 | 0.8037 | 0.6929 | 0.8616 | 0.8692 | 0.3667 | 0.9735 | 0.9506 | 0.9480 | 0.1886 | 0.5260 |
| DeepSeek-R1-0528 | - | 0.7852 | 0.8390 | - | 0.2481 | 0.9591 | 0.9904 | 0.9880 | 0.8802 | 0.9135 |
| DeepSeek-V3.2-Exp-Thinking | 0.9036 | 0.8155 | 0.8438 | 0.8283 | 0.2466 | 0.9666 | 0.9926 | 0.9620 | 0.8542 | 0.9187 |
| DeepSeek-V3.2-Exp | 0.7427 | 0.7525 | 0.8401 | 0.8271 | 0.2392 | 0.9591 | 0.9648 | 0.9160 | 0.5146 | 0.7010 |
| GLM-4.6 | 0.9185 | 0.7987 | 0.8188 | 0.8451 | 0.2358 | 0.9704 | 0.9942 | 0.9940 | 0.9219 | 0.9323 |
| GPT-OSS-120B (High) | 0.9183 | 0.7626 | 0.7955 | 0.8247 | 0.1054 | 0.9682 | 0.9930 | 0.9940 | 0.9354 | 0.9427 |
| Kimi-K2-Instruct | 0.8900 | 0.7257 | 0.8206 | 0.8009 | 0.3054 | 0.9697 | 0.9732 | 0.9680 | 0.5427 | 0.6302 |
| GPT-5-Thinking (High) | 0.9345 | 0.8188 | 0.8483 | 0.9026 | 0.4788 | 0.9719 | 0.9954 | 0.9940 | 0.9229 | 0.9260 |
| o3 | - | 0.8003 | 0.8563 | - | 0.4938 | 0.9719 | 0.9900 | - | 0.8333 | 0.8625 |
| Qwen3-235B-A22B-2507 | 0.8901 | 0.7618 | 0.8483 | 0.8013 | 0.5079 | 0.9644 | 0.9852 | 0.9880 | 0.6896 | 0.8104 |
| Qwen3-235B-A22B-Thinking-2507 | 0.9159 | 0.7794 | 0.8442 | 0.8339 | 0.4324 | 0.9697 | 0.9954 | 0.9960 | 0.9239 | 0.9396 |
| Step-3 | - | 0.6929 | 0.7950 | - | 0.1161 | 0.9712 | 0.9850 | - | 0.6406 | 0.7990 |
| xAI/Grok-4 | 0.8622 | 0.8230 | 0.8567 | 0.8707 | 0.5045 | 0.9454 | 0.9914 | 0.9960 | 0.9594 | 0.9531 |
| ByteDance/Doubao-Seed-1.6-Auto | 0.8920 | 0.7584 | 0.8434 | 0.8312 | 0.1903 | 0.9727 | 0.9882 | 0.9800 | 0.7896 | 0.8854 |
| ByteDance/Doubao-Seed-1.6-Thinking-2507 | 0.9174 | 0.8767 | 0.8540 | 0.8267 | 0.1911 | 0.9727 | 0.9930 | 0.9840 | 0.8125 | 0.8906 |
| Google/Gemini-2.5-Pro | 0.9000 | 0.8171 | 0.8643 | 0.8866 | 0.5142 | 0.9689 | 0.9880 | 0.9800 | 0.8844 | 0.9156 |
@misc{2025agi-eval,
title={AGI-Eval: An Evaluation Platform for AGI},
author={AGI-Eval Team},
howpublished = {\url{https://github.com/AGI-Eval-Official/agi-eval}},
year={2025}
}