decision-toolkit 0.4.0__tar.gz → 0.4.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.
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/CHANGELOG.md +17 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/CONTRIBUTING.md +5 -3
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/PKG-INFO +22 -31
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/README.md +21 -30
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/BENCH.md +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/CLI.md +7 -5
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/CORE.md +12 -13
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/OPERATIONS.md +2 -2
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/RELEASE.md +9 -7
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/REST.md +8 -8
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/VARIANTS.md +20 -20
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/index.md +1 -2
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/README.md +5 -16
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/gliner2.5-decide.md +34 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/gliner2.5-multi.md +63 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/julia-1.md +34 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/laya-multilingual.md +63 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/laya.md +34 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/open-jev-deberta-v3-large.md +121 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/opendecider-nano.md +63 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/models/strands-decider-2b.md +63 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/pyproject.toml +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/__init__.py +1 -1
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/catalog.py +1 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/cli.py +5 -2
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_cli.py +3 -0
- decision_toolkit-0.4.2/tests/test_help_examples.py +64 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/uv.lock +1 -1
- decision_toolkit-0.4.0/docs/CATALOG_PROPOSAL.md +0 -122
- decision_toolkit-0.4.0/docs/ROADMAP.md +0 -33
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/.github/workflows/ci.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/.github/workflows/docs.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/.github/workflows/release.yml +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/.gitignore +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/LICENSE +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/SECURITY.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/THIRD_PARTY_NOTICES.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/README.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/load.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/results/2026-10-20-calibration.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/results/2026-10-20-load.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/results/2026-10-20-smoke.json +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/run.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/suites/calibration.jsonl +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/bench/suites/smoke.jsonl +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/docs/EXAMPLES.md +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/__main__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/base.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/gliner2_decide.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/julia.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/laya.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/opendecider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/openjev.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/adapters/strands_decider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/calibration.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/config.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/contracts/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/contracts/common.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/contracts/mapping.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/contracts/openai_decisions_beta.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/contracts/systemone_v1.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/decision_model.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/engine/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/errors.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/limits.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/metrics.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/models.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/observability.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/py.typed +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/registry.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/results.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/schema.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/server.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/src/decision_toolkit/tracing.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/__init__.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/conftest.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_gliner2_decide.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_julia.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_laya.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_opendecider.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_openjev.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_adapters_strands.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_bench.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_catalog.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_config.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_contracts_conformance.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_core_phase1.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_decision_model.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_fuzz_rest.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_integration_gliner2.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_models.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_operations.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_results.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_schema.py +0 -0
- {decision_toolkit-0.4.0 → decision_toolkit-0.4.2}/tests/test_server.py +0 -0
|
@@ -1,8 +1,22 @@
|
|
|
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.2` is
|
|
4
4
|
published on PyPI.
|
|
5
5
|
|
|
6
|
+
## [0.4.2] — 2026-10-21
|
|
7
|
+
|
|
8
|
+
Documentation cleanup: removed internal project language (`m0`, phase numbers,
|
|
9
|
+
waitlist), removed the public catalog proposal and roadmap pages, and rewrote
|
|
10
|
+
the model-card index for users. Every model card now includes library, CLI and
|
|
11
|
+
REST snippets for every variant. No runtime changes.
|
|
12
|
+
|
|
13
|
+
## [0.4.1] — 2026-10-21
|
|
14
|
+
|
|
15
|
+
Catalog presentation patch: every variant now carries its REST alias
|
|
16
|
+
(`id@variant`) in `dtk models list`, `--json` and `dtk models variants`. Model
|
|
17
|
+
cards include copy-paste loading examples for library, CLI and REST for every
|
|
18
|
+
variant. No model or runtime changes.
|
|
19
|
+
|
|
6
20
|
## [0.4.0] — 2026-10-21
|
|
7
21
|
|
|
8
22
|
REST variant-selection correction. Quantizations are selected through standard
|
|
@@ -209,6 +223,8 @@ README correction. No code or model behavior changed.
|
|
|
209
223
|
- Typed `DecisionModel` API with lifecycle, batching, async, usage, warnings,
|
|
210
224
|
normalized confidence, capabilities, structured events and atomic model store.
|
|
211
225
|
|
|
226
|
+
[0.4.2]: https://pypi.org/project/decision-toolkit/0.4.2/
|
|
227
|
+
[0.4.1]: https://pypi.org/project/decision-toolkit/0.4.1/
|
|
212
228
|
[0.4.0]: https://pypi.org/project/decision-toolkit/0.4.0/
|
|
213
229
|
[0.3.1]: https://pypi.org/project/decision-toolkit/0.3.1/
|
|
214
230
|
[0.3.0]: https://pypi.org/project/decision-toolkit/0.3.0/
|
|
@@ -76,9 +76,11 @@ uv run dtk --version
|
|
|
76
76
|
uv run pip-audit # dependency scan (CI runs this)
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
CI runs these on Python 3.12 and 3.13, plus `pip-audit`.
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
CI runs these on Python 3.12 and 3.13, plus `pip-audit`. `tests/test_help_examples.py`
|
|
80
|
+
parses every example printed by `dtk --help` and checks referenced catalog
|
|
81
|
+
models/variants; run the full examples against a populated cache before a
|
|
82
|
+
release. The tag-triggered release workflow builds and publishes the wheel with
|
|
83
|
+
uv; see [RELEASE.md](docs/RELEASE.md). For rate limits, metrics, tracing and the load
|
|
82
84
|
probe see [OPERATIONS.md](docs/OPERATIONS.md).
|
|
83
85
|
|
|
84
86
|
## Commits
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: decision-toolkit
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
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.2 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.2/>. 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
|
|
|
@@ -135,7 +135,7 @@ decision.truncated, decision.warnings
|
|
|
135
135
|
validated before inference (`box`/assets are rejected by text-only models).
|
|
136
136
|
Custom adapters can be registered with `register_adapter`; local ONNX models
|
|
137
137
|
can be opened with `DecisionModel.from_onnx(...)`. See
|
|
138
|
-
[docs/CORE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/CORE.md) for the full
|
|
138
|
+
[docs/CORE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/CORE.md) for the full API contract, error taxonomy,
|
|
139
139
|
logging events and the expressiveness inventory.
|
|
140
140
|
|
|
141
141
|
**2. As a CLI**
|
|
@@ -186,34 +186,25 @@ current text-only subset.
|
|
|
186
186
|
See [docs/REST.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/REST.md) for the pinned contracts, limits, auth and
|
|
187
187
|
the standard-evolution process.
|
|
188
188
|
|
|
189
|
-
##
|
|
189
|
+
## Models and variants
|
|
190
190
|
|
|
191
|
-
The catalog
|
|
192
|
-
|
|
191
|
+
The catalog lists models that are runnable with the toolkit today. Every entry
|
|
192
|
+
has a real ONNX export, verified files and measured behavior; nothing is listed
|
|
193
|
+
as a placeholder.
|
|
193
194
|
|
|
194
|
-
|
|
195
|
-
2. an adapter whose contract we can implement **from a real export**;
|
|
196
|
-
3. a real ONNX export on the Hub;
|
|
197
|
-
4. measured parity against the original on a fixed sample;
|
|
198
|
-
5. CPU-viable latency.
|
|
199
|
-
|
|
200
|
-
Every variant points to files that exist. No placeholders, no speculative
|
|
201
|
-
adapters (there is no generic "any ONNX" adapter).
|
|
202
|
-
|
|
203
|
-
| id | adapter | status | variants (default *) |
|
|
195
|
+
| id | adapter | verification | variants (default *) |
|
|
204
196
|
| --- | --- | --- | --- |
|
|
205
|
-
| `gliner2.5-multi` | `gliner2` |
|
|
206
|
-
| `gliner2.5-decide` | `gliner2-decide` |
|
|
207
|
-
| `laya` | `laya` |
|
|
208
|
-
| `julia-1` | `julia` |
|
|
209
|
-
| `opendecider-nano` | `opendecider` |
|
|
210
|
-
| `laya-multilingual` | `laya` |
|
|
211
|
-
| `open-jev-deberta-v3-large` | `open-jev` |
|
|
212
|
-
| `strands-decider-2b` | `strands-decider` |
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[docs/ROADMAP.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/ROADMAP.md) and are not downloadable through the toolkit.
|
|
197
|
+
| `gliner2.5-multi` | `gliner2` | verified end-to-end (9/15, 353 ms) | `fp16`* (577 MB); `fp32` (1132 MB) |
|
|
198
|
+
| `gliner2.5-decide` | `gliner2-decide` | fused export verified (refund 0.944, 912 ms; English-only) | `q4f16`* (524 MB) |
|
|
199
|
+
| `laya` | `laya` | verified against torch (Δp ≤ 0.005) | `q8`* (528 MB) |
|
|
200
|
+
| `julia-1` | `julia` | verified: 100/100 argmax parity, 329 ms | `fp32`* (618 MB) |
|
|
201
|
+
| `opendecider-nano` | `opendecider` | official build; prompt ported from pinned code (530 ms) | `q8f16`* (469 MB); `fp16` (792 MB) |
|
|
202
|
+
| `laya-multilingual` | `laya` | fused ONNX; upstream parity (37 ms) | `fp16`* (682 MB); `fp32` (1326 MB) |
|
|
203
|
+
| `open-jev-deberta-v3-large` | `open-jev` | Open-Jev DeBERTa v3 large reproduction; 0.854 in-domain (241 ms) | `fp16`* (884 MB); `fp32` (1758 MB); `q4` (487 MB); `q4f16` (357 MB) |
|
|
204
|
+
| `strands-decider-2b` | `strands-decider` | reference fixture match (719 ms) | `q4f16`* (1114 MB); `q8` (1821 MB) |
|
|
205
|
+
|
|
206
|
+
Each variant has a REST alias in the form `id@variant`; `dtk models list` prints
|
|
207
|
+
the alias next to every variant.
|
|
217
208
|
|
|
218
209
|
Per-model cards with the contract, measured evidence and known limitations:
|
|
219
210
|
[docs/models](https://github.com/gia-uh/decision-toolkit/tree/main/docs/models).
|
|
@@ -254,7 +245,7 @@ standard `model` field. The base id uses the server/persisted default. There is
|
|
|
254
245
|
no `variant` field in the request body; `/v1/models` lists both the base model
|
|
255
246
|
and every alias, and two aliases can be loaded concurrently.
|
|
256
247
|
|
|
257
|
-
A variant becomes default only after passing the
|
|
248
|
+
A variant becomes default only after passing the verification criteria (top-1 ≥ 99%,
|
|
258
249
|
mean |Δp| ≤ 0.02, accuracy delta ≤ 1 pp against the fp32 build on a fixed
|
|
259
250
|
sample) and measuring latency on CPU. Unverified conversions are not catalogued
|
|
260
251
|
and never become a silent fallback. See [Variants and quantization](https://gia-uh.github.io/decision-toolkit/VARIANTS/)
|
|
@@ -300,7 +291,7 @@ See [CHANGELOG.md](https://github.com/gia-uh/decision-toolkit/blob/main/CHANGELO
|
|
|
300
291
|
|
|
301
292
|
## Custom ONNX (at your own risk)
|
|
302
293
|
|
|
303
|
-
You can run any ONNX file with an adapter you trust — outside the
|
|
294
|
+
You can run any ONNX file with an adapter you trust — outside the
|
|
304
295
|
catalog:
|
|
305
296
|
|
|
306
297
|
```python
|
|
@@ -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.2 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.2/>. 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
|
|
|
@@ -97,7 +97,7 @@ decision.truncated, decision.warnings
|
|
|
97
97
|
validated before inference (`box`/assets are rejected by text-only models).
|
|
98
98
|
Custom adapters can be registered with `register_adapter`; local ONNX models
|
|
99
99
|
can be opened with `DecisionModel.from_onnx(...)`. See
|
|
100
|
-
[docs/CORE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/CORE.md) for the full
|
|
100
|
+
[docs/CORE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/CORE.md) for the full API contract, error taxonomy,
|
|
101
101
|
logging events and the expressiveness inventory.
|
|
102
102
|
|
|
103
103
|
**2. As a CLI**
|
|
@@ -148,34 +148,25 @@ current text-only subset.
|
|
|
148
148
|
See [docs/REST.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/REST.md) for the pinned contracts, limits, auth and
|
|
149
149
|
the standard-evolution process.
|
|
150
150
|
|
|
151
|
-
##
|
|
151
|
+
## Models and variants
|
|
152
152
|
|
|
153
|
-
The catalog
|
|
154
|
-
|
|
153
|
+
The catalog lists models that are runnable with the toolkit today. Every entry
|
|
154
|
+
has a real ONNX export, verified files and measured behavior; nothing is listed
|
|
155
|
+
as a placeholder.
|
|
155
156
|
|
|
156
|
-
|
|
157
|
-
2. an adapter whose contract we can implement **from a real export**;
|
|
158
|
-
3. a real ONNX export on the Hub;
|
|
159
|
-
4. measured parity against the original on a fixed sample;
|
|
160
|
-
5. CPU-viable latency.
|
|
161
|
-
|
|
162
|
-
Every variant points to files that exist. No placeholders, no speculative
|
|
163
|
-
adapters (there is no generic "any ONNX" adapter).
|
|
164
|
-
|
|
165
|
-
| id | adapter | status | variants (default *) |
|
|
157
|
+
| id | adapter | verification | variants (default *) |
|
|
166
158
|
| --- | --- | --- | --- |
|
|
167
|
-
| `gliner2.5-multi` | `gliner2` |
|
|
168
|
-
| `gliner2.5-decide` | `gliner2-decide` |
|
|
169
|
-
| `laya` | `laya` |
|
|
170
|
-
| `julia-1` | `julia` |
|
|
171
|
-
| `opendecider-nano` | `opendecider` |
|
|
172
|
-
| `laya-multilingual` | `laya` |
|
|
173
|
-
| `open-jev-deberta-v3-large` | `open-jev` |
|
|
174
|
-
| `strands-decider-2b` | `strands-decider` |
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
[docs/ROADMAP.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/ROADMAP.md) and are not downloadable through the toolkit.
|
|
159
|
+
| `gliner2.5-multi` | `gliner2` | verified end-to-end (9/15, 353 ms) | `fp16`* (577 MB); `fp32` (1132 MB) |
|
|
160
|
+
| `gliner2.5-decide` | `gliner2-decide` | fused export verified (refund 0.944, 912 ms; English-only) | `q4f16`* (524 MB) |
|
|
161
|
+
| `laya` | `laya` | verified against torch (Δp ≤ 0.005) | `q8`* (528 MB) |
|
|
162
|
+
| `julia-1` | `julia` | verified: 100/100 argmax parity, 329 ms | `fp32`* (618 MB) |
|
|
163
|
+
| `opendecider-nano` | `opendecider` | official build; prompt ported from pinned code (530 ms) | `q8f16`* (469 MB); `fp16` (792 MB) |
|
|
164
|
+
| `laya-multilingual` | `laya` | fused ONNX; upstream parity (37 ms) | `fp16`* (682 MB); `fp32` (1326 MB) |
|
|
165
|
+
| `open-jev-deberta-v3-large` | `open-jev` | Open-Jev DeBERTa v3 large reproduction; 0.854 in-domain (241 ms) | `fp16`* (884 MB); `fp32` (1758 MB); `q4` (487 MB); `q4f16` (357 MB) |
|
|
166
|
+
| `strands-decider-2b` | `strands-decider` | reference fixture match (719 ms) | `q4f16`* (1114 MB); `q8` (1821 MB) |
|
|
167
|
+
|
|
168
|
+
Each variant has a REST alias in the form `id@variant`; `dtk models list` prints
|
|
169
|
+
the alias next to every variant.
|
|
179
170
|
|
|
180
171
|
Per-model cards with the contract, measured evidence and known limitations:
|
|
181
172
|
[docs/models](https://github.com/gia-uh/decision-toolkit/tree/main/docs/models).
|
|
@@ -216,7 +207,7 @@ standard `model` field. The base id uses the server/persisted default. There is
|
|
|
216
207
|
no `variant` field in the request body; `/v1/models` lists both the base model
|
|
217
208
|
and every alias, and two aliases can be loaded concurrently.
|
|
218
209
|
|
|
219
|
-
A variant becomes default only after passing the
|
|
210
|
+
A variant becomes default only after passing the verification criteria (top-1 ≥ 99%,
|
|
220
211
|
mean |Δp| ≤ 0.02, accuracy delta ≤ 1 pp against the fp32 build on a fixed
|
|
221
212
|
sample) and measuring latency on CPU. Unverified conversions are not catalogued
|
|
222
213
|
and never become a silent fallback. See [Variants and quantization](https://gia-uh.github.io/decision-toolkit/VARIANTS/)
|
|
@@ -262,7 +253,7 @@ See [CHANGELOG.md](https://github.com/gia-uh/decision-toolkit/blob/main/CHANGELO
|
|
|
262
253
|
|
|
263
254
|
## Custom ONNX (at your own risk)
|
|
264
255
|
|
|
265
|
-
You can run any ONNX file with an adapter you trust — outside the
|
|
256
|
+
You can run any ONNX file with an adapter you trust — outside the
|
|
266
257
|
catalog:
|
|
267
258
|
|
|
268
259
|
```python
|
|
@@ -66,7 +66,7 @@ and
|
|
|
66
66
|
The model cards retain the historical cold-start measurements used when each
|
|
67
67
|
variant was admitted. The harness reports **post-warmup steady-state** latency,
|
|
68
68
|
which is lower. Compare like with like: use the harness when comparing commits
|
|
69
|
-
or machines; use the card values only as historical
|
|
69
|
+
or machines; use the card values only as historical reference measurements.
|
|
70
70
|
|
|
71
71
|
## Adding a case
|
|
72
72
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# CLI
|
|
1
|
+
# CLI
|
|
2
2
|
|
|
3
3
|
`dtk` is our own operational surface. Unlike REST, it has **no external
|
|
4
4
|
standard** to comply with: it is consistent with itself, script-friendly, and a
|
|
@@ -9,7 +9,7 @@ CLI.
|
|
|
9
9
|
|
|
10
10
|
| Command | Purpose |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `dtk models` | Inspect the local cache and the
|
|
12
|
+
| `dtk models` | Inspect the local cache and the model catalog. |
|
|
13
13
|
| `dtk models list` | Every catalog variant, default (`*`) and cached variants (`--license`, `--quant`, `--adapter`). |
|
|
14
14
|
| `dtk models variants <id>` | Every real variant of one model, with size, role and exact install command. |
|
|
15
15
|
| `dtk models download <id>` | Download the default or `--variant` quantization (`--force`, `--dry-run`). |
|
|
@@ -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
|
|
@@ -241,8 +244,7 @@ dtk serve --model gliner2.5-multi --warmup \
|
|
|
241
244
|
- `--workers N` and `--reload` use an internal uvicorn factory; `--reload`
|
|
242
245
|
is for development and cannot be combined with `--workers > 1`.
|
|
243
246
|
- `--max-models`, `--max-body-mb`, `--timeout`, `--warmup`, `--api-key`,
|
|
244
|
-
`--cors-origin`, `--log-level` and `--log-format` are
|
|
245
|
-
controls.
|
|
247
|
+
`--cors-origin`, `--log-level` and `--log-format` are server controls.
|
|
246
248
|
- Custom `--adapter`/`--files` also apply to the server's default model.
|
|
247
249
|
|
|
248
250
|
## Completion
|
|
@@ -278,6 +280,6 @@ dtk doctor --json
|
|
|
278
280
|
config), but still does not reimplement inference.
|
|
279
281
|
- It does not have a compatibility obligation to System One/OpenAI; those are
|
|
280
282
|
REST contracts.
|
|
281
|
-
- Metrics
|
|
283
|
+
- Metrics and rate limiting are server-side features; see
|
|
282
284
|
[OPERATIONS.md](OPERATIONS.md). Wheel/PyPI releases are documented in
|
|
283
285
|
[RELEASE.md](RELEASE.md).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Core
|
|
1
|
+
# Core API
|
|
2
2
|
|
|
3
3
|
The programmatic API is the **superset**: the most expressive layer of the
|
|
4
4
|
toolkit. The REST server is a documented, conformance-tested projection of a subset of
|
|
@@ -207,7 +207,7 @@ Events emitted by `decision_toolkit.*` loggers:
|
|
|
207
207
|
Each event is a compact JSON object with `event`, `request_id`, model identity,
|
|
208
208
|
variant, adapter, question count, token counts, latency, truncation and error
|
|
209
209
|
code. State and question text are **not** logged by default. The CLI/REST
|
|
210
|
-
layers configure formatting and destinations
|
|
210
|
+
layers configure formatting and destinations separately.
|
|
211
211
|
|
|
212
212
|
## Extensibility
|
|
213
213
|
|
|
@@ -254,9 +254,9 @@ Registration is in-process (no daemon, no plugin server).
|
|
|
254
254
|
- `resolve(id, variant=...)`: local directory + role → file map + adapter for
|
|
255
255
|
the core.
|
|
256
256
|
|
|
257
|
-
##
|
|
257
|
+
## Capabilities and limits
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
The core exposes the following capabilities:
|
|
260
260
|
|
|
261
261
|
| Capability | Core status |
|
|
262
262
|
| --- | --- |
|
|
@@ -280,13 +280,12 @@ This is the checklist against which the REST projection will be verified:
|
|
|
280
280
|
| Model store | atomic download, hashes, verify, import metadata |
|
|
281
281
|
| Multi-label | capability flag + validation; no adapter yet |
|
|
282
282
|
|
|
283
|
-
##
|
|
283
|
+
## Not part of the core
|
|
284
284
|
|
|
285
|
-
- REST contract projection and standard compliance
|
|
286
|
-
|
|
287
|
-
- CLI workflows across the
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
features; see [OPERATIONS.md](OPERATIONS.md).
|
|
285
|
+
- REST contract projection and standard compliance are implemented in the
|
|
286
|
+
server; see [REST.md](REST.md).
|
|
287
|
+
- CLI workflows across the catalog are implemented in [CLI.md](CLI.md).
|
|
288
|
+
- Catalog pinning and source CI are implementation details; packaging is
|
|
289
|
+
documented in [RELEASE.md](RELEASE.md).
|
|
290
|
+
- Metrics, rate limiting and load/fuzz testing are server-side features; see
|
|
291
|
+
[OPERATIONS.md](OPERATIONS.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Operations
|
|
1
|
+
# Operations
|
|
2
2
|
|
|
3
|
-
This document covers
|
|
3
|
+
This document covers operational behavior: rate limits,
|
|
4
4
|
backpressure, metrics, tracing, load testing and the PII contract. Packaging is
|
|
5
5
|
still a later milestone.
|
|
6
6
|
|
|
@@ -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.2-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.2-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.2 -m "decision-toolkit 0.4.2"
|
|
88
|
+
git push origin v0.4.2
|
|
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.2` 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.2/>
|
|
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,9 @@ 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; `0.4.2` removed internal
|
|
152
|
+
project language and public proposal/roadmap pages.
|
|
151
153
|
|
|
152
154
|
The tag-triggered workflow remains the preferred path for future releases once
|
|
153
155
|
the TestPyPI/PyPI trusted publishers and protected environments are configured.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# REST
|
|
1
|
+
# REST API
|
|
2
2
|
|
|
3
3
|
REST is a **documented projection** of the programmatic core, not a second
|
|
4
4
|
implementation. The core remains the superset; the server selects a supported
|
|
@@ -337,11 +337,11 @@ at `http://localhost:8000/v1`.
|
|
|
337
337
|
- Transport tests cover auth, request ids, 413, CORS, readiness and per-request
|
|
338
338
|
model selection.
|
|
339
339
|
|
|
340
|
-
##
|
|
340
|
+
## Not implemented by this server
|
|
341
341
|
|
|
342
|
-
- Metrics
|
|
343
|
-
|
|
344
|
-
- CLI batch/JSONL and custom-model workflows are
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
342
|
+
- Metrics, rate limiting and load testing are implemented as server-side
|
|
343
|
+
features; see [OPERATIONS.md](OPERATIONS.md).
|
|
344
|
+
- CLI batch/JSONL and custom-model workflows are in the CLI; see [CLI.md](CLI.md).
|
|
345
|
+
- Pinned catalog hashes and CI are implementation details; packaging is
|
|
346
|
+
documented in [RELEASE.md](RELEASE.md).
|
|
347
|
+
- Images/assets and `box` are rejected because the current catalog is text-only.
|
|
@@ -11,34 +11,34 @@ local model cache. Variants of the same model coexist, so you can compare them
|
|
|
11
11
|
without deleting the default.
|
|
12
12
|
|
|
13
13
|
Only catalogued and verified builds are selectable. Community conversions that
|
|
14
|
-
have not passed the catalog
|
|
14
|
+
have not passed the catalog checks are not exposed as variants.
|
|
15
15
|
|
|
16
16
|
## Available variants
|
|
17
17
|
|
|
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
|
|
41
|
-
the parity, hash and license
|
|
41
|
+
the parity, hash and license checks for this catalog.
|
|
42
42
|
|
|
43
43
|
## One selection model across surfaces
|
|
44
44
|
|
|
@@ -202,7 +202,7 @@ The variant currently in use cannot be deleted.
|
|
|
202
202
|
|
|
203
203
|
## Why some models have only one variant
|
|
204
204
|
|
|
205
|
-
The catalog is
|
|
205
|
+
The catalog is verified, not a mirror. A variant is admitted only with a pinned
|
|
206
206
|
revision, a real ONNX export, SHA256 per file, a clean license and measured
|
|
207
207
|
parity/latency. An upstream repository may contain fp32, fp16, int8 or q4
|
|
208
208
|
builds that are not in the toolkit because they have not been validated.
|
|
@@ -23,8 +23,7 @@ PyPI: <https://pypi.org/project/decision-toolkit/>
|
|
|
23
23
|
- [Variants and quantization](VARIANTS.md) — every catalogued build and how to download/select it.
|
|
24
24
|
- [Operations](OPERATIONS.md) — rate limits, metrics, tracing and runbook.
|
|
25
25
|
- [Benchmarks](BENCH.md) — reproducible latency/parity/calibration.
|
|
26
|
-
- [Models](models/README.md) — the
|
|
27
|
-
- [Catalog proposal](CATALOG_PROPOSAL.md) — analysis and evidence for the latest model additions.
|
|
26
|
+
- [Models](models/README.md) — the model catalog.
|
|
28
27
|
- [Release](RELEASE.md) — build, TestPyPI/PyPI and Trusted Publishing.
|
|
29
28
|
|
|
30
29
|
## One example
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Model cards
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
These are the models available through `decision-toolkit`. Each card explains
|
|
4
|
+
how to load and use the model, its variants, the measured evidence and its
|
|
5
|
+
known limitations.
|
|
6
6
|
|
|
7
7
|
| Model | Adapter | Variants (default *) | Pinned | Latency (CPU) | Evidence |
|
|
8
8
|
|---|---|---|---|---|---|
|
|
@@ -18,16 +18,5 @@ card on purpose: they are not part of the curated library yet.
|
|
|
18
18
|
A `*` marks the default. To inspect sizes, hashes and exact commands, run
|
|
19
19
|
`dtk models variants <id>` or read [Variants and quantization](../VARIANTS.md).
|
|
20
20
|
|
|
21
|
-
Latencies above are
|
|
22
|
-
|
|
23
|
-
[BENCH.md](../BENCH.md).
|
|
24
|
-
|
|
25
|
-
## What a card must contain
|
|
26
|
-
|
|
27
|
-
1. Status and adapter (the model contract).
|
|
28
|
-
2. Every catalogued variant: repo, files, quantization, download size and role.
|
|
29
|
-
3. Measured evidence: latency on CPU, parity/accuracy against a named baseline.
|
|
30
|
-
4. Known limitations (language, export layout, quantization, benchmark scope).
|
|
31
|
-
5. A runnable usage example.
|
|
32
|
-
6. Provenance of the export.
|
|
33
|
-
7. The pinned revision and SHA256 per file, plus the verify/bench command.
|
|
21
|
+
Latencies above are CPU measurements. Reproducible post-warmup measurements
|
|
22
|
+
and the exact command are in [BENCH.md](../BENCH.md).
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# GLiNER2.5-Decide
|
|
2
2
|
|
|
3
|
-
- **Status:** `m0` (verified end-to-end)
|
|
4
3
|
- **Adapter:** `gliner2-decide` — fused graph with `[L]` label markers and `[SEP_STRUCT]`
|
|
5
4
|
- **License:** Apache-2.0
|
|
6
5
|
- **Parameters:** 340M · **Architecture:** DeBERTa-v3-large · **Language:** English only
|
|
@@ -54,6 +53,40 @@ in the toolkit; see [Variants and quantization](../VARIANTS.md).
|
|
|
54
53
|
- Quantized q4f16; the fp16/fp32 builds may resolve the sentiment example differently.
|
|
55
54
|
- The model card's examples are "potential outputs", not guarantees; validate on your data.
|
|
56
55
|
|
|
56
|
+
## Loading each variant
|
|
57
|
+
|
|
58
|
+
REST selects the quantization through the standard `model` field using the
|
|
59
|
+
alias `gliner2.5-decide@variant`; there is no `variant` field in the request body.
|
|
60
|
+
|
|
61
|
+
### `q4f16` (q4/fp16, default)
|
|
62
|
+
|
|
63
|
+
**Library**
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from decision_toolkit import DecisionModel
|
|
67
|
+
|
|
68
|
+
model = DecisionModel("gliner2.5-decide", variant="q4f16")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**CLI**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
dtk models download gliner2.5-decide --variant q4f16
|
|
75
|
+
dtk models use gliner2.5-decide --variant q4f16
|
|
76
|
+
dtk decide --model gliner2.5-decide --variant q4f16 \
|
|
77
|
+
--state "..." --q 'urgent=noul:Is this urgent?'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**REST**
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
curl -s http://127.0.0.1:8000/v1/systemone \
|
|
84
|
+
-H "Content-Type: application/json" \
|
|
85
|
+
-d '{"model": "gliner2.5-decide@q4f16", "state": "...",
|
|
86
|
+
"questions": {"urgent": {"type": "noul",
|
|
87
|
+
"instructions": "Is this urgent?"}}}}'
|
|
88
|
+
```
|
|
89
|
+
|
|
57
90
|
## Usage
|
|
58
91
|
|
|
59
92
|
```bash
|