tinyjev 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tinyjev-0.1.0/tinyjev.egg-info → tinyjev-0.1.2}/PKG-INFO +27 -17
- {tinyjev-0.1.0 → tinyjev-0.1.2}/README.md +19 -15
- {tinyjev-0.1.0 → tinyjev-0.1.2}/pyproject.toml +7 -2
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/agent.py +9 -1
- {tinyjev-0.1.0 → tinyjev-0.1.2/tinyjev.egg-info}/PKG-INFO +27 -17
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev.egg-info/requires.txt +3 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/LICENSE +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/NOTICE +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/setup.cfg +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tests/test_convert.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tests/test_decide.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tests/test_pointer_encoding.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tests/test_serve.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/__init__.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/backends/__init__.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/backends/mlx_backend.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/backends/torch_backend.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/cli.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/convert.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/families/__init__.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/families/marker.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/families/pointer.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/registry.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev/serve.py +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev.egg-info/SOURCES.txt +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev.egg-info/dependency_links.txt +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev.egg-info/entry_points.txt +0 -0
- {tinyjev-0.1.0 → tinyjev-0.1.2}/tinyjev.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tinyjev
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Typed decisions on your laptop: one forward pass, calibrated probabilities, no text generation. MLX or PyTorch.
|
|
5
5
|
Author: Ankit Aglawe
|
|
6
6
|
License: MIT
|
|
@@ -8,7 +8,11 @@ Project-URL: Homepage, https://github.com/ankit-aglawe/tinyjev
|
|
|
8
8
|
Project-URL: Issues, https://github.com/ankit-aglawe/tinyjev/issues
|
|
9
9
|
Project-URL: Weights, https://huggingface.co/AnkitAI/tinyjev-0.6b
|
|
10
10
|
Keywords: decision-model,typed-decisions,classification,calibration,system-one,jev,mlx,apple-silicon,local-inference
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
16
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
17
|
Classifier: Operating System :: MacOS
|
|
14
18
|
Classifier: Operating System :: POSIX :: Linux
|
|
@@ -32,6 +36,8 @@ Requires-Dist: torch>=2.2; extra == "convert"
|
|
|
32
36
|
Requires-Dist: safetensors>=0.4; extra == "convert"
|
|
33
37
|
Provides-Extra: demo
|
|
34
38
|
Requires-Dist: pillow>=10; extra == "demo"
|
|
39
|
+
Provides-Extra: modelscope
|
|
40
|
+
Requires-Dist: modelscope>=1.9; extra == "modelscope"
|
|
35
41
|
Provides-Extra: dev
|
|
36
42
|
Requires-Dist: pytest>=8; extra == "dev"
|
|
37
43
|
Requires-Dist: pillow>=10; extra == "dev"
|
|
@@ -41,18 +47,15 @@ Dynamic: license-file
|
|
|
41
47
|
|
|
42
48
|
<div align="center">
|
|
43
49
|
|
|
44
|
-
<
|
|
45
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header_dark.png">
|
|
46
|
-
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
47
|
-
</picture>
|
|
50
|
+
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
48
51
|
|
|
49
52
|
<p>Typed decisions, on your laptop, in one forward pass.</p>
|
|
50
53
|
|
|
51
54
|
<p>
|
|
52
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="
|
|
53
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/
|
|
54
|
-
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-
|
|
55
|
-
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/
|
|
55
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tinyjev?label=pypi&color=E46412"></a>
|
|
56
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/badge/python-3.9%2B-E46412"></a>
|
|
57
|
+
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-E46412?logo=huggingface&logoColor=FFD21E"></a>
|
|
58
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-E46412"></a>
|
|
56
59
|
</p>
|
|
57
60
|
|
|
58
61
|
<p>
|
|
@@ -62,6 +65,13 @@ Dynamic: license-file
|
|
|
62
65
|
<a href="https://github.com/ankit-aglawe/tinyjev/tree/main/examples">Examples</a>
|
|
63
66
|
</p>
|
|
64
67
|
|
|
68
|
+
<p>
|
|
69
|
+
<b>English</b> ·
|
|
70
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.zh-CN.md">简体中文</a> ·
|
|
71
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ja.md">日本語</a> ·
|
|
72
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ko.md">한국어</a>
|
|
73
|
+
</p>
|
|
74
|
+
|
|
65
75
|
</div>
|
|
66
76
|
|
|
67
77
|
TinyJev answers typed questions about text and returns probabilities, in one forward pass, on your own machine.
|
|
@@ -89,12 +99,6 @@ TinyJev is MIT licensed.
|
|
|
89
99
|
Eight real support tickets, one after another, on a base M1. Three questions per ticket in a
|
|
90
100
|
single forward pass, about 110 ms each. Every number in that recording came from a live run.
|
|
91
101
|
|
|
92
|
-
Half of them route themselves. The other half do not, and that is the interesting part. Ticket
|
|
93
|
-
six says the order was late, the wrong size, and double charged, so the probability spreads
|
|
94
|
-
across all three teams and confidence falls to 0.14. Below the gate it goes to a person instead
|
|
95
|
-
of being guessed at. A message that turns out to be a compliment does the same thing. A model
|
|
96
|
-
that only ever returned a label would have picked a team for both.
|
|
97
|
-
|
|
98
102
|
```bash
|
|
99
103
|
pip install 'tinyjev[mlx,demo]'
|
|
100
104
|
python demos/triage_desk.py --gif demo.gif
|
|
@@ -224,7 +228,13 @@ A question is `{"type": "choice" | "noul" | "score", "instructions": ..., "crite
|
|
|
224
228
|
|
|
225
229
|
One published model, `tinyjev-0.6b`: a Qwen3-0.6B-Base backbone with a pointer head, trained on public typed-decision data. It is a first release and it is small — on question types unlike anything it has seen, use the confidence gate rather than the raw label. Specialising it on a few hundred of your own labelled examples is the intended path and beats prompt tuning a larger model.
|
|
226
230
|
|
|
227
|
-
|
|
231
|
+
It handles other languages better than expected, which we did not train for. Translating 25 cases of
|
|
232
|
+
a held-out English benchmark into Chinese and re-running them scored 22/25 against 20/25 for the
|
|
233
|
+
English originals, with the question schema left in English. That is parity on a small sample, not
|
|
234
|
+
a multilingual claim, and confidence runs flatter in Chinese so fewer cases clear a fixed gate. The
|
|
235
|
+
backbone is Qwen3, which is where this comes from.
|
|
236
|
+
|
|
237
|
+
Not yet: vision, or label sets in the hundreds.
|
|
228
238
|
|
|
229
239
|
## Support this project
|
|
230
240
|
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
<
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header_dark.png">
|
|
5
|
-
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
6
|
-
</picture>
|
|
3
|
+
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
7
4
|
|
|
8
5
|
<p>Typed decisions, on your laptop, in one forward pass.</p>
|
|
9
6
|
|
|
10
7
|
<p>
|
|
11
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="
|
|
12
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/
|
|
13
|
-
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-
|
|
14
|
-
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/
|
|
8
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tinyjev?label=pypi&color=E46412"></a>
|
|
9
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/badge/python-3.9%2B-E46412"></a>
|
|
10
|
+
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-E46412?logo=huggingface&logoColor=FFD21E"></a>
|
|
11
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-E46412"></a>
|
|
15
12
|
</p>
|
|
16
13
|
|
|
17
14
|
<p>
|
|
@@ -21,6 +18,13 @@
|
|
|
21
18
|
<a href="https://github.com/ankit-aglawe/tinyjev/tree/main/examples">Examples</a>
|
|
22
19
|
</p>
|
|
23
20
|
|
|
21
|
+
<p>
|
|
22
|
+
<b>English</b> ·
|
|
23
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.zh-CN.md">简体中文</a> ·
|
|
24
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ja.md">日本語</a> ·
|
|
25
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ko.md">한국어</a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
24
28
|
</div>
|
|
25
29
|
|
|
26
30
|
TinyJev answers typed questions about text and returns probabilities, in one forward pass, on your own machine.
|
|
@@ -48,12 +52,6 @@ TinyJev is MIT licensed.
|
|
|
48
52
|
Eight real support tickets, one after another, on a base M1. Three questions per ticket in a
|
|
49
53
|
single forward pass, about 110 ms each. Every number in that recording came from a live run.
|
|
50
54
|
|
|
51
|
-
Half of them route themselves. The other half do not, and that is the interesting part. Ticket
|
|
52
|
-
six says the order was late, the wrong size, and double charged, so the probability spreads
|
|
53
|
-
across all three teams and confidence falls to 0.14. Below the gate it goes to a person instead
|
|
54
|
-
of being guessed at. A message that turns out to be a compliment does the same thing. A model
|
|
55
|
-
that only ever returned a label would have picked a team for both.
|
|
56
|
-
|
|
57
55
|
```bash
|
|
58
56
|
pip install 'tinyjev[mlx,demo]'
|
|
59
57
|
python demos/triage_desk.py --gif demo.gif
|
|
@@ -183,7 +181,13 @@ A question is `{"type": "choice" | "noul" | "score", "instructions": ..., "crite
|
|
|
183
181
|
|
|
184
182
|
One published model, `tinyjev-0.6b`: a Qwen3-0.6B-Base backbone with a pointer head, trained on public typed-decision data. It is a first release and it is small — on question types unlike anything it has seen, use the confidence gate rather than the raw label. Specialising it on a few hundred of your own labelled examples is the intended path and beats prompt tuning a larger model.
|
|
185
183
|
|
|
186
|
-
|
|
184
|
+
It handles other languages better than expected, which we did not train for. Translating 25 cases of
|
|
185
|
+
a held-out English benchmark into Chinese and re-running them scored 22/25 against 20/25 for the
|
|
186
|
+
English originals, with the question schema left in English. That is parity on a small sample, not
|
|
187
|
+
a multilingual claim, and confidence runs flatter in Chinese so fewer cases clear a fixed gate. The
|
|
188
|
+
backbone is Qwen3, which is where this comes from.
|
|
189
|
+
|
|
190
|
+
Not yet: vision, or label sets in the hundreds.
|
|
187
191
|
|
|
188
192
|
## Support this project
|
|
189
193
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tinyjev"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "Typed decisions on your laptop: one forward pass, calibrated probabilities, no text generation. MLX or PyTorch."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -12,7 +12,11 @@ license = { text = "MIT" }
|
|
|
12
12
|
authors = [{ name = "Ankit Aglawe" }]
|
|
13
13
|
keywords = ["decision-model", "typed-decisions", "classification", "calibration", "system-one", "jev", "mlx", "apple-silicon", "local-inference"]
|
|
14
14
|
classifiers = [
|
|
15
|
-
"Programming Language :: Python :: 3",
|
|
15
|
+
"Programming Language :: Python :: 3.9",
|
|
16
|
+
"Programming Language :: Python :: 3.10",
|
|
17
|
+
"Programming Language :: Python :: 3.11",
|
|
18
|
+
"Programming Language :: Python :: 3.12",
|
|
19
|
+
"Programming Language :: Python :: 3.13",
|
|
16
20
|
"License :: OSI Approved :: MIT License",
|
|
17
21
|
"Operating System :: MacOS",
|
|
18
22
|
"Operating System :: POSIX :: Linux",
|
|
@@ -30,6 +34,7 @@ mlx = ["mlx>=0.22", "mlx-lm>=0.20"]
|
|
|
30
34
|
torch = ["torch>=2.2", "transformers>=4.45"]
|
|
31
35
|
convert = ["torch>=2.2", "safetensors>=0.4"]
|
|
32
36
|
demo = ["pillow>=10"]
|
|
37
|
+
modelscope = ["modelscope>=1.9"]
|
|
33
38
|
dev = ["pytest>=8", "pillow>=10", "torch>=2.2", "transformers>=4.45"]
|
|
34
39
|
|
|
35
40
|
[project.scripts]
|
|
@@ -14,8 +14,16 @@ TYPE_ALIASES = {"noul": "boolean", "boolean": "boolean", "choice": "choice", "sc
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def _resolve(model_path, subfolder: Optional[str] = None) -> Path:
|
|
17
|
+
"""A local directory, a Hub repo id, or `modelscope:<org>/<repo>` for mirrors of
|
|
18
|
+
this model on ModelScope, which is reachable from places the Hub is not."""
|
|
17
19
|
from .registry import resolve
|
|
18
|
-
|
|
20
|
+
name = str(model_path)
|
|
21
|
+
if name.startswith("modelscope:"):
|
|
22
|
+
from modelscope import snapshot_download as ms_download
|
|
23
|
+
root = Path(ms_download(name.split(":", 1)[1]))
|
|
24
|
+
return root / subfolder if subfolder else root
|
|
25
|
+
|
|
26
|
+
repo, sub = resolve(name)
|
|
19
27
|
sub = subfolder or sub
|
|
20
28
|
p = Path(repo).expanduser()
|
|
21
29
|
if p.exists():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tinyjev
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Typed decisions on your laptop: one forward pass, calibrated probabilities, no text generation. MLX or PyTorch.
|
|
5
5
|
Author: Ankit Aglawe
|
|
6
6
|
License: MIT
|
|
@@ -8,7 +8,11 @@ Project-URL: Homepage, https://github.com/ankit-aglawe/tinyjev
|
|
|
8
8
|
Project-URL: Issues, https://github.com/ankit-aglawe/tinyjev/issues
|
|
9
9
|
Project-URL: Weights, https://huggingface.co/AnkitAI/tinyjev-0.6b
|
|
10
10
|
Keywords: decision-model,typed-decisions,classification,calibration,system-one,jev,mlx,apple-silicon,local-inference
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
16
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
17
|
Classifier: Operating System :: MacOS
|
|
14
18
|
Classifier: Operating System :: POSIX :: Linux
|
|
@@ -32,6 +36,8 @@ Requires-Dist: torch>=2.2; extra == "convert"
|
|
|
32
36
|
Requires-Dist: safetensors>=0.4; extra == "convert"
|
|
33
37
|
Provides-Extra: demo
|
|
34
38
|
Requires-Dist: pillow>=10; extra == "demo"
|
|
39
|
+
Provides-Extra: modelscope
|
|
40
|
+
Requires-Dist: modelscope>=1.9; extra == "modelscope"
|
|
35
41
|
Provides-Extra: dev
|
|
36
42
|
Requires-Dist: pytest>=8; extra == "dev"
|
|
37
43
|
Requires-Dist: pillow>=10; extra == "dev"
|
|
@@ -41,18 +47,15 @@ Dynamic: license-file
|
|
|
41
47
|
|
|
42
48
|
<div align="center">
|
|
43
49
|
|
|
44
|
-
<
|
|
45
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header_dark.png">
|
|
46
|
-
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
47
|
-
</picture>
|
|
50
|
+
<img alt="TinyJev" src="https://raw.githubusercontent.com/ankit-aglawe/tinyjev/main/assets/tinyjev_header.png" width="620">
|
|
48
51
|
|
|
49
52
|
<p>Typed decisions, on your laptop, in one forward pass.</p>
|
|
50
53
|
|
|
51
54
|
<p>
|
|
52
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="
|
|
53
|
-
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/
|
|
54
|
-
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-
|
|
55
|
-
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/
|
|
55
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tinyjev?label=pypi&color=E46412"></a>
|
|
56
|
+
<a href="https://pypi.org/project/tinyjev/"><img alt="Python" src="https://img.shields.io/badge/python-3.9%2B-E46412"></a>
|
|
57
|
+
<a href="https://huggingface.co/AnkitAI/tinyjev-0.6b"><img alt="Weights" src="https://img.shields.io/badge/weights-tinyjev--0.6b-E46412?logo=huggingface&logoColor=FFD21E"></a>
|
|
58
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-E46412"></a>
|
|
56
59
|
</p>
|
|
57
60
|
|
|
58
61
|
<p>
|
|
@@ -62,6 +65,13 @@ Dynamic: license-file
|
|
|
62
65
|
<a href="https://github.com/ankit-aglawe/tinyjev/tree/main/examples">Examples</a>
|
|
63
66
|
</p>
|
|
64
67
|
|
|
68
|
+
<p>
|
|
69
|
+
<b>English</b> ·
|
|
70
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.zh-CN.md">简体中文</a> ·
|
|
71
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ja.md">日本語</a> ·
|
|
72
|
+
<a href="https://github.com/ankit-aglawe/tinyjev/blob/main/README.ko.md">한국어</a>
|
|
73
|
+
</p>
|
|
74
|
+
|
|
65
75
|
</div>
|
|
66
76
|
|
|
67
77
|
TinyJev answers typed questions about text and returns probabilities, in one forward pass, on your own machine.
|
|
@@ -89,12 +99,6 @@ TinyJev is MIT licensed.
|
|
|
89
99
|
Eight real support tickets, one after another, on a base M1. Three questions per ticket in a
|
|
90
100
|
single forward pass, about 110 ms each. Every number in that recording came from a live run.
|
|
91
101
|
|
|
92
|
-
Half of them route themselves. The other half do not, and that is the interesting part. Ticket
|
|
93
|
-
six says the order was late, the wrong size, and double charged, so the probability spreads
|
|
94
|
-
across all three teams and confidence falls to 0.14. Below the gate it goes to a person instead
|
|
95
|
-
of being guessed at. A message that turns out to be a compliment does the same thing. A model
|
|
96
|
-
that only ever returned a label would have picked a team for both.
|
|
97
|
-
|
|
98
102
|
```bash
|
|
99
103
|
pip install 'tinyjev[mlx,demo]'
|
|
100
104
|
python demos/triage_desk.py --gif demo.gif
|
|
@@ -224,7 +228,13 @@ A question is `{"type": "choice" | "noul" | "score", "instructions": ..., "crite
|
|
|
224
228
|
|
|
225
229
|
One published model, `tinyjev-0.6b`: a Qwen3-0.6B-Base backbone with a pointer head, trained on public typed-decision data. It is a first release and it is small — on question types unlike anything it has seen, use the confidence gate rather than the raw label. Specialising it on a few hundred of your own labelled examples is the intended path and beats prompt tuning a larger model.
|
|
226
230
|
|
|
227
|
-
|
|
231
|
+
It handles other languages better than expected, which we did not train for. Translating 25 cases of
|
|
232
|
+
a held-out English benchmark into Chinese and re-running them scored 22/25 against 20/25 for the
|
|
233
|
+
English originals, with the question schema left in English. That is parity on a small sample, not
|
|
234
|
+
a multilingual claim, and confidence runs flatter in Chinese so fewer cases clear a fixed gate. The
|
|
235
|
+
backbone is Qwen3, which is where this comes from.
|
|
236
|
+
|
|
237
|
+
Not yet: vision, or label sets in the hundreds.
|
|
228
238
|
|
|
229
239
|
## Support this project
|
|
230
240
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|