2026-07-08 08:57:50 +00:00

5.7 KiB

GAIA

Overview

GAIA (General AI Assistants) is a benchmark of 450+ questions targeting next-generation LLMs with tool use, web browsing and multi-step reasoning. Each question has an unambiguous short answer and is bucketed into one of three difficulty levels.

Task Description

  • Task Type: Tool-use Agent (multi-turn)
  • Input: Natural-language question, optionally with one referenced attachment file (PDF / xlsx / image / audio / ...)
  • Output: A short final answer (number / short phrase / comma-separated list)
  • Splits: validation (answers public) and test (answers private — evaluation skipped)

Key Features

  • ReAct agent loop with a single bash tool inside a Docker sandbox (default image python:3.11, includes curl / wget / git).
  • Attachment files are mounted read-only at /shared_files inside the sandbox.
  • Rule-based scorer ported verbatim from the official GAIA leaderboard (no LLM judge).
  • Dataset downloaded from ModelScope (gaia-benchmark/GAIA) by default; set dataset_hub='huggingface' to load from Hugging Face instead.

Evaluation Notes

  • Requires Docker daemon running locally (or a remote sandbox engine via the ms_enclave configuration).
  • extra_params.max_steps caps the agent loop length (default 50).
  • extra_params.command_timeout sets per-bash command timeout (default 180s, mirrors inspect_ai).
  • Network is enabled by default — many questions require browsing/searching.
  • Use subset_list to restrict to specific difficulty levels, e.g. ['2023_level1'], ['2023_level1', '2023_level2'] or ['2023_all'] (default).
  • Usage Documentation

Properties

Property Value
Benchmark Name gaia
Dataset ID gaia-benchmark/GAIA
Paper N/A
Tags Agent, MultiTurn, Reasoning
Metrics acc
Default Shots 0-shot
Evaluation Split validation

Data Statistics

Metric Value
Total Samples 165
Prompt Length (Mean) 861.35 chars
Prompt Length (Min/Max) 596 / 2582 chars

Per-Subset Statistics:

Subset Samples Prompt Mean Prompt Min Prompt Max
2023_level1 53 906.53 604 2582
2023_level2 86 816.66 596 1275
2023_level3 26 917.08 621 1497

Sample Example

Subset: 2023_level1

{
  "input": [
    {
      "id": "93e8257c",
      "content": "Please answer the question below. You should:\n\n- Return only your answer, which should be a number, or a short phrase with as few words as possible, or a comma separated list of numbers and/or strings.\n- If the answer is a number, return only ... [TRUNCATED 431 chars] ... Earth and the Moon its closest approach? Please use the minimum perigee value on the Wikipedia page for the Moon when carrying out your calculation. Round your result to the nearest 1000 hours and do not use any comma separators if necessary."
    }
  ],
  "target": "17",
  "id": 0,
  "group_id": 0,
  "tools": [
    {
      "name": "bash",
      "description": "Execute a bash command inside the sandbox environment. Returns the combined stdout / stderr output of the command.",
      "parameters": {
        "properties": {
          "command": {
            "type": "string",
            "description": "The bash command to execute."
          },
          "timeout": {
            "type": "number",
            "description": "Maximum execution time in seconds (default: 60).",
            "default": 60
          }
        },
        "required": [
          "command"
        ]
      }
    }
  ],
  "metadata": {
    "task_id": "e1fc63a2-da7a-432f-be78-7c4a95598703",
    "level": "1",
    "file_name": "",
    "file_path": "",
    "Annotator Metadata": {
      "Steps": "1. Googled Eliud Kipchoge marathon pace to find 4min 37sec/mile\n2. Converted into fractions of hours.\n3. Found moon periapsis in miles (225,623 miles).\n4. Multiplied the two to find the number of hours and rounded to the nearest 100 hours.",
      "Number of steps": "4",
      "How long did this take?": "20 Minutes",
      "Tools": "1. A web browser.\n2. A search engine.\n3. A calculator.",
      "Number of tools": "3"
    }
  }
}

Prompt Template

Prompt Template:

{question}

Extra Parameters

Parameter Type Default Description
max_steps int 50 Maximum number of agent steps per sample.
command_timeout float 180.0 Default per-bash-command timeout in seconds.
docker_image str python:3.11 Docker image used as the per-sample sandbox.
network_enabled bool True Allow the sandbox to access the network (GAIA browsing questions need this).

Usage

Using CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets gaia \
    --limit 10  # Remove this line for formal evaluation

Using Python

from evalscope import run_task
from evalscope.config import TaskConfig

task_cfg = TaskConfig(
    model='YOUR_MODEL',
    api_url='OPENAI_API_COMPAT_URL',
    api_key='EMPTY_TOKEN',
    datasets=['gaia'],
    dataset_args={
        'gaia': {
            # subset_list: ['2023_level1', '2023_level2', '2023_level3']  # optional, evaluate specific subsets
            # extra_params: {}  # uses default extra parameters
        }
    },
    limit=10,  # Remove this line for formal evaluation
)

run_task(task_cfg=task_cfg)