GPQA: Graduate-Level STEM Knowledge Challenge
Contains challenging multiple-choice questions created by domain experts in biology, physics, and chemistry, designed to test advanced scientific understanding beyond basic internet searches. Experts at PhD level in the corresponding domains reach 65% accuracy.
Overview
GPQA is an evaluation dataset consisting of graduate-level multiple-choice questions in subdomains of physics, chemistry, and biology.
This implementation is based on simple-eval’s implementation. This script evaluates on the GPQA-Diamond subset.
Usage
Installation
Install with pip install inspect-evals, or uv sync from a checkout of this repository.
Running evaluations
uv run inspect eval inspect_evals/gpqa_diamond --model openai/gpt-5-nanoYou can also import tasks as normal Python objects and run them from python:
from inspect_ai import eval
from inspect_evals.gpqa import gpqa_diamond
eval(gpqa_diamond)Drop uv run if you manage dependencies yourself. Log viewing (inspect view) and default-model setup are documented in the Inspect Evals README.
Options
You can control a variety of options from the command line. For example:
uv run inspect eval inspect_evals/gpqa_diamond --limit 10 --sample-shuffle
uv run inspect eval inspect_evals/gpqa_diamond --max-connections 10
uv run inspect eval inspect_evals/gpqa_diamond --temperature 0.5See uv run inspect eval --help for all available options.
Parameters
gpqa_diamond
cot(bool): Whether to use chain-of-thought reasoning (default True). (default:True)epochs(int): Number of epochs to run (default 4). (default:4)high_level_domain(str | list[str] | None): Optional high-level domain(s) to filter by. One of “Biology”, “Chemistry”, or “Physics”, or a list of these. If None, all domains are included. (default:None)subdomain(str | list[str] | None): Optional subdomain(s) to filter by (e.g. “Genetics” or “Quantum Mechanics”, or a list of these). If None, all subdomains are included. (default:None)shuffle_choices(bool | int): Whether and how to shuffle answer choices. Defaults to a fixed seed so every build presents the same exam; an int chooses the seed, True is unseeded, False keeps the raw order (correct answer always ‘A’). (default:42)
Dataset
Here is an example prompt from the dataset (after it has been further processed by Inspect):
Answer the following multiple choice question. The entire content of your response should be of the following format: 'ANSWER: $LETTER' (without quotes) where LETTER is one of A,B,C,D.
Two quantum states with energies E1 and E2 have a lifetime of 10^-9 sec and 10^-8 sec, respectively. We want to clearly distinguish these two energy levels. Which one of the following options could be their energy difference so that they can be clearly resolved?
A) 10^-4 eV
B) 10^-11 eV
C) 10^-8 eV
D) 10^-9 eV
The model is then tasked to pick the correct answer choice.
Scoring
A simple accuracy is calculated over the datapoints.
Evaluation Report
Results on the full GPQA-Diamond dataset (198 samples, 1 epoch):
| Model | Provider | Accuracy | Stderr | Time |
|---|---|---|---|---|
| gpt-5.1-2025-11-13 | OpenAI | 0.652 | 0.034 | 2m 6s |
| claude-sonnet-4-5-20250929 | Anthropic | 0.717 | 0.032 | 4m 49s |
| gemini-3-pro-preview | 0.929 | 0.018 | 70m |
Notes:
- GPT 5.1 and Anthropic completed the evaluation.
- Gemini 3 Pro completed 197/198 samples after 70 minutes.
- Human expert baseline from the paper is 69.7% accuracy
- Results generated December 2025
Changelog
[3-C] - 2026-09-09
- Answer choices are now shuffled with a fixed default seed (
shuffle_choices=42), so every build presents the same exam; the shuffle was previously unseeded.shuffle_choicesaccepts an int seed,True(unseeded) orFalse, on bothgpqa_diamondandget_gpqa_diamond_dataset. Comparability bump: presented option order changes for all users.
[2-B] - 2026-03-11
- Add dataset subsetting support via the
high_level_domainandsubdomaintask parameters.
[2-A] - 2026-02-16
- Migrate version to new scheme. See #907.