Views
No views yet
{"action":"B","turns":10}. The caller holds that selection for the committed turns before consulting the policy again.generate() is not a supported interface.dari-ai/router-slm: v1 emits bare {"action":"B"} every turn. v2 adds the lease commitment (menu: 5, 10, or 30 turns) and expects cost projections at those horizons in its input. Neither direction is drop-in compatible.1import torch
2from peft import PeftModel
3from transformers import AutoModelForCausalLM, AutoTokenizer
4
5BASE_MODEL = "Qwen/Qwen3.6-35B-A3B"
6BASE_REVISION = "995ad96eacd98c81ed38be0c5b274b04031597b0"
7
8tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, revision=BASE_REVISION)
9base_model = AutoModelForCausalLM.from_pretrained(
10 BASE_MODEL, revision=BASE_REVISION, device_map="auto", dtype=torch.bfloat16
11)
12model = PeftModel.from_pretrained(base_model, "dari-ai/router-slm-v2", revision="v40")
13model.eval()main. v40 (the final training checkpoint) is the recommended default.v40 adapter sha256: e6a2ab867c18d2789bbbdf978ee699d2630d2cbe4f6563d137eaacb3e4dd2be2| config | solved | cost/solve |
|---|---|---|
| router-slm-v2 v40 | 71/89 (79.8%) | $0.91 |
| hand-tuned production config | 71/89 (79.8%) | $1.07 |
| openrouter auto (beta) | 59/89 (66.3%) | $0.73 |
Qwen/Qwen3.6-35B-A3B, trained with episodic GRPO on live SWE-bench coding-agent trajectories (reward: task success minus small cost and thinking-length penalties). Inference adapter only — no optimizer state or trajectory data.