--- license: apache-2.0 language: - en base_model: - Qwen/Qwen3-0.6B tags: - multiturn - toolcalling - shellcommands --- # Distil-Qwen3-0.6B-SHELLper

SHELLper

A fine-tuned Qwen3-0.6B model for multi-turn bash function calling. Trained using knowledge distillation from Qwen3-235B, this 0.6B parameter model achieves 100% tool-call accuracy on our test set over multiple turns while being small enough to run locally on any machine. ## Results | Metric | Qwen3-235B (Teacher) | Qwen3-0.6B (Base) | This Model | | --- | --- | --- | --- | | Tool call accuracy | 99% | 84.16% | **100%** | | 5-turn accuracy | 95% | 42.22% | **100%** | ## Quick Start You can follow instructions in our demo repository: [github](https://github.com/distil-labs/distil-SHELLper) ### Using Ollama ```bash # Download and create Ollama model hf download distil-labs/distil-qwen3-0.6b-SHELLper model_fp16.gguf Modelfile --local-dir distil_model cd distil_model && ollama create distil_model -f Modelfile cd .. ``` ### Using Transformers ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("distil-labs/distil-qwen3-0.6b-SHELLper") tokenizer = AutoTokenizer.from_pretrained("distil-labs/distil-qwen3-0.6b-SHELLper") tools = [ { "type": "function", "function": { "name": "ls", "description": "List directory contents", "parameters": { "type": "object", "properties": { "folder": {"type": "string", "description": "Path to the folder to list"} }, "required": ["folder"] } } } ] messages = [ {"role": "system", "content": "You are a helpful assistant that executes bash commands."}, {"role": "user", "content": "List all files in the current directory"} ] text = tokenizer.apply_chat_template(messages, tools=tools, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=256, temperature=0) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ## Model Details | Property | Value | | --- | --- | | Base Model | Qwen/Qwen3-0.6B | | Parameters | 0.6 billion | | Architecture | Qwen3ForCausalLM | | Context Length | 40,960 tokens | | Precision | bfloat16 | | Training Data | ~200 synthetic examples (expanded from 20 seeds) | | Teacher Model | Qwen3-235B-A22B-Instruct | ## Training This model was trained using the Distil Labs platform: - **Seed Data:** 20 hand-validated multi-turn bash command conversations - **Synthetic Generation:** Expanded using Qwen3-235B teacher with conversation turn expansion - **Fine-tuning:** 4 epochs with LoRA (r=128) on the synthetic dataset - **Evaluation:** Multi-turn accuracy testing across variable conversation lengths ### Training Hyperparameters - Epochs: 4 - Learning Rate: 2e-5 (linear schedule) - Batch Size: 1 (with gradient accumulation) - LoRA Rank: 128 ## Task Format ### Input Format Multi-turn conversation with tool definitions: ```json [ {"role": "user", "content": "List all files in the current directory"}, {"role": "assistant", "tool_calls": [{"function": {"name": "ls", "arguments": {"folder": "."}}}]}, {"role": "user", "content": "Now go to the src folder"} ] ``` ### Output Format A single tool call in JSON format: ```json {"name": "cd", "arguments": {"folder": "src"}} ``` ## Supported Tools The model supports 20 bash commands: | Command | Description | | --- | --- | | `cat` | Display file contents | | `cd` | Change directory | | `cp` | Copy files or directories | | `diff` | Compare files | | `du` | Estimate file space usage | | `echo` | Display text | | `find` | Search for files | | `grep` | Search file contents | | `head` | Output first part of files | | `ls` | List directory contents | | `mkdir` | Create directories | | `mv` | Move or rename files | | `pwd` | Print working directory | | `rm` | Remove files | | `rmdir` | Remove empty directories | | `sort` | Sort file contents | | `tail` | Output last part of files | | `touch` | Create empty files | | `wc` | Word, line, character count | ## Use Cases - Natural language interfaces to file systems - Command-line assistants and automation - Developer productivity tools - Educational tools for learning bash - Local, privacy-preserving AI assistants ## Limitations - Optimized for single tool call per turn - No support for pipes or combined commands - Best with up to 5 conversation turns - Trained on English requests only - Limited to the 20 supported bash commands ## License This model is released under the Apache 2.0 license. ## Links - [Distil Labs Website](https://www.distillabs.ai/?utm_source=huggingface&utm_medium=referral&utm_campaign=shellper) - [GitHub](https://github.com/distil-labs) - [Hugging Face](https://huggingface.co/distil-labs) ## Citation ```bibtex @misc{distil-qwen3-0.6b-shellper, author = {Distil Labs}, title = {Distil-Qwen3-0.6B-SHELLper: A Fine-tuned Model for Multi-turn Bash Function Calling}, year = {2025}, publisher = {Hugging Face}, url = {https://huggingface.co/distil-labs/distil-qwen3-0.6b-SHELLper} } ```