Discrepancy of gemini-3.5-flash public-set pass rate: independent rerun measures 29.9% vs README's 14.83%

Open
#7 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python

Research direction

Start with scripts/eval.py around lines 196–207 and trace the Gemini path into clients.py. Check which proxy endpoint and sampling branch the README run used, then inspect per-rollout errors, aborts, effective thinking level, rollout count, and run timing. Compare the available per-task results to determine what explains the 14.83% versus 29.92% discrepancy.

Written by the indexing model from the issue text.

Description

Hi team!
Thanks for sharing the public scores in README. We independently reran the public 600-task set to calibrate against the pass rates recently published in the README. Six of the seven models we share with your table reproduce within 0.04–6.8pp — but gemini-3.5-flash comes out at 29.9% on our side vs 14.83% in the README, a 2× gap that stands completely alone.

Our setup

  • Task content: commit id = eda21410
  • Scoring: your own code, vendored byte-identically — the reported number is the mean of your task_completed_correctly over the 600 scored tasks.
  • Config: api toolset (api_search / api_fetch / base64_encode), 50-step cap, temperature 1.0, 4 rollouts per task (2,400 graded rollouts per model).
  • Gemini is called through the native google.genai SDK: thinkingLevel=HIGH, 65,536 max output tokens, and thought signatures re-attached across turns.

Results on shared models (your README pass rate vs ours)

model (effort) README ours Δ
claude-opus-4-8 (max) 30.33% 33.00% +2.7pp
gpt-5.6-sol (max) 29.17% 35.96% +6.8pp
gpt-5.6-terra (max) 25.83% 30.04% +4.2pp
claude-fable-5 (max) 25.83% 25.58% −0.3pp
claude-sonnet-5 (max) 24.00% 27.62% +3.6pp
glm-5.2 (self-hosted) 20.33% 19.92% −0.4pp
gemini-3.5-flash (high) 14.83% 29.92% +15.1pp

Your own private leaderboard corroborates our number

Comparing the README's public-set pass rates to the private-set "Score" on zapier.com/benchmarks, every model completes roughly half as many private tasks as public ones — except gemini-3.5-flash, whose private score (14.5%) is nearly equal to its public one (14.83%):

model private / README-public ratio private / our-public ratio
claude-opus-4-8 15.4 / 30.33 = 0.51 15.4 / 33.00 = 0.47
gpt-5.6-sol (max) 18.1 / 29.17 = 0.62 18.1 / 35.96 = 0.50
gpt-5.6-terra (max) 15.2 / 25.83 = 0.59 15.2 / 30.04 = 0.51
claude-fable-5 17.4 / 25.83 = 0.67 17.4 / 25.58 = 0.68
claude-sonnet-5 13.5 / 24.00 = 0.56 13.5 / 27.62 = 0.49
gemini-3.5-flash 14.5 / 14.83 = 0.98 14.5 / 29.92 = 0.48

Against the README's public number, gemini is a wild outlier (0.98 vs the 0.5–0.7 band). Against our public number, its ratio (0.48) falls exactly in line with every other model. In other words: your own private-leaderboard score for flash predicts a public-set pass rate of ~29–30%, which is what we measure.

Where Claude Code suspect the divergence

The runner has no native Google client — Gemini goes through OpenAI chat-completions to a proxy. Two flash-specific hazards in scripts/eval.py:

  1. The thinkingLevel special case is keyed on the literal substring "litellm" in base_url (eval.py ~L199–207). If the gateway URL doesn't contain that substring, flash models fall through to sampling_args={"reasoning_effort": ...} — which the comment directly above (~L196) notes LiteLLM rejects for vertex gemini flash variants. Depending on the proxy that either 400s rollouts (non-retryable in clients.py) or silently yields a different effective thinking level than "high".
  2. Thought-signature / reasoning continuity is not round-tripped on the OpenAI-compat path. Gemini relies on thought signatures for multi-turn tool planning; losing them degrades exactly the long-horizon behavior this benchmark measures, while leaving non-Gemini models untouched.

Questions

  1. Which endpoint/proxy did the README's flash run use — and does its base_url contain "litellm" (i.e., which branch of the _gemini_flash_needs_native check did it take)?
  2. Could you check the flash run's per-rollout error/abort rate and the effective thinkingLevel that reached the API?
  3. How many rollouts per task back the README numbers, and roughly when did the runs execute (model snapshot drift)?

Happy to share our per-task pass-rate vector (600 task ids × pass rate) so we can diff exactly where the two harnesses disagree — the divergence should be concentrated and diagnosable. Thanks for publishing the public scores; the calibration exercise has been genuinely useful, and flash looks a lot stronger on this benchmark than the current table suggests.

Dominant language
Python
Stars
290
Forks
45
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from zapier/AutomationBench

All issues in zapier/AutomationBench

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.