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