moving
This commit is contained in:
85
benchmarks/gaia2/scripts/dump-tasks.py
Normal file
85
benchmarks/gaia2/scripts/dump-tasks.py
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Sesija C Phase 3b-A — Gaia2 HF dataset → JSONL dumper.
|
||||
|
||||
Runs from inside the ARE-installed venv (uv-managed under
|
||||
external/meta-agents-research-environments/.venv); `datasets` package is
|
||||
already a transitive dep of meta-agents-research-environments.
|
||||
|
||||
Usage:
|
||||
python benchmarks/gaia2/scripts/dump-tasks.py \\
|
||||
--hf-config mini \\
|
||||
--hf-split validation \\
|
||||
--limit 10 \\
|
||||
--output benchmarks/gaia2/data/tasks-mini-10.jsonl
|
||||
|
||||
Emits one JSON record per line, schema matching benchmarks/gaia2/adapter.ts
|
||||
`Gaia2HfTask` interface (HF dataset card schema verified 2026-04-30).
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Dump Gaia2 HF tasks to JSONL")
|
||||
parser.add_argument("--hf-dataset", default="meta-agents-research-environments/gaia2")
|
||||
parser.add_argument("--hf-config", required=True, help="config name (mini/search/execution/...)")
|
||||
parser.add_argument("--hf-split", default="validation")
|
||||
parser.add_argument("--limit", type=int, required=True)
|
||||
parser.add_argument("--output", required=True, help="Output JSONL path")
|
||||
args = parser.parse_args()
|
||||
|
||||
# `datasets` is installed via meta-agents-research-environments pyproject
|
||||
# (transitive dep). Run this script under the ARE venv.
|
||||
try:
|
||||
from datasets import load_dataset # type: ignore
|
||||
except ImportError as e:
|
||||
print(
|
||||
f"ERROR: `datasets` not installed. Run from ARE venv:\n"
|
||||
f" cd external/meta-agents-research-environments && uv run python {sys.argv[0]} ...\n"
|
||||
f"Underlying error: {e}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 2
|
||||
|
||||
print(f"Loading {args.hf_dataset} config={args.hf_config} split={args.hf_split} ...", file=sys.stderr)
|
||||
ds = load_dataset(args.hf_dataset, args.hf_config, split=args.hf_split)
|
||||
total = len(ds)
|
||||
print(f"Dataset has {total} examples; limiting to {args.limit}", file=sys.stderr)
|
||||
|
||||
output_path = Path(args.output)
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
written = 0
|
||||
with output_path.open("w", encoding="utf-8") as f:
|
||||
for i, record in enumerate(ds):
|
||||
if i >= args.limit:
|
||||
break
|
||||
# HF stores `data` as a serialized JSON STRING (not a nested
|
||||
# object). HF dataset card sample showed the post-parse form;
|
||||
# actual on-disk format is a string. Parse here so the JSONL
|
||||
# written matches benchmarks/gaia2/adapter.ts Gaia2HfTask
|
||||
# interface (data: { metadata, apps, events }).
|
||||
data_field = record.get("data")
|
||||
if isinstance(data_field, str):
|
||||
try:
|
||||
record["data"] = json.loads(data_field)
|
||||
except json.JSONDecodeError as e:
|
||||
print(
|
||||
f"WARN: record {record.get('id')} has unparseable `data` "
|
||||
f"string ({e}); writing raw string",
|
||||
file=sys.stderr,
|
||||
)
|
||||
f.write(json.dumps(record, ensure_ascii=False))
|
||||
f.write("\n")
|
||||
written += 1
|
||||
|
||||
print(f"Wrote {written} task records to {output_path}", file=sys.stderr)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user