Skip to content

[Submission] Add tau-bench leaderboard adapter#192

Open
benshi34 wants to merge 2 commits into
evaleval:mainfrom
benshi34:benshi34/tau-bench-adapter
Open

[Submission] Add tau-bench leaderboard adapter#192
benshi34 wants to merge 2 commits into
evaleval:mainfrom
benshi34:benshi34/tau-bench-adapter

Conversation

@benshi34

Copy link
Copy Markdown

Summary

Adds a tau-bench adapter that fetches the public leaderboard submissions manifest and per-submission JSON from sierra-research/tau2-bench, then converts populated domain metrics into Every Eval Ever aggregate records.

The adapter supports:

  • text, voice, and legacy manifest sections
  • pass_1 through pass_4
  • reported per-domain cost
  • banking knowledge retrieval config metadata
  • local --input-dir replay for review/testing

No instance-level trajectory export is included in this first version.

Validation

  • uv run ruff check utils/tau_bench/adapter.py tests/test_tau_bench_adapter.py
  • uv run pytest tests/test_tau_bench_adapter.py
  • uv run python -m utils.tau_bench.adapter --input-dir /Users/ben.sierra.ai/Documents/tau2-bench/web/leaderboard/public/submissions --output-dir /private/tmp/eee-tau-bench-smoke --limit 3
  • uv run python -m every_eval_ever validate /private/tmp/eee-tau-bench-smoke
  • uv run python -m utils.tau_bench.adapter --output-dir /private/tmp/eee-tau-bench-live-smoke --limit 1
  • uv run python -m every_eval_ever validate /private/tmp/eee-tau-bench-live-smoke

@benshi34 benshi34 marked this pull request as ready for review June 22, 2026 21:59
@evijit evijit requested review from Copilot and nelaturuharsha June 23, 2026 13:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new tau_bench adapter under utils/ that ingests the public tau-bench leaderboard submissions (remote or local replay) and emits Every Eval Ever EvaluationLog records with per-domain pass@k and cost metrics, plus associated metadata. Includes unit tests and documents the adapter in utils/README.md.

Changes:

  • Introduces utils/tau_bench/adapter.py to fetch/parse tau-bench leaderboard manifests + submissions and convert them into EEE logs/results.
  • Adds tests/test_tau_bench_adapter.py covering schema validation, metric mapping, voice metadata preservation, local manifest loading, and error handling.
  • Registers the new adapter in utils/README.md and adds utils/tau_bench/__init__.py.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
utils/tau_bench/adapter.py New adapter implementation converting tau-bench submissions to EEE logs/results.
utils/tau_bench/init.py Adds package marker/docstring for the new adapter module.
utils/README.md Documents the new tau_bench adapter in the adapters table.
tests/test_tau_bench_adapter.py Adds tests for adapter correctness and schema compatibility.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/test_tau_bench_adapter.py Outdated
Comment on lines +250 to +253
evaluation_timestamp = evaluation_date(submission)
version = (
(submission.get('methodology') or {}).get('tau2_bench_version')
) or 'unknown'
Comment on lines +574 to +577
methodology = submission.get('methodology') or {}
value = methodology.get('evaluation_date') or submission.get(
'submission_date'
)
Comment on lines +510 to +512
methodology = submission.get('methodology') or {}
voice_config = submission.get('voice_config') or {}
pipeline = (
Comment on lines +651 to +663
def run(args: argparse.Namespace) -> int:
records = load_submissions(
input_dir=args.input_dir,
base_url=args.base_url,
sections=args.sections,
)
if args.limit is not None:
records = records[: args.limit]
bundles = make_logs(records)
paths = export_logs(bundles, args.output_dir)
for path in paths:
print(path)
return len(paths)
@Solus-QE

Solus-QE commented Jul 4, 2026

Copy link
Copy Markdown

it looks like this is fine to be approved, but there are a couple of notes that can be implemented either now or later; they are not of utmost importance and do not block this feature right now:

  • Proper package imports (every_eval_ever.helpers / .eval_types) rather than the older sys.path hack.
  • cost metric correctly leaves score_type=None, so it sidesteps the MetricConfig validator's min_score/max_score requirement, with lower_is_better=True set.
  • parse_score preserves a real 0.0 (raw is None or raw == '') — no falsy-zero bug.
  • Voice/methodology metadata goes into GenerationConfig.additional_details, not GenerationArgs (which is extra='forbid'), and all detail dicts are stringified to match the dict[str, str] schema.
  • Submission-ID dedup across manifest sections is handled.
  • In run(), make_logs has no per-record error isolation, so a single non-numeric score or malformed results block raises and aborts the whole export

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants