Instructions to use Qwen/Qwen3-Coder-30B-A3B-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Qwen/Qwen3-Coder-30B-A3B-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Qwen/Qwen3-Coder-30B-A3B-Instruct") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-Coder-30B-A3B-Instruct") model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-Coder-30B-A3B-Instruct") 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=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Inference
- HuggingChat
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use Qwen/Qwen3-Coder-30B-A3B-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Qwen/Qwen3-Coder-30B-A3B-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Qwen/Qwen3-Coder-30B-A3B-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Qwen/Qwen3-Coder-30B-A3B-Instruct
- SGLang
How to use Qwen/Qwen3-Coder-30B-A3B-Instruct 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 "Qwen/Qwen3-Coder-30B-A3B-Instruct" \ --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": "Qwen/Qwen3-Coder-30B-A3B-Instruct", "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 "Qwen/Qwen3-Coder-30B-A3B-Instruct" \ --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": "Qwen/Qwen3-Coder-30B-A3B-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Qwen/Qwen3-Coder-30B-A3B-Instruct with Docker Model Runner:
docker model run hf.co/Qwen/Qwen3-Coder-30B-A3B-Instruct
Update Jinja template for Jinja version compatibility
Any way to get a raw copy of this template? I'm hoping it might help resolve issues I've had with tool calling in tools like RooCode. (Unless it's the same one from Unsloth: it still doesn't work well in RooCode with Llama.cpp.)
Having the same issues. Tool calling is all wrong and hasn't worked once. Running Ollama 0.11.3, RooCode 3.25.9. And the tool calling is missing the outer wrappers for tool calling.
Example Output:
Let me read one of these files to understand its structure and then document it according to the template. I'll start with the first one.
<read_file path="Databases/Queries/avgFltHrs.md"/>
Whereas devstral produces the correct tool use:
Let me read one of these files to understand its structure and then document it according to the template. I'll start with the first one.
<read_file>
<args>
<file>
<path="Databases/Queries/avgFltHrs.md"/>
</file>
</args>
</read_file>
The XML-format raw output for Qwen should work like this: (assistant output for the case you provided above)
<tool_call>
<function=read_file>
<parameter=path>
Databases/Queries/avgFltHrs.md
</parameter>
</function>
</tool_call>
Notice that:
- LLM does not need to predict the double quotes for path "Databases/Queries/avgFltHrs.md". This can prevent the notorious problem of escaping characters in multi-line code.
- We constrain XML tags only to the special format
<function=xxx></function>and<parameter=xxx></parameter>.
That is, we do not use the function name or parameter name itself as XML tags (like the case you provided<read_file>and<file>) to prevent the potential risk incurred by arbitrary tags definition. Arbitrary XML tags will easily cause nested parsing conflicts or difficulty when the parameter value itself is XML code.