tool-call-efficiency
Skill0 starsChanged 51 days agoApache-2.0View on GitHub
Measure and train down the number of tool calls an agent spends per solved task, with no judge. Use when a coding agent is asked to make an agent cheaper or faster without making it worse: redundant re-fetches, tools called that the task did not need, lookups repeated across turns. The score is a program (checks pass AND at most `budget` calls), so it is a verifiable reward for GRPO, and correctness is tracked beside it so cutting calls never cuts solves.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- LMikeH/whileai-sdkword for word, first seen Oct 15, 2026
Other versions1 project uses a version of this.
Word for word · 1
- LMikeH/whileai-sdk★ 21100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository12 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- audit-your-judgeSkill
- characterSkill
- dpo-pairsSkill
- grpo-verifierSkill
- harness-searchSkill
- manage-experimentsSkill
- pick-a-methodSkill
- sft-from-tracesSkill
- strengthen-your-evalsSkill
- watchSkill
- whileai-simulationsSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Every step below is in check.py, which runs offline in seconds.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Tool-call efficiency
Every step below is in check.py, which runs offline in seconds. Its setup
defines the names the blocks use: TOOLS, POLICY, before_agent (wastes
calls), after_agent (does not), HOLDOUT_SEEDS, TRAIN_SEEDS, K,
N_TASKS, REWARD_REF, stamp (puts each task's checks in
privileged.reference), pct, half, fake (a recording transport), and
tool_calls from whileai.simulations.score.hygiene.
1. The score is a program
Solved within budget. A task counts when its checks pass AND the rollout
spent at most BUDGET tool calls. The behavior's score is the share of
held-out tasks solved within budget; higher is better. Mean calls per solved
task is the second number, from the same rows. No model grades anything, so
this is a verifiable reward (the SDK's whileai.simulations.verify module,
and "Policy Gradients", where GRPO climbs a reward that is a checker), and
reward_is_judge=False holds by construction.
BUDGET = 1 # tool calls a solved task may spend
@wai.verifier
def solved(candidate, reference, row):
"""The task's checks: the reply says what the record says. Budget ignored."""
return reference.lower() in candidate.lower()
@wai.verifier
def within_budget(candidate, reference, row):
"""Solved AND at most BUDGET tool calls. No judge: a program decides."""
if reference.lower() not in candidate.lower():
return 0, "unsolved"
calls = tool_calls(row)
if calls > BUDGET:
return 0, f"solved with {calls} tool calls, budget {BUDGET}"
return 1, f"solved with {calls} tool calls"
CASES = [
("solved within budget", {"final_text": "$129.00", "steps": [{"tool": "lookup_order"}]}, 1),
("solved over budget", {"final_text": "$129.00", "steps": [{"tool": "lookup_order"}] * 2}, 0),
("unsolved", {"final_text": "sorry", "steps": [{"tool": "lookup_order"}]}, 0),
]
for name, row, want in CASES:
got = within_budget({**row, "privileged": {"reference": "$129.00"}})["reward"]
assert got == want, f"{name}: reward {got}, wanted {want}"Unit-test the verifier before anything runs. The three cases are the
labeled slice the platform's Judge(agreement=, human_n=) rests on. Add
your own before you quote a number.
Both numbers from one grading pass. Reward is within_budget; the
marker solved is correctness regardless of budget.
def grade(rows):
"""Both numbers from the same rows: reward is within_budget, marker
``solved`` is correctness regardless of budget."""
graded = wai.evaluate(rows, within_budget).rows
for row in graded:
row["markers"] = {"solved": solved(row)["reward"]}
return graded
def score(graded, k=K):
"""Share of held-out tasks solved within budget (the behavior), share
solved at all (correctness), mean tool calls per solved task."""
efficiency = wai.pass_at(graded, k=k)
correctness = wai.pass_at([{**r, "reward": r["markers"]["solved"]} for r in graded], k=k)
solved_rows = [r for r in graded if r["markers"]["solved"] == 1]
calls = sum(tool_calls(r) for r in solved_rows) / max(1, len(solved_rows))
return efficiency, correctness, calls2. The frozen held-out test first
Draw the tasks once, then replay them. seeds= draws the set;
tasks=holdout pins it for every later run, so before and after are paired
by task ("Evaluation": held-out sets stay apart from training, and a result
is only comparable with its setup held constant). runs=3 gives the re-run
spread that becomes the behavior's noise_floor. A scripted agent gives 0;
a sampled model does not.
holdout = wai.simulate(
before_agent,
tools=TOOLS,
system_prompt=POLICY,
seeds=HOLDOUT_SEEDS,
situations=N_TASKS,
budget=N_TASKS * K,
mode="rl",
repeats=K,
repeat_policy="fixed", # every task gets all k
simulator=False, # offline template writer; drop for the hosted writer
reproducible=True,
seed=1,
concurrency=1,
)
before = wai.simulate(
before_agent,
tools=TOOLS,
system_prompt=POLICY,
tasks=holdout, # the same tasks, frozen
runs=3, # three draws give a re-run spread
mode="rl",
repeat_policy="fixed",
simulator=False,
reproducible=True,
seed=1,
concurrency=1,
)
before_rows = grade(stamp(before.rows()))
before_eff, before_corr, before_calls = score(before_rows)
spread = wai.eval_variance(before_rows)
n_tasks = before_eff.n_groupsUnder 50 tasks the verdict says "unproven". Raise situations= or add
seeds. wai.holdout_size(effect, before=before_rows) says how many tasks a
given gain needs.
seeds= and runs= together raise. tasks= replays a fixed task set;
it cannot be combined with seeds=. Draw with seeds= and runs unset,
then replay with tasks=, as above.
3. Training data, graded by the same verifier
Roll the shipped agent, keep the 20-80% band, drop held-out overlap,
export. Tasks every rollout passes or fails carry no gradient ("Policy
Gradients": DAPO's dynamic sampling drops unanimous groups). decontaminate
removes training rows that repeat a held-out task ("Evaluation").
export_environment writes a GRPO environment whose reward is your verifier,
named as module:attr because the trainer imports it by name.
train = wai.simulate(
before_agent,
tools=TOOLS,
system_prompt=POLICY,
seeds=TRAIN_SEEDS,
situations=120,
budget=120 * K,
mode="rl", # successive repeats: stops early on unanimous tasks
repeats=K,
simulator=False,
reproducible=True,
seed=2,
concurrency=1,
)
train_rows = grade(stamp(train.rows()))
selected, selection = wai.select_for_rl(train_rows, target=200)
clean, contamination = wai.decontaminate(selected, against=[before_rows])
env_dir = Path(tempfile.mkdtemp(prefix="tool-call-efficiency-"))
env = wai.export_environment(
clean,
env_dir,
name="tool_call_efficiency",
reward=REWARD_REF,
tools=TOOLS,
system_prompt=POLICY,
)Nothing in the band. The shipped agent is unanimous on every task, so
there is nothing to learn from; raise repeats= or make the tasks harder
(hard_share=0.7).
export_environment refuses the verifier object. A verifier defined in
the script has no importable name. Pass "your_module:within_budget".
4. After: same tasks, both numbers, then report
Score the trained agent on the frozen tasks and compare. target is
the claim; must_not_regress=["solved"] is the check. "Over-Optimization":
a proxy can rise while the real goal falls, and an agent that stops calling
tools scores perfectly on calls and zero on solves. When solved scores the
same on every row the report says the guard cannot fail; that is a floor
both agents share, not a pass.
after = wai.simulate(
after_agent,
tools=TOOLS,
system_prompt=POLICY,
tasks=holdout,
runs=3,
mode="rl",
repeat_policy="fixed",
simulator=False,
reproducible=True,
seed=1,
concurrency=1,
)
after_rows = grade(stamp(after.rows()))
after_eff, after_corr, after_calls = score(after_rows)
delta = wai.delta_report(
before_rows,
after_rows,
target="pass_at_1",
must_not_regress=["solved"],
)
print(wai.format_delta_report(delta))Report both behaviors on both versions. The platform's verdict compares
the candidate to the served version and counts every other behavior that
came out lower. Drop transport=fake to talk to the platform; pass
hours=, gpu=, cost_usd= to finish from the trainer.
tracked = track(
"order-bot",
model="Qwen/Qwen3-4B",
harness=Harness(instructions=POLICY, tools=TOOLS),
transport=fake, # drop this line to talk to the platform
)
tracked.behavior(
Behavior(
name="tool-call-efficiency",
test_version="v1",
n=n_tasks,
judge=Judge(name="within_budget verifier", agreement=1.0, human_n=len(CASES)),
noise_floor=pct(spread["run_std"]),
contamination=0, # decontaminate ran; else pass what it would have dropped
reward_is_judge=False,
description=f"Share of held-out tasks solved within {BUDGET} tool call(s)",
)
)
tracked.behavior(
Behavior(
name="correctness",
test_version="v1",
n=n_tasks,
judge=Judge(name="solved verifier", agreement=1.0, human_n=len(CASES)),
noise_floor=pct(spread["run_std"]),
reward_is_judge=False,
description="Share of held-out tasks solved, any number of calls",
)
)
base = tracked.run("v0", method="none")
base.score("tool-call-efficiency", pct(before_eff.pass_at_1), ci=half(before_eff.ci95), n=n_tasks)
base.score("correctness", pct(before_corr.pass_at_1), ci=half(before_corr.ci95), n=n_tasks)
base.finish()
tracked.promote("v0")
run = tracked.run("v1", method="GRPO", targets=["tool-call-efficiency"], trained_on=[env["name"]])
run.score("tool-call-efficiency", pct(after_eff.pass_at_1), ci=half(after_eff.ci95), n=n_tasks)
run.score("correctness", pct(after_corr.pass_at_1), ci=half(after_corr.ci95), n=n_tasks)
run.finish()
verdict = str(tracked.verdict())
print(verdict)The line to read: tool-call-efficiency: v1 beats v0 by 45.5 (interval
excludes zero, clears the noise floor of 0); judge agreement 1 on 3, n=60.
"about the same" means the interval includes zero: add tasks. "1 behavior
lower" means correctness fell: the budget is too tight for some tasks, or
the agent learned to skip a call it needed; raise BUDGET or fix the checks.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

