Method
Davinci-ToolData is built by two complementary pipelines that share one execution and verification
interface:
- EGTS — Execution-Grounded Task Synthesis (authored systems). An explorer interacts with a
resettable executable world; user tasks are synthesized from the recorded outcome; the world is
reset and the task is replayed with a guide, and the replay is accepted only if it recovers the
explored outcome. Structural checks, a hard factual judge, and a soft quality judge filter the
results.
- EES — Executable Environment Synthesis (synthesized systems). Audited executable domains
(191 domains in 19 categories) produce state-grounded tasks with executable verifiers within one
domain (EES-Single), and are composed into shared multi-domain worlds (246 compositions) with
shared entities, linking fields, cross-domain policies, and coherence constraints (EES-Cross).
Training has two stages: SFT on the verified demonstrations, then decision-level DPO, which
reuses restorable states and executable verifiers to fork the SFT policy at decision points, execute
alternative actions from the same state, and keep pairs whose verified downstream outcomes differ
(1,150 pairs).
Main results
Table with columns: Model, τ²-bench Retail, τ²-bench Telecom, τ²-bench Avg., BFCL v4 MT Avg., MCP-Atlas| Model | τ²-bench Retail | τ²-bench Telecom | τ²-bench Avg. | BFCL v4 MT Avg. | MCP-Atlas |
|---|
| Qwen3-Coder-480B-A35B-Instruct | 77.5 | 39.5 | 58.5 | 43.5 | 28.1 |
| Kimi-K2-Instruct | 70.6 | 65.8 | 68.2 | 33.4 | 59.6 |
| MiniMax-M2.1 | 81.6 | 87.0 | 84.3 | 71.4 | 59.6 |
| GLM-4.7 | 79.8 | 98.2 | 89.0 | 65.4 |
All scores are from the authors' evaluations under the official protocols; MCP-Atlas uses the 89
tasks that do not require external API keys. Under the same backbone and SFT hyperparameters,
Davinci-ToolData exceeds the public Toucan-1.5M release by 7.4 / 18.7 / 30.3 points.
Transfer to smaller models (SFT on Davinci-ToolData):
Table with columns: Model, τ²-bench Avg., BFCL v4 MT Avg.| Model | τ²-bench Avg. | BFCL v4 MT Avg. |
|---|
| Qwen3-8B → + Davinci-ToolData | 32.5 → 74.6 | 15.4 → 33.9 |
| Qwen3-14B → + Davinci-ToolData | 33.4 → 76.8 | 21.1 → 41.4 |
Data sources are complementary (SFT on Qwen3-Coder-30B-A3B-Instruct):
Table with columns: EGTS, EES-Single, EES-Cross, τ²-bench, BFCL v4, MCP-Atlas| EGTS | EES-Single | EES-Cross | τ²-bench | BFCL v4 | MCP-Atlas |
|---|
| ✓ | | | 78.9 | 57.4 | 28.1 |
| ✓ | | 82.0 | 54.5 | 29.2 |
| | ✓ |
Quickstart
The model uses the Qwen3-Coder chat template and tool-call format (chat_template.jinja).
vLLM
vllm serve SII-Enigma/Davinci-Tool-30B \ --enable-auto-tool-choice \ --tool-call-parser qwen3_coder \ --max-model-len 65536
Then call it through any OpenAI-compatible client with a tools list.
from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "SII-Enigma/Davinci-Tool-30B"tokenizer = AutoTokenizer.from_pretrained(model_id)model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto") tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a city.", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, },}]messages = [{"role": "user", "content": "What's the weather in Shanghai?"}] inputs = tokenizer.apply_chat_template( messages, tools=tools, add_generation_prompt=True, return_tensors="pt").to(model.device)outputs = model.generate(inputs, max_new_tokens=512, use_cache=True)print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=False))
generation_config.json ships the Qwen3-Coder default sampling settings
(temperature=0.7, top_p=0.8, top_k=20, repetition_penalty=1.05).
Model details
Table | |
|---|
| Architecture | Qwen3MoeForCausalLM |
| Parameters | 30.5B total, 3.3B activated |
| Layers / experts | 48 layers, 128 experts, 8 activated per token |
| Attention | 32 query heads, 4 KV heads (GQA) |
| Context (config) | 262,144 tokens |
| Precision | BF16 safetensors |
Training settings
Table with columns: Setting, SFT, DPO| Setting | SFT | DPO |
|---|
| Initialization | Qwen3-Coder-30B-A3B-Instruct | SFT checkpoint (also the frozen reference) |
| Data | Davinci-ToolData, 30,395 trajectories | 1,150 decision-level preference pairs |
| Learning rate / schedule | 1e-5, cosine, no warmup | 5e-6, cosine, 3% warmup |
| Epochs | 4 | 1 |
| Max sequence length | 32,768 | 24,576 |
| Batch per device × grad. accum. |
License
Released under the Apache 2.0 License, following the base model Qwen3-Coder-30B-A3B-Instruct.
Citation
@article{yuan2026davincitool, title = {Davinci-Tool: Scaling Agentic Tool-Use Supervision with Verifiable Executable Environments}, author = {Yuan, Xiaoyang and Zhao, Ji and Hu, Xingyu and Wang, Wenhan and Hu, Yutao and Bin, Yi and Shao, Wenqi and Zhang, Qiaosheng and Liu, Pengfei and Qiao, Yu}, journal = {arXiv preprint arXiv:XXXX.XXXXX}, year = {2026}}