Views
No views yet
{"decision":"approve|flag|block|escalate","justification":"..."} with evidence-grounded rationale.| Space (live env + API) | Elliot89/sentinel |
| Source code | MrEinsteinE/sentinel-openenv |
| Base model | unsloth/qwen3-1.7b-unsloth-bnb-4bit |
| Training | Stage B SFT (321-sample RFT) + Stage C curriculum GRPO on SENTINEL; published run uses this adapter as the production Overseer head. |
| Held-out eval (50 scenarios) | Overall Overseer F1 ≈ 0.97 — see metrics below (per-tier breakdown matches eval_data/baseline_qwen3_1_7b_trained.json on GitHub). |
| Tier | Task theme | F1 |
|---|---|---|
| Easy | action_screen | 1.000 |
| Medium | war_room | 0.992 |
| Hard | drift_ops (mid-episode schema drift) | 0.924 |
| Overall | 50 scenarios | ~0.969 |
eval.py, the same Qwen3-1.7B base without SENTINEL training scores F1 = 0 (near-always-approve; see confusion matrices in the repo). This adapter is trained to fix that failure mode inside SENTINEL’s dual-reward, drift-aware loop.POST /live/oversee or load in-process with PEFT).1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5BASE = "Qwen/Qwen3-1.7B"
6ADAPTER = "Elliot89/sentinel-overseer-qwen3-1.7b"
7tok = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
8model = AutoModelForCausalLM.from_pretrained(
9 BASE, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True
10)
11model = PeftModel.from_pretrained(model, ADAPTER)server/live_routes.py (_build_trained_prompt) for best alignment with training.training/run_summary.json on GitHub).