jedisct1/tool-calling
Tool Calling Harness Training Corpus This dataset contains supervised tool-calling conversations and executable eval tasks for three local coding-agent harnesses: Swival opencode Codex CLI The examples are OpenAI-style chat records. Assistant tool calls use a tool_calls array with JSON-encoded function arguments, followed by tool-result messages and final assistant responses. The corpus is intended for fine-tuning and evaluating local models that need to choose the right tool… See the full description on the dataset page: https://huggingface.co/datasets/jedisct1/tool-calling.
Tool Calling Harness Training Corpus
This dataset contains supervised tool-calling conversations and executable eval tasks for three local coding-agent harnesses:
- Swival
- opencode
- Codex CLI
The examples are OpenAI-style chat records. Assistant tool calls use a tool_calls array with JSON-encoded function arguments, followed by tool-result messages and final assistant responses. The corpus is intended for fine-tuning and evaluating local models that need to choose the right tool, use the correct argument shape, recover from harness-specific mistakes, and verify coding work through the actual harness.
Files
Training splits:
swival/train.jsonl: 6,064 examplesopencode/train.jsonl: 6,290 examplescodex/train.jsonl: 6,410 examples
Eval task specs:
swival/eval.jsonl: 5 executable eval tasksopencode/eval.jsonl: 5 executable eval taskscodex/eval.jsonl: 5 executable eval tasks
Tool inventories:
swival/tool_inventory.jsonopencode/tool_inventory.jsoncodex/tool_inventory.json
Harness support files:
configs/opencode-qwen35.jsonconfigs/codex-qwen35.tomlscripts/run_swival_eval.pyscripts/run_opencode_eval.pyscripts/run_codex_eval.pyscripts/validate_dataset.pyscripts/validate_opencode_dataset.pyscripts/validate_codex_dataset.py
Local Harness Targets
The generated eval runners were tested against a local OpenAI-compatible qwen35 server at http://127.0.0.1:8000.
Swival uses:
swival --profile omlxopencode uses:
bunx opencode-ai@latest run --model qwen35/qwen35Codex uses:
env OMLX_API_KEY=omlx codex -a never exec --json --ephemeral --skip-git-repo-check --sandbox workspace-write -c model_provider=\"omlx\" -m qwen35Validation
The source workspace validated the generated artifacts with:
uv run python scripts/validate_dataset.py data/swival_tool_calling_train.jsonl
uv run python scripts/validate_dataset.py data/swival_tool_calling_eval.jsonl
uv run python scripts/validate_opencode_dataset.py data/opencode_tool_calling_train.jsonl
uv run python scripts/validate_opencode_dataset.py data/opencode_tool_calling_eval.jsonl
uv run python scripts/validate_codex_dataset.py data/codex_tool_calling_train.jsonl
uv run python scripts/validate_codex_dataset.py data/codex_tool_calling_eval.jsonl
uv run python scripts/run_swival_eval.py --self-check
uv run python scripts/run_opencode_eval.py --self-check
uv run python scripts/run_codex_eval.py --self-checkLive smoke tests were also run for opencode and Codex against the local qwen35 endpoint. Swival, opencode, and Codex each have their own tool naming and argument conventions, so the examples intentionally avoid collapsing them into one generic schema.
Schema
Training rows use:
{
"id": "string",
"split": "train",
"tags": ["harness", "tool_name"],
"messages": [
{"role": "user", "content": "task"},
{
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_1",
"type": "function",
"function": {
"name": "tool_name",
"arguments": "{\"key\":\"value\"}"
}
}
]
},
{"role": "tool", "tool_call_id": "call_1", "name": "tool_name", "content": "tool result"},
{"role": "assistant", "content": "final response"}
]
}Eval rows define disposable workspace files plus verifiers such as exact file contents, substring checks, missing-file checks, JSON field checks, and command checks.
