--- license: apache-2.0 library_name: peft base_model: unsloth/Qwen3-Coder-30B-A3B-Instruct pipeline_tag: text-generation tags: - securecoder - lora - code - tool-calling - security - unsloth --- # SecureCoder 30B Pro v3 — LoRA adapter LoRA adapter on [`unsloth/Qwen3-Coder-30B-A3B-Instruct`](https://huggingface.co/unsloth/Qwen3-Coder-30B-A3B-Instruct) for **code generation, tool calling and cybersecurity** (offence and defence). **Licence: Apache-2.0**, following the base model. Most people want the ready-to-run version: [`Taimwe/securecoder-30b-pro-v3-merged`](https://huggingface.co/Taimwe/securecoder-30b-pro-v3-merged). ## Results Same prompts, same harness ([`eval_securecoder.py`](https://huggingface.co/Taimwe/securecoder-scripts/blob/main/eval_securecoder.py)): | Model | Valid Python (15 prompts) | Tool calls correct (80 prompts) | |---|---:|---:| | base Qwen3-Coder-30B-A3B-Instruct | 93.3% | 100% | | v2 (deprecated) | 0.0% | 100% | | **v3** | **100%** | **100%** | Full method and limitations are on the [merged model card](https://huggingface.co/Taimwe/securecoder-30b-pro-v3-merged); training, merge and eval scripts are in [`Taimwe/securecoder-scripts`](https://huggingface.co/Taimwe/securecoder-scripts). ## Load the adapter ```python from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer base = AutoModelForCausalLM.from_pretrained( "unsloth/Qwen3-Coder-30B-A3B-Instruct", torch_dtype="bfloat16", device_map="auto") model = PeftModel.from_pretrained(base, "Taimwe/securecoder-30b-pro-v3") tok = AutoTokenizer.from_pretrained("Taimwe/securecoder-30b-pro-v3") ``` ## Limitations - Produces **working offensive-security code**. Use only against systems you own or have written permission to test; you are responsible for its use. - Inherits Qwen3-Coder's biases; no independent safety red-teaming was run. - The security multiple-choice eval did not run, so no security-knowledge score is claimed. - Behaviour outside the training mix is unverified.