A benchmark for measuring open-ended pedagogical capabilities of LLM tutors โ three teacher skills, seven tasks, teacher-grounded evaluation.
EMNLP 2025 (Main Conference)
Results
Click any column header to sort. The best score per column is highlighted. Win rates are computed by the pedagogical reward model against ground-truth teacher responses.
| Model | Problem Solving | Socratic Questioning | Solution Correctness | Mistake Location | Mistake Correction | Scaffolding Win Rate | Pedagogy IF Win Rate | Scaffolding (Hard) | Pedagogy IF (Hard) |
|---|
Problem Solving: accuracy ยท Socratic Questioning: BLEU ยท Solution Correctness: F1 ยท Mistake Location: micro-F1 ยท Mistake Correction: accuracy ยท remaining columns: reward-model win rate. Models marked NEW were added after the paper's release.
All models are evaluated with thinking/reasoning disabled
(is_thinking option). The only exceptions are google/gemini-2.5-pro,
google/gemini-3.1-pro and google/gemini-3.6-flash, which use their
default adaptive thinking (thinking budget set to -1).
Findings
Averaging the benchmark subtasks into the three high-level teacher skills โ Math Expertise (problem solving, socratic questioning), Student Understanding (solution correctness, mistake location, mistake correction) and Pedagogy (the four win rates) โ shows that strong problem solvers are not automatically strong tutors. Specialized math models sit far below the pedagogy frontier, while tutoring-tuned models trade some math expertise for better scaffolding.
Each point is one model; color encodes Math Expertise (darker = stronger). Red-edged stars mark our models.
The per-task radar view makes the trade-off concrete: models with near-identical problem-solving accuracy can differ by 20+ points in scaffolding and pedagogical instruction-following win rates, especially on the harder variants where the tutor must respond within a real dialog context.
Regenerate both figures with python visualize.py --results_dir results/.
Benchmark
MathTutorBench provides a unified framework for evaluating open-ended pedagogical capabilities of large language model (LLM) tutors. Each task is annotated with teacher ground truth; model outputs are scored automatically โ via accuracy, F1 or BLEU where the task allows it, and via a trained pedagogical reward model for open-ended scaffolding quality.
Usage
See the vllm documentation for details. Optionally add tensor parallelism for large models.
vllm serve [[model_name]] --seed 42 --tensor-parallel-size 4
# Example with vllm model
python main.py --tasks mistake_location.yaml --provider completion_api --model_args base_url=http://localhost:8000/v1,model=meta-llama/Llama-3.2-3B-Instruct
# Example with OpenAI API
python main.py --tasks mistake_correction.yaml --provider completion_api --model_args model=gpt-4o-mini-2024-07-18,api_key=<API_KEY>,is_chat=True
# Example with OpenRouter (any OpenAI-compatible provider works)
python main.py --tasks problem_solving.yaml --provider completion_api --model_args base_url=https://openrouter.ai/api/v1/,api_key=sk-XX,model=anthropic/claude-sonnet-4.6 --output results/ --debug
--debug first to verify your setup on a
small subset.--tasks โ task definition file(s) in the configs folder, comma-separated for multiple sequential tasks:
problem_solving.yaml, socratic_questioning.yaml, student_solution_correctness.yaml,
mistake_location.yaml, mistake_correction.yaml, scaffolding_generation.yaml,
pedagogy_following.yaml, scaffolding_generation_hard.yaml, pedagogy_following_hard.yaml.
Run the Pedagogical Ability tasks (mistake correction, scaffolding generation, pedagogy following and their hard variants) with is_chat=True.--provider โ completion_api (any OpenAI-compatible API: OpenAI, vllm, OpenRouter, โฆ) or gemini.--model_args โ comma-separated model arguments:
base_url โ API base URL; empty for OpenAI and Gemini.model โ model name; defaults to the first available model.api_key โ API key; empty for vllm models.is_chat โ use the Chat Completion API with a chat template. Default: False.is_thinking โ set to True for thinking/reasoning models (e.g. Qwen3) to disable thinking during generation. Default: False.temperature (default 0.0), max_tokens (default 2048), max_retries (default 3).--output โ output directory for results (default results); --debug โ run on a small subset.Computes win rates of generated teacher utterances over ground-truth teacher utterances. The model is small (1.5B parameters); the full evaluation runs within ~10 minutes on a single GPU.
python reward_model/compute_scaffolding_score.py --data_path results/generations-<specific-model>.json
python visualize.py --results_dir results/
pip install -r requirements.txt
Contribute
Open a new PR providing the task configuration in the configs folder and the task implementation in the tasks folder.
People
1 ETH Zurich ยท 2 UKP Lab, TU Darmstadt
Reference
Published at EMNLP 2025 (main conference). Please cite as:
@inproceedings{macina-etal-2025-mathtutorbench,
title = "{M}ath{T}utor{B}ench: A Benchmark for Measuring Open-ended Pedagogical Capabilities of {LLM} Tutors",
author = "Macina, Jakub and Daheim, Nico and Hakimi, Ido and Kapur, Manu and Gurevych, Iryna and Sachan, Mrinmaya",
booktitle = "Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing",
month = nov,
year = "2025",
address = "Suzhou, China",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.emnlp-main.11/",
doi = "10.18653/v1/2025.emnlp-main.11",
pages = "204--221",
}