Instructions to use SII-Enigma/Davinci-Tool-30B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SII-Enigma/Davinci-Tool-30B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SII-Enigma/Davinci-Tool-30B") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("SII-Enigma/Davinci-Tool-30B") model = AutoModelForCausalLM.from_pretrained("SII-Enigma/Davinci-Tool-30B", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use SII-Enigma/Davinci-Tool-30B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SII-Enigma/Davinci-Tool-30B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SII-Enigma/Davinci-Tool-30B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SII-Enigma/Davinci-Tool-30B
- SGLang
How to use SII-Enigma/Davinci-Tool-30B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SII-Enigma/Davinci-Tool-30B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SII-Enigma/Davinci-Tool-30B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SII-Enigma/Davinci-Tool-30B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SII-Enigma/Davinci-Tool-30B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use SII-Enigma/Davinci-Tool-30B with Docker Model Runner:
docker model run hf.co/SII-Enigma/Davinci-Tool-30B
Davinci-Tool-30B
📄 Paper · 💻 Code · 🤗 Davinci-Tool-30B · 🤗 Davinci-Tool-30B-SFT · 🤗 Davinci-ToolData
Davinci-Tool-30B is a 30B-parameter (3B activated) Mixture-of-Experts model for agentic, multi-turn tool use, trained with SFT on Davinci-ToolData (30,395 execution-verified trajectories spanning 2,260 invoked tools) followed by decision-level DPO. It improves Qwen3-Coder-30B-A3B-Instruct from 52.4 to 88.2 on τ²-bench, from 30.4 to 62.8 on BFCL v4 multi-turn, and from 16.9 to 56.2 on MCP-Atlas, outperforming Qwen3-Coder-480B-A35B-Instruct on all three benchmarks with 1/16 of its total parameters.
Performance on τ²-bench, BFCL v4 multi-turn, and MCP-Atlas. Davinci-Tool-30B (after DPO) is hatched; its SFT checkpoint is shown for comparison.
Method
Construction of Davinci-ToolData and training of Davinci-Tool.
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
| 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 | 55.1 |
| GPT-5.2 | 81.6 | 98.2 | 89.9 | 28.9 | 61.8 |
| Claude-Sonnet-4.5 | 86.0 | 98.0 | 92.0 | 55.3 | 65.2 |
| Qwen3-Coder-30B-A3B-Instruct | 68.7 | 36.0 | 52.4 | 30.4 | 16.9 |
| + Toucan-1.5M SFT | 65.8 | 89.5 | 77.7 | 41.9 | 22.5 |
| + Davinci-ToolData SFT (Davinci-Tool-30B-SFT) | 73.7 | 96.5 | 85.1 | 60.6 | 52.8 |
| + SFT + DPO (Davinci-Tool-30B) | 79.8 | 96.5 | 88.2 | 62.8 | 56.2 |
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):
| 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):
| EGTS | EES-Single | EES-Cross | τ²-bench | BFCL v4 | MCP-Atlas |
|---|---|---|---|---|---|
| ✓ | 78.9 | 57.4 | 28.1 | ||
| ✓ | 82.0 | 54.5 | 29.2 | ||
| ✓ | 83.4 | 46.6 | 47.2 | ||
| ✓ | ✓ | 79.4 | 57.6 | 31.5 | |
| ✓ | ✓ | 82.9 | 55.6 | 50.6 | |
| ✓ | ✓ | ✓ | 85.1 | 60.6 | 52.8 |
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.
Transformers
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
| 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
| 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. | 1 × 4 | 1 × 4 |
| Other | assistant-token loss, sample packing, BF16, ZeRO-3 | β = 1.0, precomputed reference log-probs |
License
Released under the Apache 2.0 License, following the base model Qwen3-Coder-30B-A3B-Instruct.
Citation
@misc{yuan2026davincitoolscalingagentictooluse,
title={Davinci-Tool: Scaling Agentic Tool-Use Supervision with Verifiable Executable Environments},
author={Xiaoyang Yuan and Ji Zhao and Xingyu Hu and Wenhan Wang and Yutao Hu and Qiaosheng Zhang and Pengfei Liu and Yu Qiao and Yi Bin and Wenqi Shao},
year={2026},
eprint={2610.16867},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2610.16867},
}
- Downloads last month
- 298