# Copyright (c) Alibaba, Inc. and its affiliates. from dotenv import dotenv_values, load_dotenv load_dotenv('.env') env = dotenv_values('.env') import unittest from evalscope.constants import EvalType, JudgeStrategy, OutputType from evalscope.utils.logger import get_logger from tests.common import TestBenchmark logger = get_logger() class TestNativeBenchmark(TestBenchmark): """Benchmark evaluation test cases.""" def setUp(self): """Setup common test configuration.""" self.base_config = { 'model': 'qwen3-max', 'api_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'api_key': env.get('DASHSCOPE_API_KEY'), 'eval_type': EvalType.OPENAI_API, 'eval_batch_size': 5, 'limit': 5, 'generation_config': { 'max_tokens': 8096, 'temperature': 0.7, 'parallel_tool_calls': True, 'retries':3, 'extra_body': {'enable_thinking': True}, 'stream': True }, 'judge_strategy': JudgeStrategy.AUTO, 'judge_model_args': { 'model_id': 'qwen3-max', 'api_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'api_key': env.get('DASHSCOPE_API_KEY'), 'generation_config': { 'temperature': 0.0, # 'max_tokens': 4096, 'extra_body': {'enable_thinking': False} } }, 'debug': True, } # Math & Reasoning datasets def test_gsm8k(self): """Test GSM8K math reasoning dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('gsm8k', dataset_args=dataset_args, limit=5, debug=False, eval_batch_size=5) def test_gsm8k_pass_at_k(self): """Test GSM8K math reasoning dataset with Pass@k metric.""" dataset_args = { 'few_shot_num': 0, # 'aggregation': 'mean_and_pass_hat_k', # 'aggregation': 'mean_and_pass_at_k', 'aggregation': 'mean_and_vote_at_k', } self._run_dataset_test('gsm8k', dataset_args=dataset_args, limit=10, repeats=5, model='qwen2.5-0.5b-instruct') def test_mgsm(self): dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('mgsm', dataset_args=dataset_args, limit=10) def test_gsm8k_local(self): """Test GSM8K math reasoning dataset with local path.""" dataset_args = { 'local_path': 'data/gsm8k', } self._run_dataset_test('gsm8k', dataset_args=dataset_args, use_mock=True) def test_mmlu(self): """Test MMLU reasoning dataset.""" dataset_args = { 'few_shot_num': 0, # 'subset_list': ['abstract_algebra', 'computer_security'] } self._run_dataset_test('mmlu', dataset_args=dataset_args, debug=False, enable_progress_tracker=True, ignore_errors=True) def test_mmlu_reasoning(self): """Test MMLU reasoning dataset.""" dataset_args = { 'few_shot_num': 0, 'subset_list': ['abstract_algebra', 'computer_security'] } self._run_dataset_test('mmlu', dataset_args=dataset_args, model='qwen3-0.6b', stream=True) def test_mmlu_pro(self): """Test MMLU-Pro reasoning dataset.""" dataset_args = { 'few_shot_num': 2, 'subset_list': ['computer science', 'math'] } self._run_dataset_test('mmlu_pro', dataset_args=dataset_args, repeats=2, debug=False) def test_mmlu_redux(self): """Test MMLU-Redux reasoning dataset.""" dataset_args = { 'subset_list': ['abstract_algebra', 'computer_security'], } # self._run_dataset_load_test('mmlu_redux', dataset_args) self._run_dataset_test('mmlu_redux', dataset_args=dataset_args) def test_cmmlu(self): """Test C-MMLU reasoning dataset.""" dataset_args = { 'subset_list': ['agronomy', 'computer_security'], 'few_shot_num': 0, } # self._run_dataset_load_test('cmmlu') self._run_dataset_test('cmmlu', dataset_args=dataset_args) def test_mmmlu(self): """Test M-MMLU reasoning dataset.""" dataset_args = { 'subset_list': ['ZH_CN'], 'few_shot_num': 0, } # self._run_dataset_load_test('mmmlu') self._run_dataset_test('mmmlu', dataset_args=dataset_args) def test_math_500(self): """Test MATH 500 dataset.""" # self._run_dataset_load_test('math_500') dataset_args = { 'subset_list': ['Level 1', 'Level 2'], 'few_shot_num': 0, } self._run_dataset_test('math_500', dataset_args=dataset_args) def test_aime24(self): """Test AIME 2024 dataset.""" self._run_dataset_test('aime24', limit=1) def test_aime25(self): """Test AIME 2025 dataset.""" self._run_dataset_test('aime25', limit=1) def test_aime26(self): """Test AIME 2026 dataset.""" self._run_dataset_test('aime26', limit=5) def test_competition_math(self): """Test Competition Math dataset.""" dataset_args = { 'subset_list': ['Level 4'] } self._run_dataset_test('competition_math', dataset_args) # Knowledge & QA datasets def test_arc(self): """Test ARC dataset.""" # self._run_dataset_load_test('arc') dataset_args = { 'subset_list': ['ARC-Easy', 'ARC-Challenge'], 'few_shot_num': 2, } self._run_dataset_test('arc', dataset_args=dataset_args) def test_ceval(self): """Test CEval dataset.""" dataset_args = { 'subset_list': ['logic', 'law', 'computer_network'], # 'few_shot_num': 0, } # self._run_dataset_load_test('ceval') self._run_dataset_test('ceval', dataset_args=dataset_args, enable_progress_tracker=True, analysis_report=True) def test_super_gpqa(self): """Test Super GPQA dataset.""" # self._run_dataset_load_test('super_gpqa') dataset_args = { 'subset_list': ['History', 'Psychology'], 'few_shot_num': 0, } self._run_dataset_test('super_gpqa', dataset_args=dataset_args, ignore_errors=True) def test_gpqa(self): """Test GPQA dataset.""" # self._run_dataset_load_test('gpqa_diamond') dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('gpqa_diamond', dataset_args=dataset_args, ignore_errors=True) def test_iquiz(self): """Test IQuiz dataset.""" dataset_args = { 'subset_list': ['IQ', 'EQ'], 'few_shot_num': 0, } self._run_dataset_test('iquiz', dataset_args=dataset_args) def test_maritime_bench(self): """Test MaritimeBench dataset.""" dataset_args = { 'subset_list': ['default'], 'few_shot_num': 0, } self._run_dataset_test('maritime_bench', dataset_args=dataset_args) def test_musr(self): """Test MuSR dataset.""" dataset_args = { 'subset_list': ['murder_mysteries', 'object_placements', 'team_allocation'], 'few_shot_num': 0, } self._run_dataset_test('musr', dataset_args=dataset_args) def test_hellaswag(self): """Test HellaSwag dataset.""" self._run_dataset_test('hellaswag') def test_truthful_qa(self): """Test TruthfulQA dataset.""" dataset_args = { 'extra_params': { 'multiple_correct': True } } self._run_dataset_test('truthful_qa', dataset_args=dataset_args) def test_trivia_qa(self): """Test TriviaQA dataset.""" self._run_dataset_test('trivia_qa') def test_race(self): """Test RACE dataset.""" self._run_dataset_test('race') def test_winogrande(self): """Test winogrande""" self._run_dataset_test('winogrande') def test_bbh(self): dataset_args = { 'subset_list': ['temporal_sequences', 'navigate'], 'few_shot_num': 0, } self._run_dataset_test('bbh', dataset_args=dataset_args) def test_simple_qa(self): """Test SimpleQA dataset.""" self._run_dataset_test('simple_qa', limit=5) def test_chinese_simpleqa(self): """Test Chinese SimpleQA dataset.""" dataset_args = { 'subset_list': ['δΈ­εŽζ–‡εŒ–'] } self._run_dataset_test('chinese_simpleqa', dataset_args) # Code datasets def test_live_code_bench(self): """Test LiveCodeBench dataset.""" dataset_args = { 'extra_params': { 'start_date': '2024-08-01', 'end_date': '2025-02-28' }, 'local_path': '/root/.cache/modelscope/hub/datasets/evalscope/livecodebench_code_generation_lite_parquet' } self._run_dataset_test('live_code_bench', dataset_args) def test_humaneval(self): """Test HumanEval dataset.""" self._run_dataset_test('humaneval') # Custom & specialized datasets def test_general_qa(self): """Test custom general QA dataset.""" dataset_args = { 'local_path': 'custom_eval/text/qa', 'subset_list': ['example'] } self._run_dataset_test('general_qa', dataset_args) def test_general_mcq(self): """Test custom general MCQ dataset.""" dataset_args = { 'local_path': 'custom_eval/text/mcq', 'subset_list': ['example'] } self._run_dataset_test('general_mcq', dataset_args) def test_general_mcq_multi_correct(self): """Test custom general MCQ dataset with multiple correct answers.""" dataset_args = { 'local_path': 'custom_eval/text/mcq', 'subset_list': ['example_multi'], 'extra_params': { 'multiple_correct': True, } } self._run_dataset_test('general_mcq', dataset_args) def test_alpaca_eval(self): """Test AlpacaEval dataset.""" self._run_dataset_test('alpaca_eval') def test_arena_hard(self): """Test Arena Hard dataset.""" self._run_dataset_test('arena_hard') def test_frames(self): """Test Frames dataset.""" dataset_args = { # 'local_path': '/root/.cache/modelscope/hub/datasets/iic/frames' } self._run_dataset_test('frames', dataset_args) def test_docmath(self): """Test DocMath dataset.""" self._run_dataset_test('docmath') def test_drop(self): """Test DROP dataset.""" dataset_args = { 'few_shot_num': 3, } self._run_dataset_test('drop', dataset_args=dataset_args) def test_ifeval(self): """Test IFEval dataset.""" self._run_dataset_test('ifeval') def test_needle_haystack(self): """Test Needle in Haystack dataset.""" dataset_args = { 'subset_list': ['english'], 'extra_params': { 'context_lengths_max': 10000, 'context_lengths_num_intervals': 5, 'document_depth_percent_intervals': 5, 'show_score': True, } } self._run_dataset_test('needle_haystack', dataset_args) def test_ifeval(self): """Test IFEval dataset.""" self._run_dataset_test('ifeval') def test_ifeval_load(self): """Test IFEval dataset loading.""" self._run_dataset_load_test('ifeval') def test_hle(self): """Test HLE dataset.""" dataset_args = { 'subset_list': ['Math', 'Other'], 'extra_params': { 'include_multi_modal': False } } self._run_dataset_test('hle', dataset_args) def test_process_bench(self): """Test ProcessBench dataset.""" dataset_args = { 'subset_list': ['gsm8k', 'math'], } self._run_dataset_test('process_bench', dataset_args) def test_humaneval(self): """Test HumanEval dataset.""" dataset_args = { # 'metric_list': ['Pass@1'] } self._run_dataset_test('humaneval', dataset_args, limit=10, repeats=3) def test_live_code_bench(self): """Test LiveCodeBench dataset.""" dataset_args = { 'subset_list': ['v5'], 'review_timeout': 6, 'extra_params': { 'start_date': '2024-08-01', 'end_date': '2025-02-28' }, } self._run_dataset_test('live_code_bench', dataset_args, limit=10, repeats=3, model='qwen2.5-14b-instruct') def test_tool_bench(self): """Test ToolBench dataset.""" dataset_args = { # 'force_redownload': True } self._run_dataset_test('tool_bench', dataset_args) def test_acebench(self): """Test ACEBench function calling dataset.""" dataset_args = { 'subset_list': ['normal'], 'few_shot_num': 0, } self._run_dataset_test('acebench', dataset_args=dataset_args, model='qwen-plus', limit=5) def test_bfcl_v3(self): """Test BFCL dataset.""" dataset_args = { 'subset_list': [ 'simple', # 'java', # 'javascript', # 'live_multiple', 'multi_turn_base', # 'multi_turn_miss_func' ], 'extra_params': { 'is_fc_model': True, 'underscore_to_dot': True } } self._run_dataset_test('bfcl_v3', dataset_args=dataset_args, model='qwen-plus', limit=5) def test_bfcl_v4(self): """Test BFCL v4 dataset.""" dataset_args = { 'subset_list': [ 'simple_python', # 'simple_java', # 'simple_javascript', # 'multiple', # 'parallel', # 'parallel_multiple', # 'irrelevance', # 'live_simple', # 'live_multiple', # 'live_parallel', # 'live_parallel_multiple', # 'live_irrelevance', # 'live_relevance', 'multi_turn_base', # 'multi_turn_miss_func', # 'multi_turn_miss_param', # 'multi_turn_long_context', # 'web_search_base', # 'web_search_no_snippet', # 'memory_kv', # 'memory_vector', # 'memory_rec_sum' ], 'extra_params': { 'is_fc_model': True, 'underscore_to_dot': True, 'SERPAPI_API_KEY':env.get('SERPAPI_API_KEY'), } } self._run_dataset_test('bfcl_v4', dataset_args=dataset_args, model='qwen-plus', limit=5, rerun_review=True, debug=False) def test_tau_bench(self): dataset_args = { 'subset_list': [ 'airline', 'retail' ], 'extra_params': { 'user_model': 'qwen-plus', 'api_key': env.get('DASHSCOPE_API_KEY'), 'api_base': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'generation_config': { 'temperature': 0.0, 'stream': True } } } self._run_dataset_test('tau_bench', dataset_args, limit=5, stream=True) def test_tau2_bench(self): dataset_args = { 'subset_list': [ 'airline', 'retail', 'telecom' ], 'extra_params': { 'user_model': 'qwen-plus', 'api_key': env.get('DASHSCOPE_API_KEY'), 'api_base': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'generation_config': { 'temperature': 0.0, 'stream': True } } } self._run_dataset_test('tau2_bench', dataset_args, limit=None, repeats=1, model='qwen-plus', stream=True) def test_tau3_bench(self): dataset_args = { 'subset_list': [ 'airline', 'retail', 'telecom', 'banking_knowledge' ], 'extra_params': { 'user_model': 'qwen-plus', 'api_key': env.get('DASHSCOPE_API_KEY'), 'api_base': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'generation_config': { 'temperature': 0.0, 'stream': True }, 'retrieval_config': 'bm25', } } self._run_dataset_test('tau3_bench', dataset_args, limit=1, repeats=1, model='qwen-plus', stream=True) def test_r1_collection(self): dataset_args = { 'dataset_id': 'evalscope/R1-Distill-Math-Test-v2' } self._run_dataset_test('data_collection', dataset_args) def test_qwen3_collection(self): dataset_args = { 'dataset_id': 'evalscope/Qwen3-Test-Collection' } self._run_dataset_test('data_collection', dataset_args) def test_multi_if(self): dataset_args = { 'subset_list': ['English', 'Chinese'], 'few_shot_num': 0, } self._run_dataset_test('multi_if', dataset_args, limit=3) def test_multi_if_load(self): dataset_args = { # 'subset_list': ['English', 'Chinese'], } self._run_dataset_load_test('multi_if', dataset_args) def test_healthbench(self): dataset_args = { 'subset_list': ['health_data_tasks'], 'extra_params': { 'version': 'Hard' } } self._run_dataset_test('health_bench', dataset_args, limit=5) def test_amc(self): dataset_args = { 'subset_list': ['amc22'], } self._run_dataset_test('amc', dataset_args) def test_minerva_math(self): dataset_args = { 'subset_list': ['default'], } self._run_dataset_test('minerva_math', dataset_args) def test_poly_math(self): dataset_args = { 'subset_list': [ 'zh', # 'en', # 'es' ], } self._run_dataset_test('poly_math', dataset_args) def test_aa_lcr(self): dataset_args = { 'text_dir': 'data/aa_lcr', } self._run_dataset_test('aa_lcr', dataset_args) def test_conll2003_ner(self): """Test CoNLL2003 NER dataset.""" dataset_args = { 'subset_list': ['default'], } self._run_dataset_test('conll2003', dataset_args, limit=10) def test_wnut2017_ner(self): """Test WNUT2017 NER dataset.""" dataset_args = { 'subset_list': ['default'], } self._run_dataset_test('wnut2017', dataset_args, limit=10) def test_logi_qa(self): """Test LogiQA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('logi_qa', dataset_args, limit=10) def test_halu_eval(self): """Test HaluEval dataset.""" dataset_args = { 'subset_list': ['dialogue_samples', 'qa_samples'], 'few_shot_num': 0, } self._run_dataset_test('halueval', dataset_args, limit=5) def test_math_qa(self): """Test MathQA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('math_qa', dataset_args) def test_mri_qa(self): """Test MRI-QA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('mri_mcqa', dataset_args) def test_piqa(self): """Test PIQA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('piqa', dataset_args) def test_qasc(self): """Test QASC dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('qasc', dataset_args) def test_commonsense_qa(self): """Test CommonsenseQA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('commonsense_qa', dataset_args) def test_coin_flip(self): """Test Coin Flip dataset.""" dataset_args = { # 'few_shot_num': 0, } self._run_dataset_test('coin_flip', dataset_args) def test_biomix_qa(self): """Test BioMixQA dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('biomix_qa', dataset_args) def test_music_trivia(self): """Test Music Trivia dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('music_trivia', dataset_args) def test_sciq(self): """Test SciQ dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('sciq', dataset_args) def test_drivel_writing(self): """Test Drivelology Narrative Writing dataset.""" dataset_args = { 'subset_list': ['narrative-writing-english'], 'few_shot_num': 0, } self._run_dataset_test('drivel_writing', dataset_args, limit=10) def test_wmt24(self): """Test WMT24 Translation dataset.""" dataset_args = { 'subset_list': ['en-zh_cn'], 'few_shot_num': 0, } self._run_dataset_test('wmt24pp', dataset_args, limit=10) def test_swe_bench_verified(self): """Test SWE-bench-verified dataset.""" dataset_args = { 'extra_params': { 'build_docker_images': True, 'pull_remote_images_if_available': True, 'inference_dataset_id': 'princeton-nlp/SWE-bench_oracle', } } self._run_dataset_test('swe_bench_verified', dataset_args, limit=5) def test_swe_bench_lite(self): """Test SWE-bench-lite dataset.""" dataset_args = { # 'few_shot_num': 0, } self._run_dataset_test('swe_bench_lite', dataset_args, limit=5) def test_swe_bench_verified_mini(self): """Test SWE-bench-verified-mini dataset.""" dataset_args = { 'extra_params': { 'build_docker_images': True, 'pull_remote_images_if_available': True, 'inference_dataset_id': 'princeton-nlp/SWE-bench_oracle', 'force_arch': 'arm64', } } self._run_dataset_test('swe_bench_verified_mini', dataset_args, limit=1) def test_openai_mrcr(self): dataset_args = { 'extra_params': { 'max_context_size': 65536, } } self._run_dataset_test('openai_mrcr', dataset_args, limit=5) def test_general_fc(self): """Test General Function Calling dataset.""" dataset_args = { # 'local_path': 'custom_eval/text/general_fc', # 'subset_list': ['example'] # 'force_redownload': True, } self._run_dataset_test('general_fc', dataset_args, limit=10, model='qwen-plus', stream=True) def test_general_fc_load(self): """Test General Function Calling dataset loading.""" dataset_args = { # 'local_path': 'custom_eval/text/general_fc', # 'subset_list': ['example'] 'force_redownload': True, } self._run_dataset_load_test('general_fc', dataset_args, debug=False, eval_batch_size=5) def test_general_fc_local(self): """Test General Function Calling dataset with local path.""" dataset_args = { 'local_path': 'custom_eval/text/fc', 'subset_list': ['example'] } self._run_dataset_test('general_fc', dataset_args, limit=10, model='qwen-plus', stream=True) def test_ifbench(self): """Test IFBench dataset.""" dataset_args = { } self._run_dataset_test('ifbench', dataset_args, limit=3) def test_ifbench_load(self): """Test IFBench dataset loading.""" dataset_args = { } self._run_dataset_load_test('ifbench', dataset_args, debug=False, eval_batch_size=5) def test_eq_bench(self): """Test EQ-Bench dataset.""" dataset_args = { } self._run_dataset_test('eq_bench', dataset_args, limit=10) def test_zebralogicbench(self): """Test ZebraLogicBench dataset.""" dataset_args = { } self._run_dataset_test('zebralogicbench', dataset_args, limit=5) def test_hmmt25(self): """Test HMMT25 dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('hmmt25', dataset_args, limit=10) def test_hmmt26(self): """Test HMMT26 dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_test('hmmt26', dataset_args, limit=5) def test_imo_answerbench(self): """Test IMO-AnswerBench dataset.""" dataset_args = { 'few_shot_num': 0, 'subset_list': ['Algebra'], } self._run_dataset_test('imo_answerbench', dataset_args, limit=5) def test_arxivmath(self): """Test ArXiv-Math dataset.""" dataset_args = { 'few_shot_num': 0, 'subset_list': ['arxiv/december'], } self._run_dataset_test('arxivmath', dataset_args, limit=5) def test_cmath(self): """Test CMATH dataset.""" dataset_args = { 'few_shot_num': 0, 'subset_list': ['Grade 1'], } self._run_dataset_test('cmath', dataset_args, limit=5) def test_cl_bench(self): """Test CL-bench dataset.""" dataset_args = { } self._run_dataset_test('cl_bench', dataset_args, limit=10) def test_arxivrollbench(self): """Test ArxivRollBench dataset.""" dataset_args = { 'subset_list': ['2026a_cs_s'], 'few_shot_num': 0, } self._run_dataset_test('arxivrollbench', dataset_args) def test_longbench_v2(self): """Test LongBench-v2 dataset.""" dataset_args = { 'few_shot_num': 0, } self._run_dataset_load_test('longbench_v2', dataset_args, debug=False) # self._run_dataset_test('longbench_v2', dataset_args, limit=1, ignore_errors=True) def test_longmemeval(self): """Test LongMemEval dataset.""" dataset_args = { 'subset_list': ['oracle'], 'extra_params': { 'eval_mode': 'oracle_context', }, } self._run_dataset_test( 'longmemeval', dataset_args, use_mock=True, limit=1, eval_batch_size=1, judge_strategy=JudgeStrategy.RULE, generation_config={ 'max_tokens': 128, 'temperature': 0.0, }, ) def test_locomo(self): """Test LoCoMo dataset.""" dataset_args = { 'subset_list': ['qa'], } self._run_dataset_test( 'locomo', dataset_args, use_mock=True, limit=1, eval_batch_size=1, judge_strategy=JudgeStrategy.RULE, generation_config={ 'max_tokens': 128, 'temperature': 0.0, }, ) if __name__ == '__main__': # Run specific test: python -m unittest test_eval.TestBenchmark.test_gsm8k # Run all tests: python -m unittest test_eval.TestBenchmark unittest.main()