Commit 9aaf35d
authored
feat(experimentalist): add the tau3-bench banking benchmark suite (#935)
* feat(experimentalist): make the benchmark harness suite-driven
The runner hardcoded Terminal Bench's workspace and framework skill and assumed a
package held exactly one domain, so a second suite could not be expressed as a
manifest.
A manifest now carries its own workspace and framework_skills, and may set
task_id_prefix to scope a multi-domain package to one domain; coverage is then
enforced against the matching subset. Skill directories resolve before the
baseline evaluation, because otherwise a typo'd skill name surfaces hours of
image builds later.
A config may also name a user_simulator, which exports the OpenAI-style
credentials that tau-style task environments and their NL-assertion judge read.
Those are assigned rather than defaulted: a developer's ambient OPENAI_API_KEY
paired with this gateway's base URL would 401 on every call.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* feat(experimentalist): add the tau3-bench banking suite and configs
Scopes sierra-research/tau3-bench@1 to its 97 banking_knowledge tasks. The
quality partition reuses the 41/28/28 split from optimization-datasets
feat/tau2-other-domains, whose tau2-banking-knowledge-NNN names map onto the
canonical Hub IDs; only task IDs are recorded here, never task content.
The 6/3/3 fast partition draws solely from the 87 tasks whose reward_basis is
pure database state, so smoke runs score without an LLM judge. Both partitions
were validated against live Harbor Hub.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* feat(experimentalist): add the tau3 NOOA agent under test
A NOOA CodeAct agent that reaches the tau2 domain tools over MCP from the task's
tau3-runtime sidecar. AGENT-SPEC.md stays domain-generic because the policy
arrives at runtime in the task instruction, and it is what the Experimentalist
mutates.
Three things the task images required:
Installing from the committed lock uses the pip that python:3.12-slim already
ships, since tau3 images carry neither uv nor the curl its installer wants.
Terminal Bench's uv-upload machinery is unnecessary here because every tau3 task
shares that one base image.
Model credentials are handed over at exec time. A task's [environment].env only
interpolates its docker-compose file, and upstream wires those variables into the
sidecar; the main service declares no environment, so the agent had none.
mcp_timeout.py replaces nooa 0.0.6's MCP transport, which is built without an
httpx timeout and so inherits httpx's 5 second default. The sidecar runs the user
simulator inside start_conversation and send_message_to_user, which take longer;
the server completed the work and advanced its state, but the reply landed on an
abandoned stream and nooa surfaced no timeout, so the agent hung indefinitely.
Verified end to end on the fast test split: all three tasks complete with no
harness error, one solved, for a 1/3 baseline the optimizer can improve on.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* docs(experimentalist): document the tau3 banking benchmark
Turns the single-suite README into one that covers both suites: how a manifest
carries its own workspace, framework skills, and optional domain prefix, the
banking provenance and partition derivation, and the two-container topology with
its memory and build-timeout consequences.
Also records that upstream's tau3 Dockerfiles clone tau2-bench without a ref, so
a cold layer cache can pick up newer commits than an earlier run saw.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* refactor(experimentalist): write partition entries relative to the task-id prefix
Every ID in a domain-scoped package repeats the domain prefix, so listing 109 of
them buried the part that actually differs and made the banking manifest 143
lines of near-identical strings.
Partition entries are now names inside the suite's task_id_prefix, joined back on
at load so the rest of the runner keeps working in canonical IDs. The banking
manifest drops to 50 lines and its splits are legible at a glance. Suites without
a prefix, meaning Terminal Bench, are unaffected.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* refactor(experimentalist): name benchmark configs after their suite
A config carries the models and optimizer depth for one suite, but the original
pair was named only for its partition. Once tau3-smoke.yaml and tau3-quality.yaml
sat beside them, smoke.yaml and quality.yaml read as the generic pair rather than
the Terminal Bench one.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* docs(experimentalist): trim the tau3 section to what a reader needs
Drops the container topology, the memory and build-timeout guidance, and the note
about upstream's unpinned tau2-bench clone. What remains mirrors the Terminal
Bench section: package, hash, Hub record, partition derivation, and the one
config field the suite introduces.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
* build(experimentalist): repin nooa to the upstream MCP timeout fix
nooa built its streamable-http transport with an httpx client that had no
timeout, so httpx's 5 second default governed the MCP read stream and any tool
call taking longer than that hung forever. The tau3 agent hit this on every
turn, because the tau3-runtime sidecar runs a user-simulator LLM inside
start_conversation and send_message_to_user.
That is fixed upstream in NVIDIA-NeMo/labs-OO-Agents#46, so this drops the local
mcp_timeout.py shim and goes back to MCPManager.create_from_server, which now
takes tool_call_timeout directly. The agent still asks for 300 seconds: nooa's
60 second default would do today but leaves no room for a slower model.
The pin is a commit rather than a tag because no release carries the fix yet.
The lock's extra wheel rows are generated: no package version moves except nooa.
Verified against a live sidecar that start_conversation now returns in 7.3s
instead of hanging, and that a full Harbor trial completes with no harness error.
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>
---------
Signed-off-by: Aditya Pandey <aditypandey@nvidia.com>1 parent 01464bd commit 9aaf35d
21 files changed
Lines changed: 2284 additions & 43 deletions
File tree
- plugins/nemo-experimentalist
- benchmarks
- configs
- suites
- examples/tau3-nooa-agent
- framework-skills/nooa
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
76 | | - | |
77 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
78 | 80 | | |
79 | 81 | | |
80 | 82 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
| 31 | + | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | | - | |
7 | | - | |
8 | | - | |
| 6 | + | |
| 7 | + | |
9 | 8 | | |
10 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
11 | 18 | | |
12 | 19 | | |
13 | 20 | | |
| |||
17 | 24 | | |
18 | 25 | | |
19 | 26 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | 27 | | |
24 | 28 | | |
25 | 29 | | |
26 | 30 | | |
27 | 31 | | |
28 | 32 | | |
29 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
30 | 57 | | |
31 | 58 | | |
32 | 59 | | |
33 | 60 | | |
34 | | - | |
| 61 | + | |
35 | 62 | | |
36 | 63 | | |
37 | 64 | | |
| |||
52 | 79 | | |
53 | 80 | | |
54 | 81 | | |
55 | | - | |
| 82 | + | |
56 | 83 | | |
57 | 84 | | |
58 | 85 | | |
| |||
65 | 92 | | |
66 | 93 | | |
67 | 94 | | |
68 | | - | |
| 95 | + | |
69 | 96 | | |
70 | 97 | | |
71 | 98 | | |
72 | 99 | | |
73 | 100 | | |
74 | 101 | | |
75 | | - | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
76 | 112 | | |
77 | 113 | | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
82 | 117 | | |
83 | 118 | | |
84 | 119 | | |
| |||
Lines changed: 34 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
Lines changed: 32 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
88 | 89 | | |
89 | 90 | | |
90 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
91 | 122 | | |
92 | 123 | | |
93 | 124 | | |
94 | 125 | | |
95 | 126 | | |
96 | 127 | | |
97 | 128 | | |
| 129 | + | |
98 | 130 | | |
99 | 131 | | |
100 | 132 | | |
| |||
126 | 158 | | |
127 | 159 | | |
128 | 160 | | |
129 | | - | |
130 | | - | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
131 | 168 | | |
132 | 169 | | |
133 | 170 | | |
134 | 171 | | |
135 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
136 | 178 | | |
137 | 179 | | |
138 | 180 | | |
| |||
147 | 189 | | |
148 | 190 | | |
149 | 191 | | |
| 192 | + | |
150 | 193 | | |
151 | 194 | | |
152 | 195 | | |
| |||
164 | 207 | | |
165 | 208 | | |
166 | 209 | | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
167 | 220 | | |
168 | 221 | | |
169 | 222 | | |
| |||
342 | 395 | | |
343 | 396 | | |
344 | 397 | | |
345 | | - | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
346 | 404 | | |
347 | 405 | | |
348 | 406 | | |
| |||
397 | 455 | | |
398 | 456 | | |
399 | 457 | | |
400 | | - | |
| 458 | + | |
401 | 459 | | |
402 | 460 | | |
403 | | - | |
| 461 | + | |
404 | 462 | | |
405 | 463 | | |
406 | 464 | | |
| |||
0 commit comments