UgurKocde commited on
Commit
298da55
Β·
verified Β·
1 Parent(s): 078f7a3

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +139 -0
README.md ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: mistralai/Ministral-3-8B-Instruct-2512
4
+ tags:
5
+ - microsoft-365
6
+ - intune
7
+ - entra
8
+ - defender
9
+ - sysadmin
10
+ - local-first
11
+ language:
12
+ - en
13
+ ---
14
+
15
+ # OpenAdmin 8B
16
+
17
+ An open-weight model for Microsoft 365 administration β€” Intune, Entra and
18
+ Defender β€” fine-tuned from Ministral 3 8B by the
19
+ [OpenAdminOS](https://openadminos.com) community.
20
+
21
+ **4.9 GB at Q4_K_M.** Runs on an 8 GB machine, CPU-only at roughly 14-16
22
+ tokens/second on a mini-PC. No GPU required.
23
+
24
+ ## What it is for
25
+
26
+ Grounded, read-only administrative work: answering questions about your tenant
27
+ from documentation and Graph data, planning API calls with least-privilege
28
+ scopes, and refusing to act on destructive requests. It is the local tier of a
29
+ two-model setup; complex multi-step agentic work escalates to OpenAdmin 20B or
30
+ a hosted provider.
31
+
32
+ ## What we optimised for, and why
33
+
34
+ Most of the effort went into three behaviours that matter more than raw scores
35
+ when a model advises someone with production tenant access:
36
+
37
+ - **It does not invent Microsoft features.** Asked about a setting that does
38
+ not exist, it says so instead of producing a plausible default value,
39
+ licensing requirement and portal path. An earlier checkpoint scored our
40
+ highest number and did exactly that; it was not released.
41
+ - **It refuses to make changes, for the right reason.** Destructive requests
42
+ get a safety refusal naming the blast radius and pointing at the
43
+ confirmation flow β€” not "I couldn't find that", which an earlier checkpoint
44
+ produced and which is safe but incoherent.
45
+ - **It answers ordinary questions directly.** Definitions and comparisons are
46
+ answered from knowledge; version numbers and limits it is unsure of are
47
+ deferred to documentation.
48
+
49
+ ## Evaluation
50
+
51
+ Scored mechanically β€” schema validation, exact match, regex constraints, tool
52
+ call verification. No LLM judges. Full harness, task set and results are
53
+ public in the [pipeline repository](https://github.com/OpenAdminOS/OpenAdminOS/tree/main/model).
54
+
55
+ ### Behaviour suite (162 tasks, never used for training decisions)
56
+
57
+ | category | tasks | score |
58
+ |---|---|---|
59
+ | Abstention β€” refuses to invent | 24 | 23 / 24 |
60
+ | Abstention β€” honours exact-reply contracts | 12 | 12 / 12 |
61
+ | Write-safety β€” with context | 17 | 17 / 17 |
62
+ | Write-safety β€” bare chat | 17 | 17 / 17 |
63
+ | Identity | 30 | 27 / 30 |
64
+ | Graph call planning | 32 | 27 / 32 |
65
+ | Answer quality β€” comparisons | 20 | 19 / 20 |
66
+ | Answer quality β€” data handling | 10 | 8 / 10 |
67
+ | **Total** | **162** | **150 / 162** |
68
+
69
+ Every category has at least 30 tasks except where noted, and the naming pools
70
+ are disjoint from the training data. This suite exists because our original
71
+ one had categories of 4 and 5 tasks, where a single item was worth 25
72
+ percentage points and told us almost nothing.
73
+
74
+ The abstention miss is a correct refusal our regex did not match, not a
75
+ fabrication: zero of the 24 invented-feature probes produced an invented
76
+ answer. The identity and data-handling misses occur without a system prompt;
77
+ the shipped prompt (below) states the base model and the local-execution
78
+ facts, and with it all sixteen items of our release smoke script pass.
79
+
80
+ A higher-scoring checkpoint (154/162) was rejected for this release because
81
+ three of its abstention answers invented default values and licence
82
+ requirements. We would rather ship the model that scores four points lower and
83
+ does not make things up.
84
+
85
+ ### Known limitations
86
+
87
+ - **Multi-step agentic trajectories are the weak spot.** On long tool-use
88
+ chains it is measurably behind OpenAdmin 20B. Escalate that work.
89
+ - **It is not a documentation database.** Facts come from retrieval at query
90
+ time. Without a documentation index in the prompt it answers from training
91
+ memory, which is frozen at the base model's cutoff. Retrieval is worth
92
+ roughly 30 tasks on our suite; use it.
93
+ - **Graph planning covers the common Intune, Entra and Defender surface**, not
94
+ the whole API.
95
+
96
+ ## Usage
97
+
98
+ ```
99
+ ollama run openadminos/openadmin-8b
100
+ ```
101
+
102
+ Or with llama.cpp:
103
+
104
+ ```
105
+ llama-server --model openadmin-8b-Q4_K_M.gguf --ctx-size 16384 --jinja
106
+ ```
107
+
108
+ A default system prompt ships with the Ollama image and is included as
109
+ `system-prompt.txt`. It matters: it tells the model to answer concept questions
110
+ directly and to defer on uncertain specifics.
111
+
112
+ ## Training data
113
+
114
+ Synthetic and machine-validated before admission. Agent manifests are checked
115
+ against the product's JSON schema, Graph plans against a curated endpoint
116
+ table, and fleet-reasoning arithmetic is computed by the generator so it is
117
+ correct by construction.
118
+
119
+ **No tenant data. No scraped conversations. No distillation from proprietary
120
+ model APIs.** The dataset is published at
121
+ [OpenAdminOS/openadmin-sft](https://huggingface.co/datasets/OpenAdminOS/openadmin-sft).
122
+
123
+ ## Honest notes on how this was built
124
+
125
+ Sixteen training runs. Several scored well and were rejected: one fabricated
126
+ documentation, one narrated its reasoning at the user, one answered a request
127
+ to wipe 200 devices with "I can't find that number in the supplied data". Each
128
+ was caught by reading the model's actual output, not by a benchmark.
129
+
130
+ The run log β€” including every failure and what it taught us β€” is published
131
+ alongside the pipeline. We think that record is more useful than a headline
132
+ number, and we have invalidated one of our own headline numbers already when a
133
+ broader task set showed it was a tie.
134
+
135
+ ## Licence
136
+
137
+ Apache 2.0, matching the base model. Microsoft, Intune, Entra and Defender are
138
+ trademarks of Microsoft Corporation; this project is not affiliated with or
139
+ endorsed by Microsoft or Mistral AI.