roofline-toolcall

Installation
SKILL.md

Tool calling and chat templates

Every task below means task -t ${CLAUDE_SKILL_DIR}/../roofline-toolbox/Taskfile.yml <task>, or include that Taskfile in your project Taskfile and run task infer:<task>. INFER_URL and INFER_PROFILE come from the environment, from arguments (task serve INFER_PROFILE=x) or from inference.env in the current directory.

The model emits a tool call as text in its own format (Hermes JSON inside <tool_call>, XML for Qwen3-Coder, [TOOL_CALLS] for Mistral). The engine's parser turns that text into OpenAI tool_calls. The format is dictated by the chat template in tokenizer_config.json: it must match the format the model was trained on (Burkov, pp. 164-170, ChatML and roles), otherwise no parser will help.

Procedure

  1. Model family: config.json (architectures, model_type) and the README of the weights
  2. The template supports tools: the chat_template field in tokenizer_config.json mentions tools; if it does not, take the template from the model repo or the engine (--chat-template), do not write your own
  3. Parsers from the table in references/parsers.md; confirm the name: task flags Q=tool-call-parser
  4. Into the profile: vLLM --enable-auto-tool-choice --tool-call-parser <p> [--reasoning-parser <r>]; SGLang --tool-call-parser <p> [--reasoning-parser <r>]
  5. task serve, then task smoke-toolcall: non-stream, stream, negative test, round trip with the tool role, parallel calls
  6. Connect the client per references/clients.md and run a real task (read a file, make an edit)

What smoke-toolcall checks and how to read a FAIL

Installs
1
GitHub Stars
2
First Seen
3 days ago