decision-toolkit 0.4.0__tar.gz → 0.4.1__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.
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/CHANGELOG.md +9 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/PKG-INFO +6 -3
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/README.md +5 -2
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/CLI.md +3 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/RELEASE.md +8 -7
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/VARIANTS.md +17 -17
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/gliner2.5-decide.md +34 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/gliner2.5-multi.md +63 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/julia-1.md +34 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/laya-multilingual.md +63 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/laya.md +34 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/open-jev-deberta-v3-large.md +121 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/opendecider-nano.md +63 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/strands-decider-2b.md +63 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/pyproject.toml +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/__init__.py +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/catalog.py +1 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/cli.py +4 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_cli.py +3 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/uv.lock +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/.github/workflows/ci.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/.github/workflows/docs.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/.github/workflows/release.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/.gitignore +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/CONTRIBUTING.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/LICENSE +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/SECURITY.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/THIRD_PARTY_NOTICES.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/README.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/load.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/results/2026-10-20-calibration.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/results/2026-10-20-load.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/results/2026-10-20-smoke.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/run.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/suites/calibration.jsonl +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/bench/suites/smoke.jsonl +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/BENCH.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/CATALOG_PROPOSAL.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/CORE.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/EXAMPLES.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/OPERATIONS.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/REST.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/ROADMAP.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/index.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/docs/models/README.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/__main__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/base.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/gliner2_decide.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/julia.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/laya.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/opendecider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/openjev.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/strands_decider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/calibration.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/config.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/common.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/mapping.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/openai_decisions_beta.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/systemone_v1.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/decision_model.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/engine/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/errors.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/limits.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/metrics.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/models.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/observability.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/py.typed +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/registry.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/results.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/schema.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/server.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/tracing.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/conftest.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_gliner2_decide.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_julia.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_laya.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_opendecider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_openjev.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_adapters_strands.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_bench.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_catalog.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_config.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_contracts_conformance.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_core_phase1.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_decision_model.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_fuzz_rest.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_integration_gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_models.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_operations.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_results.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_schema.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/tests/test_server.py +0 -0
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to this project are documented here. Version `0.4.
|
|
3
|
+
All notable changes to this project are documented here. Version `0.4.1` is
|
|
4
4
|
published on PyPI.
|
|
5
5
|
|
|
6
|
+
## [0.4.1] — 2026-10-21
|
|
7
|
+
|
|
8
|
+
Catalog presentation patch: every variant now carries its REST alias
|
|
9
|
+
(`id@variant`) in `dtk models list`, `--json` and `dtk models variants`. Model
|
|
10
|
+
cards include copy-paste loading examples for library, CLI and REST for every
|
|
11
|
+
variant. No model or runtime changes.
|
|
12
|
+
|
|
6
13
|
## [0.4.0] — 2026-10-21
|
|
7
14
|
|
|
8
15
|
REST variant-selection correction. Quantizations are selected through standard
|
|
@@ -209,6 +216,7 @@ README correction. No code or model behavior changed.
|
|
|
209
216
|
- Typed `DecisionModel` API with lifecycle, batching, async, usage, warnings,
|
|
210
217
|
normalized confidence, capabilities, structured events and atomic model store.
|
|
211
218
|
|
|
219
|
+
[0.4.1]: https://pypi.org/project/decision-toolkit/0.4.1/
|
|
212
220
|
[0.4.0]: https://pypi.org/project/decision-toolkit/0.4.0/
|
|
213
221
|
[0.3.1]: https://pypi.org/project/decision-toolkit/0.3.1/
|
|
214
222
|
[0.3.0]: https://pypi.org/project/decision-toolkit/0.3.0/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: decision-toolkit
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Local-first toolkit for open-weights decision models: one ONNX engine, one adapter per model contract, typed choice/yes-no/score decisions with probabilities on CPU.
|
|
5
5
|
Project-URL: Homepage, https://github.com/gia-uh/decision-toolkit
|
|
6
6
|
Project-URL: Repository, https://github.com/gia-uh/decision-toolkit
|
|
@@ -59,7 +59,7 @@ and CLI. `dtk --help` and every subcommand help also include runnable examples.
|
|
|
59
59
|
## Installation
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
uv pip install decision-toolkit # library + CLI (0.4.
|
|
62
|
+
uv pip install decision-toolkit # library + CLI (0.4.1 on PyPI)
|
|
63
63
|
uv pip install "decision-toolkit[onnx]" # + onnxruntime, tokenizers (the model runtime)
|
|
64
64
|
uv pip install "decision-toolkit[server]" # + REST server (FastAPI)
|
|
65
65
|
```
|
|
@@ -67,7 +67,7 @@ uv pip install "decision-toolkit[server]" # + REST server (FastAPI)
|
|
|
67
67
|
The project is managed with [uv](https://docs.astral.sh/uv/) and ships a committed `uv.lock`. Published
|
|
68
68
|
wheels remain compatible with `pip` for environments that do not use uv.
|
|
69
69
|
|
|
70
|
-
PyPI: <https://pypi.org/project/decision-toolkit/0.4.
|
|
70
|
+
PyPI: <https://pypi.org/project/decision-toolkit/0.4.1/>. See
|
|
71
71
|
[docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
|
|
72
72
|
for the Trusted Publishing flow and clean-install checks.
|
|
73
73
|
|
|
@@ -211,6 +211,9 @@ adapters (there is no generic "any ONNX" adapter).
|
|
|
211
211
|
| `open-jev-deberta-v3-large` | `open-jev` | **m0** — Open-Jev DeBERTa v3 large repro; 0.854 in-domain (241 ms) | `fp16`* (884 MB); `fp32` (1758 MB); `q4` (487 MB); `q4f16` (357 MB) |
|
|
212
212
|
| `strands-decider-2b` | `strands-decider` | **m0** — reference fixture match (719 ms) | `q4f16`* (1114 MB); `q8` (1821 MB) |
|
|
213
213
|
|
|
214
|
+
Each variant has a REST alias in the form `id@variant`; `dtk models list` prints
|
|
215
|
+
the alias next to every variant.
|
|
216
|
+
|
|
214
217
|
**Only `m0` models are in the catalog.** Researched-but-unavailable models
|
|
215
218
|
(planned, conversion pending, broken exports) are listed in
|
|
216
219
|
[docs/ROADMAP.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/ROADMAP.md) and are not downloadable through the toolkit.
|
|
@@ -21,7 +21,7 @@ and CLI. `dtk --help` and every subcommand help also include runnable examples.
|
|
|
21
21
|
## Installation
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
uv pip install decision-toolkit # library + CLI (0.4.
|
|
24
|
+
uv pip install decision-toolkit # library + CLI (0.4.1 on PyPI)
|
|
25
25
|
uv pip install "decision-toolkit[onnx]" # + onnxruntime, tokenizers (the model runtime)
|
|
26
26
|
uv pip install "decision-toolkit[server]" # + REST server (FastAPI)
|
|
27
27
|
```
|
|
@@ -29,7 +29,7 @@ uv pip install "decision-toolkit[server]" # + REST server (FastAPI)
|
|
|
29
29
|
The project is managed with [uv](https://docs.astral.sh/uv/) and ships a committed `uv.lock`. Published
|
|
30
30
|
wheels remain compatible with `pip` for environments that do not use uv.
|
|
31
31
|
|
|
32
|
-
PyPI: <https://pypi.org/project/decision-toolkit/0.4.
|
|
32
|
+
PyPI: <https://pypi.org/project/decision-toolkit/0.4.1/>. See
|
|
33
33
|
[docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
|
|
34
34
|
for the Trusted Publishing flow and clean-install checks.
|
|
35
35
|
|
|
@@ -173,6 +173,9 @@ adapters (there is no generic "any ONNX" adapter).
|
|
|
173
173
|
| `open-jev-deberta-v3-large` | `open-jev` | **m0** — Open-Jev DeBERTa v3 large repro; 0.854 in-domain (241 ms) | `fp16`* (884 MB); `fp32` (1758 MB); `q4` (487 MB); `q4f16` (357 MB) |
|
|
174
174
|
| `strands-decider-2b` | `strands-decider` | **m0** — reference fixture match (719 ms) | `q4f16`* (1114 MB); `q8` (1821 MB) |
|
|
175
175
|
|
|
176
|
+
Each variant has a REST alias in the form `id@variant`; `dtk models list` prints
|
|
177
|
+
the alias next to every variant.
|
|
178
|
+
|
|
176
179
|
**Only `m0` models are in the catalog.** Researched-but-unavailable models
|
|
177
180
|
(planned, conversion pending, broken exports) are listed in
|
|
178
181
|
[docs/ROADMAP.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/ROADMAP.md) and are not downloadable through the toolkit.
|
|
@@ -151,6 +151,9 @@ are already downloaded.
|
|
|
151
151
|
| `open-jev-deberta-v3-large` | `fp16`*, `fp32`, `q4`, `q4f16` | fp16 / fp32 / q4 / q4-fp16 | 883.5 / 1757.9 / 486.7 / 357.0 MB |
|
|
152
152
|
| `strands-decider-2b` | `q4f16`*, `q8` | q4-fp16 / int8 | 1113.6 / 1821.4 MB |
|
|
153
153
|
|
|
154
|
+
Each row is also addressable over REST as `model = "<id>@<variant>"`; the alias
|
|
155
|
+
is printed by `dtk models list` and by `dtk models variants <id>`.
|
|
156
|
+
|
|
154
157
|
```bash
|
|
155
158
|
# inspect, including the exact download command for each variant
|
|
156
159
|
dtk models list --quant
|
|
@@ -39,7 +39,7 @@ Clean install test (no `PYTHONPATH`):
|
|
|
39
39
|
```bash
|
|
40
40
|
uv venv --python 3.12 /tmp/dtk-wheel
|
|
41
41
|
uv pip install --python /tmp/dtk-wheel/bin/python \
|
|
42
|
-
dist/decision_toolkit-0.4.
|
|
42
|
+
dist/decision_toolkit-0.4.1-py3-none-any.whl
|
|
43
43
|
uv pip check --python /tmp/dtk-wheel/bin/python
|
|
44
44
|
/tmp/dtk-wheel/bin/dtk --version
|
|
45
45
|
/tmp/dtk-wheel/bin/dtk models list --json
|
|
@@ -50,7 +50,7 @@ With inference and server extras:
|
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
uv pip install --python /tmp/dtk-wheel/bin/python \
|
|
53
|
-
"dist/decision_toolkit-0.4.
|
|
53
|
+
"dist/decision_toolkit-0.4.1-py3-none-any.whl[onnx,server,tracing]"
|
|
54
54
|
/tmp/dtk-wheel/bin/dtk decide --model gliner2.5-decide ...
|
|
55
55
|
/tmp/dtk-wheel/bin/dtk serve --model gliner2.5-decide --warmup --port 8016
|
|
56
56
|
curl -s http://127.0.0.1:8016/health
|
|
@@ -84,8 +84,8 @@ No long-lived PyPI token is needed; the workflow uses GitHub OIDC
|
|
|
84
84
|
4. Create and push an annotated tag:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
|
-
git tag -a v0.4.
|
|
88
|
-
git push origin v0.4.
|
|
87
|
+
git tag -a v0.4.1 -m "decision-toolkit 0.4.1"
|
|
88
|
+
git push origin v0.4.1
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
5. `.github/workflows/release.yml` builds once, publishes to **TestPyPI**, then
|
|
@@ -134,9 +134,9 @@ to TestPyPI without publishing to PyPI or creating a GitHub release.
|
|
|
134
134
|
|
|
135
135
|
## Published release
|
|
136
136
|
|
|
137
|
-
`0.4.
|
|
137
|
+
`0.4.1` is published through Trusted Publishing on 2026-10-21:
|
|
138
138
|
|
|
139
|
-
<https://pypi.org/project/decision-toolkit/0.4.
|
|
139
|
+
<https://pypi.org/project/decision-toolkit/0.4.1/>
|
|
140
140
|
|
|
141
141
|
`0.1.0` was the first release; `0.1.1` refreshed the PyPI description; `0.1.2`
|
|
142
142
|
validated the OIDC TestPyPI → PyPI flow; `0.1.3` added post-publish install
|
|
@@ -147,7 +147,8 @@ complete variant/quantization visibility and CLI selection; `0.1.7` aligned
|
|
|
147
147
|
selection across library, CLI and REST; `0.2.0` corrected the REST conformance
|
|
148
148
|
claims and wire shapes; `0.2.1` changed the public documentation URLs; `0.3.0`
|
|
149
149
|
added the three new ONNX decision models; `0.3.1` made the catalog list one row per variant; `0.4.0` moved REST variant
|
|
150
|
-
selection to standard model aliases.
|
|
150
|
+
selection to standard model aliases; `0.4.1` exposed aliases in the catalog and
|
|
151
|
+
per-variant loading examples in every model card.
|
|
151
152
|
|
|
152
153
|
The tag-triggered workflow remains the preferred path for future releases once
|
|
153
154
|
the TestPyPI/PyPI trusted publishers and protected environments are configured.
|
|
@@ -18,23 +18,23 @@ have not passed the catalog gates are not exposed as variants.
|
|
|
18
18
|
A `*` marks the default variant. It is used when `--variant` is omitted and no
|
|
19
19
|
other variant was selected with `dtk models use`.
|
|
20
20
|
|
|
21
|
-
| Model | Variant | Quantization | Size | Role | Download |
|
|
22
|
-
| --- | --- | --- | ---: | --- | --- |
|
|
23
|
-
| `gliner2.5-multi` | `fp16` * | fp16
|
|
24
|
-
| `gliner2.5-multi` | `fp32` | fp32
|
|
25
|
-
| `gliner2.5-decide` | `q4f16` * | q4/fp16 | 523.5 MB | default | `dtk models download gliner2.5-decide --variant q4f16` |
|
|
26
|
-
| `laya` | `q8` * | int8 | 527.9 MB | default | `dtk models download laya --variant q8` |
|
|
27
|
-
| `julia-1` | `fp32` * | fp32 | 618.2 MB | default | `dtk models download julia-1 --variant fp32` |
|
|
28
|
-
| `opendecider-nano` | `q8f16` * | int8/fp16 | 468.8 MB | default | `dtk models download opendecider-nano --variant q8f16` |
|
|
29
|
-
| `opendecider-nano` | `fp16` | fp16 | 791.9 MB | quality | `dtk models download opendecider-nano --variant fp16` |
|
|
30
|
-
| `laya-multilingual` | `fp16` * | fp16 | 681.8 MB | default | `dtk models download laya-multilingual --variant fp16` |
|
|
31
|
-
| `laya-multilingual` | `fp32` | fp32 | 1325.6 MB | quality | `dtk models download laya-multilingual --variant fp32` |
|
|
32
|
-
| `open-jev-deberta-v3-large` | `
|
|
33
|
-
| `open-jev-deberta-v3-large` | `
|
|
34
|
-
| `open-jev-deberta-v3-large` | `q4` | q4 | 486.7 MB | edge | `dtk models download open-jev-deberta-v3-large --variant q4` |
|
|
35
|
-
| `open-jev-deberta-v3-large` | `
|
|
36
|
-
| `strands-decider-2b` | `q4f16` * | q4/fp16 | 1113.6 MB | default | `dtk models download strands-decider-2b --variant q4f16` |
|
|
37
|
-
| `strands-decider-2b` | `q8` | int8 | 1821.4 MB | quality | `dtk models download strands-decider-2b --variant q8` |
|
|
21
|
+
| Model | Variant | REST alias | Quantization | Size | Role | Download |
|
|
22
|
+
| --- | --- | --- | --- | ---: | --- | --- |
|
|
23
|
+
| `gliner2.5-multi` | `fp16` * | `gliner2.5-multi@fp16` | fp16 | 577.1 MB | default | `dtk models download gliner2.5-multi --variant fp16` |
|
|
24
|
+
| `gliner2.5-multi` | `fp32` | `gliner2.5-multi@fp32` | fp32 | 1131.9 MB | quality | `dtk models download gliner2.5-multi --variant fp32` |
|
|
25
|
+
| `gliner2.5-decide` | `q4f16` * | `gliner2.5-decide@q4f16` | q4/fp16 | 523.5 MB | default | `dtk models download gliner2.5-decide --variant q4f16` |
|
|
26
|
+
| `laya` | `q8` * | `laya@q8` | int8 | 527.9 MB | default | `dtk models download laya --variant q8` |
|
|
27
|
+
| `julia-1` | `fp32` * | `julia-1@fp32` | fp32 | 618.2 MB | default | `dtk models download julia-1 --variant fp32` |
|
|
28
|
+
| `opendecider-nano` | `q8f16` * | `opendecider-nano@q8f16` | int8/fp16 | 468.8 MB | default | `dtk models download opendecider-nano --variant q8f16` |
|
|
29
|
+
| `opendecider-nano` | `fp16` | `opendecider-nano@fp16` | fp16 | 791.9 MB | quality | `dtk models download opendecider-nano --variant fp16` |
|
|
30
|
+
| `laya-multilingual` | `fp16` * | `laya-multilingual@fp16` | fp16 | 681.8 MB | default | `dtk models download laya-multilingual --variant fp16` |
|
|
31
|
+
| `laya-multilingual` | `fp32` | `laya-multilingual@fp32` | fp32 | 1325.6 MB | quality | `dtk models download laya-multilingual --variant fp32` |
|
|
32
|
+
| `open-jev-deberta-v3-large` | `q4f16` | `open-jev-deberta-v3-large@q4f16` | q4/fp16 | 357.0 MB | edge | `dtk models download open-jev-deberta-v3-large --variant q4f16` |
|
|
33
|
+
| `open-jev-deberta-v3-large` | `fp16` * | `open-jev-deberta-v3-large@fp16` | fp16 | 883.5 MB | default | `dtk models download open-jev-deberta-v3-large --variant fp16` |
|
|
34
|
+
| `open-jev-deberta-v3-large` | `q4` | `open-jev-deberta-v3-large@q4` | q4 | 486.7 MB | edge | `dtk models download open-jev-deberta-v3-large --variant q4` |
|
|
35
|
+
| `open-jev-deberta-v3-large` | `fp32` | `open-jev-deberta-v3-large@fp32` | fp32 | 1757.9 MB | quality | `dtk models download open-jev-deberta-v3-large --variant fp32` |
|
|
36
|
+
| `strands-decider-2b` | `q4f16` * | `strands-decider-2b@q4f16` | q4/fp16 | 1113.6 MB | default | `dtk models download strands-decider-2b --variant q4f16` |
|
|
37
|
+
| `strands-decider-2b` | `q8` | `strands-decider-2b@q8` | int8 | 1821.4 MB | quality | `dtk models download strands-decider-2b --variant q8` |
|
|
38
38
|
|
|
39
39
|
Models with a single row have only one catalogued, verified build. That does
|
|
40
40
|
not mean other conversions do not exist upstream; it means they have not passed
|
|
@@ -54,6 +54,40 @@ in the toolkit; see [Variants and quantization](../VARIANTS.md).
|
|
|
54
54
|
- Quantized q4f16; the fp16/fp32 builds may resolve the sentiment example differently.
|
|
55
55
|
- The model card's examples are "potential outputs", not guarantees; validate on your data.
|
|
56
56
|
|
|
57
|
+
## Loading each variant
|
|
58
|
+
|
|
59
|
+
REST selects the quantization through the standard `model` field using the
|
|
60
|
+
alias `gliner2.5-decide@variant`; there is no `variant` field in the request body.
|
|
61
|
+
|
|
62
|
+
### `q4f16` (q4/fp16, default)
|
|
63
|
+
|
|
64
|
+
**Library**
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from decision_toolkit import DecisionModel
|
|
68
|
+
|
|
69
|
+
model = DecisionModel("gliner2.5-decide", variant="q4f16")
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**CLI**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
dtk models download gliner2.5-decide --variant q4f16
|
|
76
|
+
dtk models use gliner2.5-decide --variant q4f16
|
|
77
|
+
dtk decide --model gliner2.5-decide --variant q4f16 \
|
|
78
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**REST**
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
85
|
+
-H "Content-Type: application/json" \
|
|
86
|
+
-d '{"model": "gliner2.5-decide@q4f16", "state": "...",
|
|
87
|
+
"questions": {"urgent": {"type": "noul",
|
|
88
|
+
"instructions": "Is this urgent?"}}}}'
|
|
89
|
+
```
|
|
90
|
+
|
|
57
91
|
## Usage
|
|
58
92
|
|
|
59
93
|
```bash
|
|
@@ -55,6 +55,69 @@ makes it persistent. See [Variants and quantization](../VARIANTS.md).
|
|
|
55
55
|
- English/multilingual tokenizer fallback: the run above used the raw `tokenizers` fallback; a `transformers` tokenizer may change scores slightly.
|
|
56
56
|
- Benchmarked on a synthetic Spanish routing set; validate on your own data.
|
|
57
57
|
|
|
58
|
+
## Loading each variant
|
|
59
|
+
|
|
60
|
+
REST selects the quantization through the standard `model` field using the
|
|
61
|
+
alias `gliner2.5-multi@variant`; there is no `variant` field in the request body.
|
|
62
|
+
|
|
63
|
+
### `fp16` (fp16, default)
|
|
64
|
+
|
|
65
|
+
**Library**
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from decision_toolkit import DecisionModel
|
|
69
|
+
|
|
70
|
+
model = DecisionModel("gliner2.5-multi", variant="fp16")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**CLI**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
dtk models download gliner2.5-multi --variant fp16
|
|
77
|
+
dtk models use gliner2.5-multi --variant fp16
|
|
78
|
+
dtk decide --model gliner2.5-multi --variant fp16 \
|
|
79
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**REST**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
86
|
+
-H "Content-Type: application/json" \
|
|
87
|
+
-d '{"model": "gliner2.5-multi@fp16", "state": "...",
|
|
88
|
+
"questions": {"urgent": {"type": "noul",
|
|
89
|
+
"instructions": "Is this urgent?"}}}}'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### `fp32` (fp32, quality)
|
|
93
|
+
|
|
94
|
+
**Library**
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from decision_toolkit import DecisionModel
|
|
98
|
+
|
|
99
|
+
model = DecisionModel("gliner2.5-multi", variant="fp32")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**CLI**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
dtk models download gliner2.5-multi --variant fp32
|
|
106
|
+
dtk models use gliner2.5-multi --variant fp32
|
|
107
|
+
dtk decide --model gliner2.5-multi --variant fp32 \
|
|
108
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**REST**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
115
|
+
-H "Content-Type: application/json" \
|
|
116
|
+
-d '{"model": "gliner2.5-multi@fp32", "state": "...",
|
|
117
|
+
"questions": {"urgent": {"type": "noul",
|
|
118
|
+
"instructions": "Is this urgent?"}}}}'
|
|
119
|
+
```
|
|
120
|
+
|
|
58
121
|
## Usage
|
|
59
122
|
|
|
60
123
|
```bash
|
|
@@ -55,6 +55,40 @@ exists but was not validated and is not catalogued; see
|
|
|
55
55
|
- Historical benchmarks used 1024 tokens; accuracy at 8k is not established by the export.
|
|
56
56
|
- The tokenizer uses `<mask>/<bos>/<eos>`; both conventions are handled, but this checkpoint's tokenizer is the `<...>` one.
|
|
57
57
|
|
|
58
|
+
## Loading each variant
|
|
59
|
+
|
|
60
|
+
REST selects the quantization through the standard `model` field using the
|
|
61
|
+
alias `julia-1@variant`; there is no `variant` field in the request body.
|
|
62
|
+
|
|
63
|
+
### `fp32` (fp32, default)
|
|
64
|
+
|
|
65
|
+
**Library**
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from decision_toolkit import DecisionModel
|
|
69
|
+
|
|
70
|
+
model = DecisionModel("julia-1", variant="fp32")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**CLI**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
dtk models download julia-1 --variant fp32
|
|
77
|
+
dtk models use julia-1 --variant fp32
|
|
78
|
+
dtk decide --model julia-1 --variant fp32 \
|
|
79
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**REST**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
86
|
+
-H "Content-Type: application/json" \
|
|
87
|
+
-d '{"model": "julia-1@fp32", "state": "...",
|
|
88
|
+
"questions": {"urgent": {"type": "noul",
|
|
89
|
+
"instructions": "Is this urgent?"}}}}'
|
|
90
|
+
```
|
|
91
|
+
|
|
58
92
|
## Usage
|
|
59
93
|
|
|
60
94
|
```bash
|
|
@@ -68,6 +68,69 @@ the full-precision build. Select one with
|
|
|
68
68
|
- The adapter uses the fused graph path; the English split checkpoint remains a
|
|
69
69
|
separate catalog entry (`laya`).
|
|
70
70
|
|
|
71
|
+
## Loading each variant
|
|
72
|
+
|
|
73
|
+
REST selects the quantization through the standard `model` field using the
|
|
74
|
+
alias `laya-multilingual@variant`; there is no `variant` field in the request body.
|
|
75
|
+
|
|
76
|
+
### `fp16` (fp16, default)
|
|
77
|
+
|
|
78
|
+
**Library**
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
from decision_toolkit import DecisionModel
|
|
82
|
+
|
|
83
|
+
model = DecisionModel("laya-multilingual", variant="fp16")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**CLI**
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
dtk models download laya-multilingual --variant fp16
|
|
90
|
+
dtk models use laya-multilingual --variant fp16
|
|
91
|
+
dtk decide --model laya-multilingual --variant fp16 \
|
|
92
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**REST**
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
99
|
+
-H "Content-Type: application/json" \
|
|
100
|
+
-d '{"model": "laya-multilingual@fp16", "state": "...",
|
|
101
|
+
"questions": {"urgent": {"type": "noul",
|
|
102
|
+
"instructions": "Is this urgent?"}}}}'
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `fp32` (fp32, quality)
|
|
106
|
+
|
|
107
|
+
**Library**
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from decision_toolkit import DecisionModel
|
|
111
|
+
|
|
112
|
+
model = DecisionModel("laya-multilingual", variant="fp32")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**CLI**
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
dtk models download laya-multilingual --variant fp32
|
|
119
|
+
dtk models use laya-multilingual --variant fp32
|
|
120
|
+
dtk decide --model laya-multilingual --variant fp32 \
|
|
121
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**REST**
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
128
|
+
-H "Content-Type: application/json" \
|
|
129
|
+
-d '{"model": "laya-multilingual@fp32", "state": "...",
|
|
130
|
+
"questions": {"urgent": {"type": "noul",
|
|
131
|
+
"instructions": "Is this urgent?"}}}}'
|
|
132
|
+
```
|
|
133
|
+
|
|
71
134
|
## Usage
|
|
72
135
|
|
|
73
136
|
```bash
|
|
@@ -61,6 +61,40 @@ fp32 build; see [Variants and quantization](../VARIANTS.md).
|
|
|
61
61
|
- **English checkpoint.** The multilingual checkpoint is a different model (mmBERT-base) and has no split public export yet.
|
|
62
62
|
- q8 quantization; the fp32 build was not published in this repo.
|
|
63
63
|
|
|
64
|
+
## Loading each variant
|
|
65
|
+
|
|
66
|
+
REST selects the quantization through the standard `model` field using the
|
|
67
|
+
alias `laya@variant`; there is no `variant` field in the request body.
|
|
68
|
+
|
|
69
|
+
### `q8` (int8, default)
|
|
70
|
+
|
|
71
|
+
**Library**
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from decision_toolkit import DecisionModel
|
|
75
|
+
|
|
76
|
+
model = DecisionModel("laya", variant="q8")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**CLI**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
dtk models download laya --variant q8
|
|
83
|
+
dtk models use laya --variant q8
|
|
84
|
+
dtk decide --model laya --variant q8 \
|
|
85
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**REST**
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
92
|
+
-H "Content-Type: application/json" \
|
|
93
|
+
-d '{"model": "laya@q8", "state": "...",
|
|
94
|
+
"questions": {"urgent": {"type": "noul",
|
|
95
|
+
"instructions": "Is this urgent?"}}}}'
|
|
96
|
+
```
|
|
97
|
+
|
|
64
98
|
## Usage
|
|
65
99
|
|
|
66
100
|
```bash
|
|
@@ -67,6 +67,127 @@ and re-check thresholds. See [Variants and quantization](../VARIANTS.md).
|
|
|
67
67
|
- It chooses among supplied options; it cannot generate explanations.
|
|
68
68
|
- This is an independent Open-Jev DeBERTa v3 large reproduction, not an official TypeSafe model.
|
|
69
69
|
|
|
70
|
+
## Loading each variant
|
|
71
|
+
|
|
72
|
+
REST selects the quantization through the standard `model` field using the
|
|
73
|
+
alias `open-jev-deberta-v3-large@variant`; there is no `variant` field in the request body.
|
|
74
|
+
|
|
75
|
+
### `q4f16` (q4/fp16, edge)
|
|
76
|
+
|
|
77
|
+
**Library**
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from decision_toolkit import DecisionModel
|
|
81
|
+
|
|
82
|
+
model = DecisionModel("open-jev-deberta-v3-large", variant="q4f16")
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**CLI**
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
dtk models download open-jev-deberta-v3-large --variant q4f16
|
|
89
|
+
dtk models use open-jev-deberta-v3-large --variant q4f16
|
|
90
|
+
dtk decide --model open-jev-deberta-v3-large --variant q4f16 \
|
|
91
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**REST**
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
98
|
+
-H "Content-Type: application/json" \
|
|
99
|
+
-d '{"model": "open-jev-deberta-v3-large@q4f16", "state": "...",
|
|
100
|
+
"questions": {"urgent": {"type": "noul",
|
|
101
|
+
"instructions": "Is this urgent?"}}}}'
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `fp16` (fp16, default)
|
|
105
|
+
|
|
106
|
+
**Library**
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from decision_toolkit import DecisionModel
|
|
110
|
+
|
|
111
|
+
model = DecisionModel("open-jev-deberta-v3-large", variant="fp16")
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**CLI**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
dtk models download open-jev-deberta-v3-large --variant fp16
|
|
118
|
+
dtk models use open-jev-deberta-v3-large --variant fp16
|
|
119
|
+
dtk decide --model open-jev-deberta-v3-large --variant fp16 \
|
|
120
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**REST**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
127
|
+
-H "Content-Type: application/json" \
|
|
128
|
+
-d '{"model": "open-jev-deberta-v3-large@fp16", "state": "...",
|
|
129
|
+
"questions": {"urgent": {"type": "noul",
|
|
130
|
+
"instructions": "Is this urgent?"}}}}'
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### `q4` (q4, edge)
|
|
134
|
+
|
|
135
|
+
**Library**
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from decision_toolkit import DecisionModel
|
|
139
|
+
|
|
140
|
+
model = DecisionModel("open-jev-deberta-v3-large", variant="q4")
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**CLI**
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
dtk models download open-jev-deberta-v3-large --variant q4
|
|
147
|
+
dtk models use open-jev-deberta-v3-large --variant q4
|
|
148
|
+
dtk decide --model open-jev-deberta-v3-large --variant q4 \
|
|
149
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**REST**
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
156
|
+
-H "Content-Type: application/json" \
|
|
157
|
+
-d '{"model": "open-jev-deberta-v3-large@q4", "state": "...",
|
|
158
|
+
"questions": {"urgent": {"type": "noul",
|
|
159
|
+
"instructions": "Is this urgent?"}}}}'
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### `fp32` (fp32, quality)
|
|
163
|
+
|
|
164
|
+
**Library**
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from decision_toolkit import DecisionModel
|
|
168
|
+
|
|
169
|
+
model = DecisionModel("open-jev-deberta-v3-large", variant="fp32")
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**CLI**
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
dtk models download open-jev-deberta-v3-large --variant fp32
|
|
176
|
+
dtk models use open-jev-deberta-v3-large --variant fp32
|
|
177
|
+
dtk decide --model open-jev-deberta-v3-large --variant fp32 \
|
|
178
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**REST**
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
185
|
+
-H "Content-Type: application/json" \
|
|
186
|
+
-d '{"model": "open-jev-deberta-v3-large@fp32", "state": "...",
|
|
187
|
+
"questions": {"urgent": {"type": "noul",
|
|
188
|
+
"instructions": "Is this urgent?"}}}}'
|
|
189
|
+
```
|
|
190
|
+
|
|
70
191
|
## Usage
|
|
71
192
|
|
|
72
193
|
```bash
|
|
@@ -57,6 +57,69 @@ the quality build. Select one with
|
|
|
57
57
|
- No independent parity dataset (the official benchmark inputs are hashed).
|
|
58
58
|
- The export's tokenizer is a web tokenizer (`tokenizer.web.json`), loaded through the `tokenizers` fallback.
|
|
59
59
|
|
|
60
|
+
## Loading each variant
|
|
61
|
+
|
|
62
|
+
REST selects the quantization through the standard `model` field using the
|
|
63
|
+
alias `opendecider-nano@variant`; there is no `variant` field in the request body.
|
|
64
|
+
|
|
65
|
+
### `q8f16` (int8/fp16, default)
|
|
66
|
+
|
|
67
|
+
**Library**
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from decision_toolkit import DecisionModel
|
|
71
|
+
|
|
72
|
+
model = DecisionModel("opendecider-nano", variant="q8f16")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**CLI**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
dtk models download opendecider-nano --variant q8f16
|
|
79
|
+
dtk models use opendecider-nano --variant q8f16
|
|
80
|
+
dtk decide --model opendecider-nano --variant q8f16 \
|
|
81
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**REST**
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
88
|
+
-H "Content-Type: application/json" \
|
|
89
|
+
-d '{"model": "opendecider-nano@q8f16", "state": "...",
|
|
90
|
+
"questions": {"urgent": {"type": "noul",
|
|
91
|
+
"instructions": "Is this urgent?"}}}}'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### `fp16` (fp16, quality)
|
|
95
|
+
|
|
96
|
+
**Library**
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from decision_toolkit import DecisionModel
|
|
100
|
+
|
|
101
|
+
model = DecisionModel("opendecider-nano", variant="fp16")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**CLI**
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
dtk models download opendecider-nano --variant fp16
|
|
108
|
+
dtk models use opendecider-nano --variant fp16
|
|
109
|
+
dtk decide --model opendecider-nano --variant fp16 \
|
|
110
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**REST**
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
117
|
+
-H "Content-Type: application/json" \
|
|
118
|
+
-d '{"model": "opendecider-nano@fp16", "state": "...",
|
|
119
|
+
"questions": {"urgent": {"type": "noul",
|
|
120
|
+
"instructions": "Is this urgent?"}}}}'
|
|
121
|
+
```
|
|
122
|
+
|
|
60
123
|
## Usage
|
|
61
124
|
|
|
62
125
|
```bash
|
|
@@ -73,6 +73,69 @@ for 3 days!`):
|
|
|
73
73
|
probabilities need to be closest to the reference.
|
|
74
74
|
- No image/audio support in this text-only projection.
|
|
75
75
|
|
|
76
|
+
## Loading each variant
|
|
77
|
+
|
|
78
|
+
REST selects the quantization through the standard `model` field using the
|
|
79
|
+
alias `strands-decider-2b@variant`; there is no `variant` field in the request body.
|
|
80
|
+
|
|
81
|
+
### `q4f16` (q4/fp16, default)
|
|
82
|
+
|
|
83
|
+
**Library**
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from decision_toolkit import DecisionModel
|
|
87
|
+
|
|
88
|
+
model = DecisionModel("strands-decider-2b", variant="q4f16")
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**CLI**
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
dtk models download strands-decider-2b --variant q4f16
|
|
95
|
+
dtk models use strands-decider-2b --variant q4f16
|
|
96
|
+
dtk decide --model strands-decider-2b --variant q4f16 \
|
|
97
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**REST**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
104
|
+
-H "Content-Type: application/json" \
|
|
105
|
+
-d '{"model": "strands-decider-2b@q4f16", "state": "...",
|
|
106
|
+
"questions": {"urgent": {"type": "noul",
|
|
107
|
+
"instructions": "Is this urgent?"}}}}'
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### `q8` (int8, quality)
|
|
111
|
+
|
|
112
|
+
**Library**
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
from decision_toolkit import DecisionModel
|
|
116
|
+
|
|
117
|
+
model = DecisionModel("strands-decider-2b", variant="q8")
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**CLI**
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
dtk models download strands-decider-2b --variant q8
|
|
124
|
+
dtk models use strands-decider-2b --variant q8
|
|
125
|
+
dtk decide --model strands-decider-2b --variant q8 \
|
|
126
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**REST**
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
133
|
+
-H "Content-Type: application/json" \
|
|
134
|
+
-d '{"model": "strands-decider-2b@q8", "state": "...",
|
|
135
|
+
"questions": {"urgent": {"type": "noul",
|
|
136
|
+
"instructions": "Is this urgent?"}}}}'
|
|
137
|
+
```
|
|
138
|
+
|
|
76
139
|
## Usage
|
|
77
140
|
|
|
78
141
|
```bash
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "decision-toolkit"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.1"
|
|
8
8
|
description = "Local-first toolkit for open-weights decision models: one ONNX engine, one adapter per model contract, typed choice/yes-no/score decisions with probabilities on CPU."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -7,7 +7,7 @@ questions with a calibrated probability for every option, on CPU.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
-
__version__ = "0.4.
|
|
10
|
+
__version__ = "0.4.1"
|
|
11
11
|
|
|
12
12
|
from .adapters import register_adapter
|
|
13
13
|
from .calibration import brier_score, expected_calibration_error, threshold_sweep
|
|
@@ -592,6 +592,7 @@ def _catalog_payload(
|
|
|
592
592
|
def _variant_payload(variant: catalog.Variant, cached: set[tuple[str, str]], model_id: str) -> dict[str, Any]:
|
|
593
593
|
return {
|
|
594
594
|
"name": variant.name,
|
|
595
|
+
"alias": f"{model_id}@{variant.name}",
|
|
595
596
|
"quant": variant.quant,
|
|
596
597
|
"size_mb": variant.size_mb,
|
|
597
598
|
"role": variant.role,
|
|
@@ -709,7 +710,7 @@ def _cmd_models(args: argparse.Namespace) -> int:
|
|
|
709
710
|
if as_json:
|
|
710
711
|
_json_out(payloads)
|
|
711
712
|
return EXIT_OK
|
|
712
|
-
headers = ["", "id", "variant", "quant", "role", "size", "cached"]
|
|
713
|
+
headers = ["", "id", "variant", "alias", "quant", "role", "size", "cached"]
|
|
713
714
|
if args.show_adapter:
|
|
714
715
|
headers.insert(2, "adapter")
|
|
715
716
|
if args.show_license:
|
|
@@ -732,6 +733,7 @@ def _cmd_models(args: argparse.Namespace) -> int:
|
|
|
732
733
|
"★" if is_current else "",
|
|
733
734
|
model.id,
|
|
734
735
|
label,
|
|
736
|
+
f"{model.id}@{variant.name}",
|
|
735
737
|
variant.quant,
|
|
736
738
|
variant.role,
|
|
737
739
|
f"{variant.size_mb:.1f} MB",
|
|
@@ -781,6 +783,7 @@ def _cmd_models(args: argparse.Namespace) -> int:
|
|
|
781
783
|
if variant.parity:
|
|
782
784
|
summary = ", ".join(f"{key}={value}" for key, value in variant.parity.items())
|
|
783
785
|
print(f" parity: {summary}")
|
|
786
|
+
print(f" alias: {model.id}@{variant.name}")
|
|
784
787
|
print(
|
|
785
788
|
f" download: dtk models download {model.id} "
|
|
786
789
|
f"--variant {variant.name}"
|
|
@@ -220,6 +220,7 @@ def test_models_list_json_and_columns(home, capsys):
|
|
|
220
220
|
assert entry["license"] == "apache-2.0"
|
|
221
221
|
assert entry["default_variant"] == "fp16"
|
|
222
222
|
assert entry["current_variant"] is None
|
|
223
|
+
assert entry["variants"][0]["alias"] == "gliner2.5-multi@fp16"
|
|
223
224
|
assert entry["variants"][0]["quant"] == "fp16"
|
|
224
225
|
|
|
225
226
|
assert cli.main(
|
|
@@ -242,6 +243,7 @@ def test_models_variants_text_and_json(home, capsys):
|
|
|
242
243
|
assert "577.1" in text and "1131.9" in text
|
|
243
244
|
assert "latency p50" in text
|
|
244
245
|
assert "parity:" in text and "baseline=" in text
|
|
246
|
+
assert "alias: gliner2.5-multi@fp32" in text
|
|
245
247
|
assert "download: dtk models download gliner2.5-multi --variant fp32" in text
|
|
246
248
|
assert "selected variant: dtk models use gliner2.5-multi" in text
|
|
247
249
|
|
|
@@ -251,6 +253,7 @@ def test_models_variants_text_and_json(home, capsys):
|
|
|
251
253
|
payload = json.loads(_out(capsys))
|
|
252
254
|
assert payload["adapter"] == "gliner2"
|
|
253
255
|
assert payload["default_variant"] == "fp16"
|
|
256
|
+
assert payload["variants"][0]["alias"] == "gliner2.5-multi@fp16"
|
|
254
257
|
assert {variant["name"] for variant in payload["variants"]} == {"fp16", "fp32"}
|
|
255
258
|
assert payload["variants"][0]["revision"]
|
|
256
259
|
assert payload["variants"][0]["sha256"]
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/gliner2_decide.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/opendecider.py
RENAMED
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/adapters/strands_decider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.4.0 → decision_toolkit-0.4.1}/src/decision_toolkit/contracts/systemone_v1.py
RENAMED
|
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
|
|
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
|