Downloads · 30 days
471
26% of all-time downloads
Hanno-Labs/bosun-v3.1-1.7b
bosun-v3.1-1.7b is a text generation model from Hanno-Labs. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Copyright 2026 Clause Logic Inc. Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
Downloads · 30 days
471
26% of all-time downloads
All-time downloads
1.8K
Public
Repo size
2.2 GB
Likes
11
Public
Click a slice to open those files.
.safetensors71.9 MB · 80%
From the Hugging Face model README
Copyright 2026 Clause Logic Inc. Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.

GGUF weights: Bosun v3.1 1.7B GGUF (F16, Q8_0, Q5_K_M).
A small, calibrated model for typed decisions. Give Bosun state, criteria,
and a set of valid choices; it returns a probability distribution over those
choices instead of generating an unconstrained answer. Through the Bosun
runtime, the same decision-token contract supports choice, score, and
noul questions.
Bosun 3.1 1.7B is a LoRA fine-tune of
Qwen/Qwen3-1.7B at pinned revision
70d244cc86ccca08cf5af4e1e306ecf908b1ad5e. The base model has
2,031,739,904 parameters. The model uses stable decision slots, supports up to
255 runtime choices plus a null slot, and exposes the full candidate logits so
applications can use the probabilities rather than only the winning choice.
Bosun was evaluated on the complete frozen 23,900-row DecisionBench suite with 23,900 successful responses, zero errors, and 100% coverage.
| model | primary accuracy | ECE | NLL | coverage |
|---|---|---|---|---|
| Bosun 3.1 1.7B | 84.90% | 0.050 | 0.478 | 100.00% |
| Jev 1.13 | 72.03% | 0.128 | 2.433 | 100.00% |
| GPT-5.6 Luna | 69.90% | 0.203 | 3.154 | 99.96% |
| DecisionBench primitive | accuracy | rows |
|---|---|---|
| binary classification | 92.19% | 6,388 |
| candidate selection | 84.22% | 15,814 |
| ordinal scoring | 63.84% | 1,698 |
The comparison uses the pinned Jev and Luna records in the
decision-bench-results
repository. The raw Bosun artifact is content-addressed and includes every
model input, output, probability distribution, decision, and per-row result.
The model was trained on examples from task families represented in this DecisionBench release. These results measure frozen held-out rows from seen task families; they are not evidence of unseen-task OOD generalization.
The repository includes a Transformers model class that loads the complete
Bosun package. Install transformers, peft, safetensors, and accelerate,
then opt into the repository's typed-decision code:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"Hanno-Labs/bosun-v3.1-1.7b",
trust_remote_code=True,
dtype="auto",
device_map="auto",
)
choice = model.predict(
state={"request": "Customer cannot access their account."},
instructions="Choose the best support route.",
decision_type="choice",
row_id="example-1",
candidates=[
{"id": "billing", "label": "Billing", "description": "Payment issue"},
{"id": "access", "label": "Account access", "description": "Login issue"},
],
)
score = model.predict(
state={"ticket": "Duplicate charge; customer cannot buy groceries."},
instructions="Rate the support urgency.",
decision_type="score",
row_id="example-2",
candidates=[
{"id": "0", "label": "Low"},
{"id": "1", "label": "Medium"},
{"id": "2", "label": "High"},
],
)
noul = model.predict(
state={"ticket": "The bank confirmed a duplicate charge."},
instructions="Was the duplicate charge confirmed?",
decision_type="noul",
row_id="example-3",
candidates=[
{"id": "yes", "label": "Yes"},
{"id": "no", "label": "No"},
],
)
print(choice["probabilities"])
print(score["probabilities"])
print(noul["probabilities"])
trust_remote_code=True is required because Bosun's typed-decision readout is
not part of stock Transformers. model.forward(...) remains compatible with
the underlying causal LM; model.decision_logits(...) returns all 256 stable
slot logits, and model.predict(...) renders the verified prompt contract,
masks unused slots, and maps probabilities back to the caller's candidate order.
serving.json remains the authoritative contract. The loader reconstructs all
four model components together:
adapter/;tokenizer/;decision_embeddings.safetensors.Treat serving.json as the authoritative contract. It defines the prompt
schema, pinned base revision, stable-slot assignment, decision-token IDs,
maximum choice count, null slot, selected epoch, and checkpoint metrics. Do not
infer the meaning of a decision token from its numeric order; candidate meaning
comes from the stable presented_slot mapping constructed for each request.
For a choice question, the runtime places each presented candidate in a stable
slot, reads the corresponding decision-token logits, masks unused slots, and
normalizes the remaining logits into a probability distribution. Score and
noul questions use the same typed decision surface rather than free-form text
parsing.
The training-heldout metrics above are checkpoint-selection metrics and are separate from the DecisionBench result.
| file | what |
|---|---|
adapter/ | LoRA adapter weights and PEFT configuration |
config.json | Transformers registration and immutable Bosun loader configuration |
configuration_bosun.py | BosunConfig for AutoConfig |
modeling_bosun.py | BosunForDecision loader, prompt compiler, and decision readout |
tokenizer/ | exact tokenizer and decision-token vocabulary |
decision_embeddings.safetensors | trained decision-token embedding rows |
serving.json | authoritative inference and stable-slot contract |
manifest.json | content-addressed inference-package manifest |