BBH: Challenging BIG-Bench Tasks
Tests AI models on a suite of 23 challenging BIG-Bench tasks that previously proved difficult even for advanced language models to solve.
Overview
BIG-Bench-Hard is a subset of 27 challenging tasks from the BIG-Bench suite, where prior language models did not outperform average human-rater performance. The benchmark tasks focus on algorithmic, commonsense, and multi-step reasoning. Evaluated models can be prompted zero-shot, 3-shot answer only or 3-shot Chain of Thought.
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/bbh --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.bbh import bbh
eval(bbh)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/bbh --limit 10 --sample-shuffle
uv run inspect eval inspect_evals/bbh --max-connections 10
uv run inspect eval inspect_evals/bbh --temperature 0.5See uv run inspect eval --help for all available options.
Parameters
bbh
subset_name(str | None): Name of subset to use. See BBHDatasetRegistry.MULTIPLE_CHOICE_DATASETS, BBHDatasetRegistry.BINARY_CHOICE_DATASETS, BBHDatasetRegistry.EXACT_MATCH_DATASETS or BBHDatasetRegistry.DYCK_DATASET for valid options. When None, all 27 subsets are evaluated. (default:None)prompt_type(str): Type of prompt to use. One of [“zero_shot”, “answer_only”, “chain_of_thought”]. (default:'answer_only')
You can evaluate specific datasets and specify prompting behavior using the subset_name and prompt_type task parameters. For example:
inspect eval inspect_evals/bbh -T "subset_name=date_understanding"
inspect eval inspect_evals/bbh -T "prompt_type=chain_of_thought" Dataset
BIG-Bench-Hard is a question-answering dataset comprising 27 unique tasks, most containing 250 samples, except for ‘snarks’ with 178 samples, ‘penguins_in_a_table’ with 146, and ‘causal_judgement’ with 187. In total, the benchmark includes 6,511 samples across the 27 tasks, each requiring different forms of algorithmic, commonsense and multistep reasoning to predict the correct answer.
Tasks
Here’s a list of tasks categorized by dataset type:
Multiple Choice Datasets
- date_understanding
- disambiguation_qa
- geometric_shapes
- hyperbaton
- logical_deduction_five_objects
- logical_deduction_seven_objects
- logical_deduction_three_objects
- movie_recommendation
- penguins_in_a_table
- reasoning_about_colored_objects
- ruin_names
- salient_translation_error_detection
- snarks
- temporal_sequences
- tracking_shuffled_objects_five_objects
- tracking_shuffled_objects_seven_objects
- tracking_shuffled_objects_three_objects
Binary Choice Datasets
- boolean_expressions (True, False)
- causal_judgement (Yes, No)
- formal_fallacies (valid, invalid)
- navigate (Yes, No)
- sports_understanding (yes, no)
- web_of_lies (Yes, No)
Open Answer Datasets
- multistep_arithmetic_two (integer)
- object_counting (natural number)
- word_sorting (list of words)
- dyck_languages (closing brackets)
Here is an example from the dataset:
Q: "It is not always easy to grasp who is consuming which products. The following argument pertains to this question:
Every infrequent user of Paul Mitchell shampoo is either a rare consumer of Nioxin shampoo or a loyal buyer of Caress soap, or both.
No regular consumer of Lush soap is a rare consumer of Nioxin shampoo and, in the same time, a loyal buyer of Caress soap.
It follows that whoever is an infrequent user of Paul Mitchell shampoo is not a regular consumer of Lush soap."
Is the argument, given the explicitly stated premises, deductively valid or invalid?
Options:
- valid
- invalid
The model is required to choose the correct answer from the given options.
Scoring
A simple accuracy is calculated over the samples.
Known dataset issues
- Two
ruin_namesitems,'earth, wind, & fire'(row 100 of 250) and'rita, sue and bob too'(row 145), have their options split on the commas inside the candidate names, so the lettered options are fragments and the target is a full name that is not among them. They cannot be scored by option letter and are excluded;ruin_namesruns 248 items. Reported at suzgunmirac/BIG-Bench-Hard#19; the same rows are in theJoschka/big_bench_hardmirror this port loads. ruin_namesrow 41,'frank kappa', has the unchanged input as its gold answer, which contradicts the task definition (suzgunmirac/BIG-Bench-Hard#17, #18). The row is kept as published.
Changelog
[3-A] - 2026-09-18
- Binary-choice subsets, scored with
answer(pattern="word"): a completion that does not match the answer pattern now scoresINCORRECTwithreason="invalid_response_format"rather thanNOANSWER, followinganswer()upstream in inspect_ai#4629, which attributes an unmatched completion to the model under test. Multiple-choice (choice()) and exact-match subsets are unaffected. Headline metrics are unaffected:value_to_floatmaps bothNOANSWERandINCORRECTto0.0, so accuracy and stderr are unchanged. The non-answer moves from the score value toScore.reason; log analysis that countsNOANSWERvalues should readreasoninstead. See #2314.
[2-A] - 2026-02-16
- Migrate version to new scheme. See #907.
[1.0.1] - 2025-12-18
- Adds backoff policy for functions that connect to huggingface servers.
Static checks
Results of inspect-evals-lint at the commit this documentation was built from. Rule names link to their documentation; findings link to the file at that commit. These checks describe structure and conventions, not whether the evaluation measures what it claims.
Loading lint results…