GaiaAdapter to convert GAIA dataset rows into Task objects. The canonical execution path is qit bench run, while examples/benchmarks/gaia_eval.py remains available as a thin wrapper over the same official result contract.
Setup
Authenticate with HuggingFace
GAIA is a gated dataset. Request access at huggingface.co/datasets/gaia-benchmark/GAIA, then set your token:
Loading tasks
UseGaiaAdapter to load the dataset and convert rows to Task objects:
Loading from a local snapshot
If you have downloaded the dataset locally, load from disk to avoid repeated HuggingFace requests:Configuration
GaiaAdapter accepts the following parameters:
| Parameter | Default | Description |
|---|---|---|
dataset_name | "gaia-benchmark/GAIA" | HuggingFace repo ID |
annotated_dataset_name | "smolagents/GAIA-annotated" | Annotated variant repo ID |
local_dir | "data/gaia" | Local snapshot directory |
config_name | "2023_all" | Dataset config passed to load_dataset |
default_subset | None | Optional subset filter |
default_max_steps | 24 | Step budget per task |
include_raw_record | True | Attach raw row to task.metadata |
Running the evaluation
Start with the official CLI:examples/benchmarks/gaia_eval.py.
The bundled gaia_eval.py script runs an OpenDeepResearch-style ReAct agent that uses web search, URL visiting, file reading, and command execution.
Run a single task:
Agent architecture
The evaluation script builds anOpenDeepResearchGaiaAgent with the following toolset:
ReActTextParser expecting Thought: / Action: output format. You can swap in any AgentModule subclass and pass it to Engine.run(task) — the adapter produces standard Task objects.
Task structure
EachTask produced by GaiaAdapter contains:
Expected output
Each run appends one JSON line to the output file:stop_reason: "final"— the agent produced aFinal Answer.stop_reason: "max_steps"— the agent hit the step budget without answering.stop_reason: "exception"— a runtime error occurred; checkerror.
prediction to reference_answer with exact-match normalization (strip whitespace, lowercase). Then inspect trace runs with qita:
