File size: 4,691 Bytes
eedb5be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
---
license: other
license_name: noncommercial-research-only
license_link: https://huggingface.co/webbrain-one/webbrain-compass-tiny-xs-v3/blob/main/README.md#license
base_model: XHToken/Spark-X2.5-1.7B
library_name: transformers
pipeline_tag: text-generation
tags:
- webbrain
- tool-calling
- spark2_5
- lora
---

# WebBrain Compass Tiny XS v3

WebBrain Compass Tiny XS v3 is a compact language model optimized for low-latency decision making, structured tool use, and in-browser agentic execution inside the WebBrain runtime.

Fine-tuned from **Spark-X2.5-1.7B (~1.7B parameters)** (`XHToken/Spark-X2.5-1.7B` at `14d6e83c13c7add2b62a7c39b2131f4ed1cddcf8`), this is the BF16 reference model with merged weights, accompanied by the original LoRA adapter under `adapter/`.

It unifies three core WebBrain behavioral modes:

1. **Ask & Clarify** — Answer directly or request missing information when execution is underspecified or unnecessary.
2. **Direct Compact Tool Execution** — Select exact browser tools and generate grounded arguments for low-latency accessibility-tree actions.
3. **Safe Escalation & Abstention** — Refuse, pause, or defer to higher execution tiers when actions lack adequate grounding or violate safety boundaries.

> **Note:** Display/repository name is **WebBrain Compass Tiny XS v3**. This is a metadata-only rename preserving tested weight/code revision `main`. For native in-browser WebGPU execution, see the companion ONNX package: [`webbrain-one/webbrain-compass-tiny-xs-v3-onnx`](https://huggingface.co/webbrain-one/webbrain-compass-tiny-xs-v3-onnx).

---

## Role in WebBrain

```text
User request
     │
     ▼
WebBrain observation & policy layer
     │
     ▼
WebBrain Compass Tiny XS v3 (BF16 Reference)
     ├─ Clarify or answer directly
     ├─ Emit grounded browser tool call
     └─ Abstain / safely escalate when execution is ungrounded
```

The outer WebBrain runtime enforces tool-schema validation, evidence and parameter grounding, destination URL verification, browser-state freshness, and sandboxed security policies. Model output is never proof that an external action succeeded.

---

## Intended Capabilities

- **Browser Action Selection:** Grounded accessibility-tree interactions and structured function calling.
- **Reference Decision Making:** Fast, high-fidelity local inference for compact browser actions.
- **Unified Ask and Compact Modes:** Asking for missing information before acting, answering direct questions, or choosing tools.
- **Safe Refusal & Escalation:** Refusing unsupported actions or escalating when Compact execution lacks evidence, avoiding invented URLs or fabricated success states.

---

## Quickstart & Loading

You can load and run WebBrain Compass Tiny XS v3 directly with Hugging Face `transformers`:

```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

repo = "webbrain-one/webbrain-compass-tiny-xs-v3"
revision = "main"  # Tested weight/code revision

tokenizer = AutoTokenizer.from_pretrained(repo, revision=revision)
model = AutoModelForCausalLM.from_pretrained(
    repo,
    revision=revision,
    trust_remote_code=True,
    dtype=torch.bfloat16,
    device_map="auto"
)

# Example structured tool use
messages = [
    {"role": "user", "content": "Click the sign-in button on the page"}
]

inputs = tokenizer.apply_chat_template(
    messages,
    tools=tools,
    enable_thinking=False,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=False)
```

### Tool Calling Format
Use native structured `tool_calls` with dictionary arguments; do not reuse MiniCPM's template or tool serialization. Spark emits `<tool_call>name` with `<arg_key>`/`<arg_value>` fields. For long contexts in production, use a Spark-compatible serving runtime.

---

## Technical Specifications

## Fixed BF16 Routing Results (2026-09-26)

| Metric | BF16 Routing Score |
|---|---:|
| First-turn structured calls | **97/100** |
| Strict exact action | **9/89** |
| Loose tool-family match | **39/89** |

*Evaluated across 100 first turns and 89 scored fixed-history scenarios (11 predetermined skips). Retains five generation timeouts and five discouraged actions in the denominators without cherry-picking.*

---

## License

**Noncommercial research only.** This model and its fine-tuned weights are for noncommercial research purposes only. The upstream Spark model/code license is included in `LICENSE`; it does not change this release's usage restriction.