Statim Decide Multilingual Base: Emotion adapter
Licence notice (2026-10-03). The base model this adapter requires (multilingual 0.7.0) was trained partly on data that is non-commercial, ShareAlike or under an unknown licence. From 2026-10-03 the base and this adapter are offered only under PolyForm Noncommercial 1.0.0; the Small Business and Free Trial licences and the commercial licence do not apply to them. A replacement trained only on cleared data will follow. Details: DATA_LICENSES.md.
A LoRA adapter that improves the Emotion decisions of
Beko2210/statim-decide-multilingual-base 0.7.0.
Checked with Statim 0.8.3: the published f32 file loads it merged at load, the q8_0 file as runtime LoRA. LoRA adapters need Statim 0.8.0 or later.
Quick start
hf download Beko2210/statim-decide-multilingual-base statim-decide-multilingual-base-q8_0.gguf --local-dir models
hf download Beko2210/statim-decide-multilingual-base-emotion statim-decide-multilingual-base-emotion.lora.gguf --local-dir models
statim serve -m multilingual=models/statim-decide-multilingual-base-q8_0.gguf --adapter multilingual:emotion=models/statim-decide-multilingual-base-emotion.lora.gguf --port 8080
curl -s localhost:8080/v1/systemone -d '{"state": {"text": "They cancelled my flight again and nobody even apologised!"}, "questions": {"emotion": {"type": "choice", "instructions": "Which emotion is expressed most strongly?", "criteria": ["anger", "disgust", "fear", "joy", "sadness", "surprise"]}}, "adapter": "emotion"}'
curl -s localhost:8080/v1/systemone -d '{"state": {"text": "They cancelled my flight again and nobody even apologised!"}, "questions": {"emotion": {"type": "choice", "instructions": "Which emotion is expressed most strongly?", "criteria": ["anger", "disgust", "fear", "joy", "sadness", "surprise"]}}, "adapter": "auto"}'
Python (Python SDK 0.8.3 or later):
from statim import Client
client = Client("http://127.0.0.1:8080")
client.decide({"text": "They cancelled my flight again and nobody even apologised!"}, {"emotion": {"type": "choice", "instructions": "Which emotion is expressed most strongly?", "criteria": ["anger", "disgust", "fear", "joy", "sadness", "surprise"]}}, adapter="emotion")
Results (experiment's f32 run)
Each cell uses 150 items (seed 20260927).
| Language | Base | Adapter | Change (points) | Verdict | Qwen3-8B zero-shot |
|---|---|---|---|---|---|
| de | 0.4533 | 0.4600 | +0.67 | within noise | 0.587 |
| en | 0.5733 | 0.6200 | +4.67 | within noise | 0.693 |
| es | 0.5733 | 0.5800 | +0.67 | within noise | 0.740 |
| fr | 0.6600 | 0.7867 | +12.67 | gain (2 SE) | 0.800 |
| hi | 0.7133 | 0.8267 | +11.34 | gain (2 SE) | 0.880 |
| pt | 0.5067 | 0.5400 | +3.33 | within noise | 0.587 |
| ru | 0.6933 | 0.7200 | +2.67 | within noise | 0.887 |
| zh | 0.5400 | 0.5600 | +2.00 | within noise | 0.653 |
| Mean | 0.5892 | 0.6367 | +4.75 | — | 0.728 |
The pooled family change is +4.75 points with 2 SE = 3.88 points (gain).
A single cell of 150 items rarely clears 2 SE on its own; the decision uses the pooled family.
Decision rule: promote when the category family gains more than 2 standard errors, pooled by rows or by suites, and nothing regresses. A regression is a pooled drop beyond 2 standard errors under either pooling, or a drop in one language cell that stays significant after Holm-Bonferroni (family-wise 5 %).
Statim is trained on this category, while Qwen3-8B runs zero-shot.
Checked on the published files
| Weights | Adapter mode | Base mean | Adapter mean | Change (points) | Cell for cell as in the experiment |
|---|---|---|---|---|---|
| f32 | merged at load | 0.5892 | 0.6367 | +4.75 | yes |
| q8_0 | runtime LoRA | 0.5892 | 0.6425 | +5.33 | — (experiment: f32) |
Training
| Source | Rows | Licence |
|---|---|---|
Johnson8187/Chinese_Multi-Emotion_Dialogue_Dataset (default) | 6,200 | MIT |
JusteLeo/French-emotion (default) | 6,200 | MIT |
brighter-dataset/BRIGHTER-emotion-categories (hin) | 3,629 | CC-BY-4.0 |
brighter-dataset/BRIGHTER-emotion-categories (mar) | 3,768 | CC-BY-4.0 |
github:wwbp/empathic_reactions (data/responses/data/messages.csv) | 3,719 | CC-BY-4.0 |
jmccardle/pulse-sofroniew-emotion-concept-texts (default) | 6,200 | CC-BY-4.0 |
llm-for-emotion/Cultural-Emo (`ara | deu | eng |
shreyaspullehf/emotion-dataset-20-emotions (default) | 6,200 | MIT |
tanaos/synthetic-emotion-detection-dataset-v1 (default) | 6,200 | MIT |
LoRA rank 16, alpha 32.0, dropout 0.05;
target modules Wqkv, Wo, Wi; 88 wrapped modules and
3,379,200 trainable parameters.
- Items: 45,714 train, 401 dev.
- Updates: 984.
- Dev accuracy: 0.6309 before, 0.7007 after.
- Time: 1124.1 seconds; peak memory: 2,319 MB.
Provenance
- Adapter GGUF SHA-256:
c832dc6aada9bf0b07e7f481b554d51ddff2fe0c1365ba49145de13f3952bdc8 - PEFT safetensors SHA-256:
a347899cb7e45d1130add3de9fddb278705d7ce8ea0901f7412c5dd1b0cefd34 - Training checkpoint
model.safetensorsSHA-256:c44425f14ac9d55508f73a6f371e4e2802ed59e646287c3abbec10b653a19840 - Base fingerprint:
e7a8fa743b4920850167b587226e339d651be0244fcc6a9e24fff8ed5073bae5 - Training mixture SHA-256:
b8a87e85f3bf72b61509555aba9148358760d3329ecf37a36cebd94f9358cb03 - Source registry SHA-256:
309ce8ec262886b3bfaa529934151ae0c1879595c26301e4269da276d95cbfcd
Experiment commands (paths relative to the Statim repository):
train:'.venv-train/bin/python' 'tools/finetune/train_lora.py' 'models/laya-multilingual-v9' --mixture 'data/mixture-v8.jsonl.gz' --category emotion --registry 'tools/finetune/sources/v6-keep.json' --out 'models/lora-exp1/emotion' --device cuda --epochs 2convert:'.venv/bin/python' 'tools/convert_lora.py' 'models/lora-exp1/emotion' -o 'models/lora-exp1/emotion.lora.gguf' --base 'models/laya-multilingual-v9-f32.gguf' --category emotion --name emotionserve:'build-vk/statim' serve -m 'multilingual=models/laya-multilingual-v9-f32.gguf' --adapter 'multilingual:emotion=models/lora-exp1/emotion.lora.gguf' --device vulkan --threads 16 --port 8098 --no-access-log --inference-timeout 600eval_base:'.venv/bin/python' 'bench/eval_categories.py' --strict --url http://127.0.0.1:8098 --model multilingual --suites emotion --n 150 --seed 20260927 --exclude-mixture 'data/mixture-v8.jsonl.gz' --out 'models/lora-exp1/emotion.base.jsonl'eval_adapter:'.venv/bin/python' 'bench/eval_categories.py' --strict --url http://127.0.0.1:8098 --model multilingual --suites emotion --n 150 --seed 20260927 --exclude-mixture 'data/mixture-v8.jsonl.gz' --adapter emotion --out 'models/lora-exp1/emotion.adapter.jsonl'
Protocol and experiment: docs/ADAPTERS.md. Full reproduction instructions: REPRODUCE.md.
Intended use and limits
- This adapter only helps its category; route requests with
"emotion"or"auto". - Bound to
Beko2210/statim-decide-multilingual-base0.7.0 by the base fingerprinte7a8fa743b492085…(statim.lora.base_fingerprint, SHA-256 over the checkpoint's norm and bias tensors); Statim refuses the adapter on a base whose fingerprint differs. - Languages outside the evaluated list are untested.
- Each language cell has 150 items.
- Do not automate decisions about people without human review.
- Evaluated languages with no category training data: pt, ru.
Licence
The weights may be used under any one of: PolyForm Noncommercial 1.0.0, PolyForm Small Business 1.0.0 (free commercial use below 100 people and 1 M USD revenue), PolyForm Free Trial 1.0.0 (any company, fewer than 32 days), or a Statim commercial licence (COMMERCIAL.md). Texts in LICENSE-MODEL.md. The Statim engine is Apache-2.0.
Training data attribution is listed source by source above, with the row count and licence read from the experiment registry.