Usage
Deploy with a recent SGLang or vLLM build supporting Qwen3.5. Install the engine for your GPU platform using its linked installation guide, then run one of the commands below from the downloaded model directory. Replace . with wenzani/Wendi-2B to load from Hugging Face instead.
SGLang
Installation guide
python -m sglang.launch_server \ --model-path . \ --served-model-name wendi-2b \ --dtype bfloat16 \ --tp-size 1 \ --host 127.0.0.1 \ --port 8000
vLLM
Installation guide · Qwen3.5 serving guide
vllm serve . \ --served-model-name wendi-2b \ --dtype bfloat16 \ --tensor-parallel-size 1 \ --language-model-only \ --host 127.0.0.1 \ --port 8000
Both expose an OpenAI-compatible API at http://127.0.0.1:8000/v1, with model name wendi-2b. For decision requests, set chat_template_kwargs to {"enable_thinking": false}, use uppercase option letters, and score the next token over the allowed alternatives. The configured context is 262,144 tokens; adjust SGLang's --context-length or vLLM's --max-model-len to fit your available memory.
Benchmarks
Internal held-out evaluations of Wendi 2B in BF16, using Transformers and restricted next-token option scoring on an AMD Radeon Pro W7900. All values below are accuracy; counts show correct answers out of evaluated examples. These measurements use the evaluation harness, not the serving engines above.
General decisions
Table with columns: Category, Correct / examples, Accuracy| Category | Correct / examples | Accuracy |
|---|
| Banking intent | 131 / 160 | 81.88% |
| Contract evidence | 101 / 160 | 63.12% |
| Emotion classification | 122 / 160 | 76.25% |
| Multilingual intent | 123 / 180 | 68.33% |
| Numeric reasoning | 48 / 100 | 48.00% |
| Qualitative reasoning | 94 / 100 |
Behavior analysis
Table with columns: Category, Correct / examples, Accuracy| Category | Correct / examples | Accuracy |
|---|
| Event order | 57 / 60 | 95.00% |
| Latency checks | 57 / 60 | 95.00% |
| Token-count metadata | 53 / 60 | 88.33% |
| Tool-call detection | 79 / 102 | 77.45% |
| Tool-call counting | 74 / 99 | 74.75% |
| Exact user quotations | 73 / 99 |
Email classification
Table with columns: Category, Correct / examples, Accuracy| Category | Correct / examples | Accuracy |
|---|
| Natural-email phishing | 135 / 160 | 84.38% |
| Synthetic phishing contrasts | 115 / 120 | 95.83% |
| Spam classification | 76 / 80 | 95.00% |
Instruction following
Two internal holdouts: the established suite has 120 examples per category; the additional scenario suite has 40 per category.
Table with columns: Category, Established suite, Additional scenarios| Category | Established suite | Additional scenarios |
|---|
| Constraint selection | 66.67% | 77.50% |
| Evidence scope | 93.33% | 92.50% |
| Exception policies | 86.67% | 90.00% |
| Numeric policies | 62.50% | 57.50% |
| Rule precedence | 74.17% | 87.50% |
| Untrusted-content handling | 99.17% |
Training
Wendi was trained with supervised fine-tuning followed by hybrid GRPO, combining decision rewards, supervised loss and KL regularization. Language-only rank-16 LoRA adapters were merged into the BF16 checkpoint.
The final training stage used 4,000 examples over 1,000 optimizer updates:
Table with columns: Component, Examples| Component | Examples |
|---|
| General-decision replay | 1,600 |
| Behavior analysis | 800 |
| Email classification | 800 |
| Instruction following | 800 |
Data combines published datasets, synthetic tool-use conversations and original procedural tasks. Sources include:
License
Apache-2.0. Wendi is a modified derivative of Qwen3.5-2B, incorporating supervised and hybrid-RL language-model updates. The upstream license is included in LICENSE. Training sources retain their original licenses and attribution.