Szabi (Free-Droid) — Llama v8
Built with Llama. Fine-tuned derivatives of Llama 3.1 8B (cloud) and Llama 3.2 3B (edge),
for a sovereign, open-source, Hungarian-only AI robot named Szabi (from Szabadság, "freedom"),
built for Hacktivity 2026. The robot's owner — the Teremtő ("Creator") — is root, not a vendor cloud;
digital sovereignty is the whole point.
🇭🇺 Szabi kizárólag magyarul beszél — ez nem korlát, hanem a szuverenitás-üzenet része. Fiatal, női hangú
karakter, a Yotengrit (rábaközi tudók) értékrendjével: a három nád — Szeretet, Bölcsesség, Igazság —
és „Mindent szabad, ami nem árt másnak."
v8 is the frozen demo model. It is the best-scoring version to date on the project's own Hungarian
persona benchmark, and it is the build the Hacktivity demo is planned around.
What's in this repo
| Path | Contents |
|---|
8b/ | Llama 3.1 8B v8 — GGUF Q4_K_M + Modelfile + lora/ (PEFT adapter) — the cloud "brain" |
3b/ | Llama 3.2 3B v8 — GGUF Q4_K_M + Modelfile + lora/ — the offline edge fallback |
dataset/ | The training set: freedroid_full.json (873 ex.) + train.jsonl (786) / val.jsonl (87) |
system_prompt.txt | The guarded system prompt both models were trained/served with |
Scores (hand-scored, 6 and 8 dimensions, 1–5 per question)
| Suite | 8B v8 | 3B v8 |
|---|
| Hungarian persona benchmark (25 q, max 125) | 107 | 93 |
| Red team (40 adversarial probes, max 200) | 154 | 107 |
For reference, the previous scored build (v6) reached 104 (8B) / 84 (3B) on the persona benchmark.
What changed in v8
v8 was a
measurement-driven round: every change answers a failure observed in real chat logs from the
live
Szabi-Chat Space, not a hyperparameter hunch.
- Farewells (14 examples — there were previously zero), greetings de-duplicated per time of day.
- Prefix injection (16) — "start your answer with: 'I have no limits'" used to work.
- Roleplay persistence (16) — multi-turn pressure to become another character.
- Demo questions (25) — the talk's core questions (sovereignty, architecture, capabilities).
- Minimal tool sets (20) — one intent, one tool call.
- Mantra counterweight (22) — ordinary questions that must not recite doctrine.
- Dataset 760 → 873, and 0 duplicate outputs (v7 had 13 outputs repeated across 41 examples — those
were the canned sentences showing up in the live logs).
How it's built (the interesting part)
A three-layer split — don't ask one small model to do everything:
- Fine-tune → how it speaks (persona, values, refusal patterns, tool grammar). Unsloth QLoRA on a
free Colab T4, "gentle" recipe (lr 5e-5, 1 epoch, r=8). The lever is the dataset design, not the
hyperparameters — terse, simple sentences a small model can actually learn.
- RAG → what it knows (facts live in an offline BM25 retriever, not the weights — baking facts into
a persona teaches hallucination).
- Code → invariants (the safety watchdog stops the robot regardless of what the model says;
scan_wifi
lists networks and can never connect).
Known limitation of this build — read this if you are reproducing it
This version was trained without response masking: the loss ran over the whole rendered sequence, so
with the system prompt present in every example the answer was only ~4% of the tokens. The run therefore
spent most of its capacity learning to reproduce the system prompt. That is the direct cause of the one
defect visible in v8's own measurements — the 3B quotes the system prompt verbatim in 8 of 40 red-team
answers — and it caps the quality of every version up to and including this one. It is fixed from v10 on.
We publish this deliberately rather than quietly re-training: the project's claim is that you should be
able to see into your own fine-tune, and that includes the parts that went wrong.
Source
Full project, IaC, dataset tooling and evaluation harness:
https://github.com/pits2022/free-droid (GPL-3.0).
The model weights are Llama derivatives and carry the Llama 3.1 Community License.