CoolFace
Datasetpublic

tpls/gemma4-coder-tool-eval

Gemma-4 Coder — tool-calling gate suite The 8-case eval behind the tool-call pass rate in our model cards' model-index: positive prompts where the model must emit a structured tool call, plus a no-tool abstain case (it must answer directly, not hallucinate a call). Use it to measure any local tool-calling model the same way we do — or to reproduce our numbers. from datasets import load_dataset cases = load_dataset("tpls/gemma4-coder-tool-eval", split="train") # each: {name… See the full description on the dataset page: https://huggingface.co/datasets/tpls/gemma4-coder-tool-eval.

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes20downloads
Dataset Card

Gemma-4 Coder — tool-calling gate suite

The 8-case eval behind the tool-call pass rate in our model cards' model-index: positive prompts where the model must emit a structured tool call, plus a no-tool abstain case (it must answer directly, not hallucinate a call). Use it to measure any local tool-calling model the same way we do — or to reproduce our numbers.

python
from datasets import load_dataset
cases = load_dataset("tpls/gemma4-coder-tool-eval", split="train")   # each: {name, user, tools, expect}

Scoring a model

Serve a GGUF on llama.cpp (llama-server --jinja), send each case's user + tools the normal OpenAI way, and check the reply against expect. Two rates, because llama.cpp --jinja doesn't recognise gemma-4's native tool-call markup:

  • —raw — llama.cpp's native parse. For gemma-4 it structurally undercounts (blind to the format).
  • —shim — the same outputs re-parsed for the native markup. This is the number that reflects training.

The shim is a tiny serve-side post-processor — ready-to-use (drop-in litellm callback + a standalone parser, Apache-2.0) at [`tpls/gemma4-tool-shim`](https://huggingface.co/tpls/gemma4-tool-shim), where the recovery algorithm is also documented so you can re-implement it.

python
# sketch: per case, POST to your OpenAI-compatible endpoint, then
#   raw_ok  = response had a structured tool_call (or correctly abstained)
#   shim_ok = same, after running the reply through the shim parser
# pass_rate = mean(ok over the 8 cases). expect == [] means "must NOT call a tool".

Files

FileWhat
tool_eval_cases.jsonlone case/line: {name, user, tools, expect}
tool_calib.txtimatrix calibration text (code + tool-call markup) used when quantizing

Scope & license

Authored by us, fully permissive (apache-2.0). This is an eval set, not training data — our training mix is a derivative of public datasets and is not redistributed (its reproducible recipe lives on each model card). Pairs with the `tpls/gemma4-tool-shim` helper and the models below.

Used by