--- license: apache-2.0 tags: - tool-calling - edge-inference library_name: transformers --- # qwen3-0.6b-tool-router **A low-latency, schema-strict tool/function calling model optimized for edge-device inference.** ## Overview `qwen3-0.6b-tool-router` is a **verticalized Small Language Model (SLM)** derived from **Qwen3-0.6B**, purpose-built for **tool and function routing** under strict JSON schemas. Unlike general-purpose chat or instruction-following models, this model is optimized to run as a **deterministic router** in agentic systems, especially in **resource-constrained edge environments** (e.g., CPUs, embedded GPUs, mobile accelerators). Its sole responsibility is to reliably map **natural language queries → structured tool calls**, with **minimal latency** and **zero tolerance for hallucinated tools**. ### Key Properties - **Model Size:** 0.6B parameters - **No Chain-of-Thought:** Disabled to reduce token count and parsing cost - **Strict JSON Output:** Designed for direct machine consumption - **Low Memory Footprint:** QLoRA fine-tuning, edge-friendly quantization - **Fast Cold Start:** Ideal for on-device or near-device inference This makes it well-suited for: - On-device assistants - Local agent routers - Offline-capable systems - Privacy-sensitive deployments ### BFCL Results | Category | Score | |---------------------------|-------| | **Non-Live Parallel AST** | **83.50%** | | **Multi-Turn Base** | **90.42%** | | **Live Simple AST** | **62.86%** | | **Live Parallel AST** | **52.00%** | | **Relevance Detection** | **90.89%** | ```python import json import torch from transformers import AutoModelForCausalLM, AutoTokenizer MODEL_PATH = "AryanNsc/qwen3-0.6b-tool-router" # Load tokenizer & model tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True) tokenizer.padding_side = "left" tokenizer.pad_token = tokenizer.eos_token model = AutoModelForCausalLM.from_pretrained( MODEL_PATH, device_map="auto", torch_dtype="auto", trust_remote_code=True ) # Define a tool tools = [{ "name": "get_weather", "description": "Get weather for a city", "parameters": { "type": "object", "properties": { "city": {"type": "string"} }, "required": ["city"] } }] # Build system prompt with tools system_prompt = ( "You may call one or more functions.\n\n" "\n" + "\n".join(json.dumps(t) for t in tools) + "\n\n\n" "Return the function call inside tags." ) messages = [ {"role": "system", "content": system_prompt}, {"role": "user", "content": "What's the weather in Tokyo?"} ] # Apply chat template prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False ) inputs = tokenizer(prompt, return_tensors="pt").to(model.device) # Generate with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=256, do_sample=False, pad_token_id=tokenizer.pad_token_id ) # Decode only the generated tokens generated = outputs[:, inputs.input_ids.shape[1]:] text = tokenizer.decode(generated[0], skip_special_tokens=True) print(text) ``` ## Why This Model for Edge Inference? Edge environments demand: - Small model size - Predictable latency - Deterministic outputs - Minimal parsing overhead This model was explicitly trained to satisfy those constraints.