🧠 Qwen3-4B-AgentCoder
A Fine-Tuned Model for Enhanced Tool Calling, Code Generation, and Reasoning
- Author: Bruno Pistone
- Repository: br1-pist/Qwen3-4B-AgentCoder
- License: Apache 2.0
- Base model: Qwen/Qwen3-4B-Thinking-2507
Model Description
Qwen3-4B-AgentCoder is a fine-tuned version of the Qwen3-4B-Thinking-2507 model, optimized for:
- 🧮 Complex reasoning tasks
- 🧰 Tool calling
- 💻 Code generation
The model was developed through sequential fine-tuning, followed by a Direct Preference Optimization (DPO) post-training stage to improve alignment, coherence, and reasoning accuracy.
Highlights
- Fine-tuned on three specialized datasets
- Retains thinking-mode behavior with long-context reasoning (~264K tokens)
- Post-trained with DPO using chosen/rejected pairs for better alignment
- Excellent balance between tool use, code generation, and reasoning
🚀 Direct Use
Qwen3-4B-AgentCoder can be used directly for:
- ✅ Tool calling in complex reasoning tasks
- ✅ Code generation for Python, JS, and other languages
- ✅ Multi-domain reasoning (math, logic, Q&A)
⚠️ Out-of-Scope Use
- ❌ Highly sensitive or confidential data
- ❌ Domains requiring expert-level specialization
- ❌ Tasks where full explainability is mandatory
💻 Getting Started
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "br1-pist/Qwen3-4B-AgentCoder"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
prompt = "Give me a short introduction to large language models."
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=1024)
output = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
print(output)
🧠 Training Details
Training Procedure
Phase 1 — Supervised Fine-Tuning
- Learning rate:
1e-5 - Batch size:
4 - Gradient accumulation:
4 - Epochs:
3 - Warmup steps:
100 - Weight decay:
0.01 - Sequence length: ~2.4K tokens
Training Data
interstellarninja/hermes_reasoning_tool_use(~51K) — multi-turn tool use
Phase 2 — Sequential Fine-Tuning (Supervised)
- Learning rate:
3e-5 - Batch size:
1 - Gradient accumulation:
8 - Epochs:
2 - Warmup steps:
100 - Weight decay:
0.05 - Sequence length: ~13K tokens
Training Data
ise-uiuc/Magicoder-OSS-Instruct-75K(~38K) — code generationopen-thoughts/OpenThoughts-114k(~37K) — general reasoninginterstellarninja/hermes_reasoning_tool_use(~30K) — tool usecustom/dpo-toolcode-alignment(~15K) — DPO preference pairs
Phase 3 — Post-Training - Direct Preference Optimization (DPO)
After sequential fine-tuning, the model underwent a DPO phase to enhance response alignment, reasoning robustness, and factual consistency.
- Learning rate:
1e-6 - Batch size:
2 - Gradient accumulation:
8 - Epochs:
5 - Beta: 0.2
- Loss type:
sigmoid - Warmup steps:
2 - Sequence length: ~1.5K tokens
DPO Data
- ~1.5K chosen/rejected response pairs
- Rejected samples synthetically generated to represent poor or incoherent answers
- Chosen samples verified or automatically ranked for quality and correctness
Objective
- Encourage the model to prefer chosen completions
- Improve clarity, correctness, and helpfulness
- Reduce hallucinations and verbosity
📊 Evaluation
The model was evaluated on multiple benchmarks to assess its capabilities across different domains:
| Benchmark | Score | Details |
|---|---|---|
| HumanEval | 72.0% | Base tests |
| HumanEval+ | 68.5% | Base + extra tests |
| GSM8K | 82.0% | 1082/1319 correct |
| MMLU | 77.7% | 1190/1531 correct (validation split) |
| Multi-turn Tool Calling | 70.0% | 70/100 correct |
Evaluation Datasets
- HumanEval/HumanEval+:
openai/openai_humaneval- 164 hand-written programming problems - GSM8K:
openai/gsm8k(test split) - 1,319 grade school math word problems - MMLU:
cais/mmlu(validation split) - 1,531 multiple-choice questions across 57 subjects - Tool Calling: Custom dataset - 100 tool calling scenarios
Evaluation Factors
- Tool calling accuracy
- Code generation quality
- General reasoning performance
- Alignment and factual consistency (post-DPO)
Observations
- DPO improved reasoning precision and response coherence
- Code generation accuracy increased in structured programming tasks
- Reduced non-determinism in multi-step tool use
🖥️ Technical Specifications
Model Architecture
- Model type: Causal language model
- Parameters: 4.0B
- Context length: ~264K tokens
- Thinking mode: Enabled
Compute Infrastructure
Hardware
- GPU: NVIDIA H100 (80 GB VRAM)
- System RAM: 2 TiB
- Memory per vCPU: 10.67 GiB
Software
- Python: 3.12
- Transformers: 4.55.0
- Libraries:
bitsandbytes,safetensors,torch,trl,scikit-learn,tokenizers,psutil,py7zr
🧾 Citation
BibTeX
@article{qwen3-4b-thinking-2507-toolcode,
title={Qwen3-4B-AgentCoder: A Fine-Tuned Model for Enhanced Tool Calling, Code Generation, and Reasoning},
author={Bruno Pistone},
year={2025},
journal={Hugging Face Model Hub}
}
APA
Bruno Pistone. (2025). Qwen3-4B-AgentCoder: A Fine-Tuned Model for Enhanced Tool Calling, Code Generation, and Reasoning. Hugging Face Model Hub. https://huggingface.co/br1-pist/Qwen3-4B-AgentCoder
🧭 Recommendations
- Tool use accuracy depends on task complexity
- Code generation may occasionally produce minor syntax issues
- Reasoning strongest in structured, logical, and mathematical contexts
- Avoid using this model for confidential or safety-critical applications
🧠 Qwen3-4B-AgentCoder — created by Bruno Pistone
Enhanced reasoning, tool calling, and code generation — refined with DPO alignment
- Downloads last month
- 444
Model tree for br1-pist/Qwen3-4B-AgentCoder
Base model
Qwen/Qwen3-4B-Thinking-2507