Repository navigation
Releases: gopaljigaur/decide
Releases · gopaljigaur/decide
Release list
v0.2.19
Interactive configuration with local inference by default.
- Run
decide initto save an explicit backend chain, model options, and confidence threshold indecide.json. Setup does not save API keys or load models. - Both
ClientandAsyncClientacceptconfig=Config(...)orconfig="decide.json". CLIaskandserveuse the same format and accept--config. - API keys and server URLs no longer add hosted backends automatically. Without an explicit chain, only installed local models are discovered.
Migration: if you relied on automatic hosted fallback, run decide init, supply a config, or explicitly select the chain with DECIDE_BACKENDS. Credentials authenticate that selection. DECIDE_LOCAL_ONLY remains an enforcement override; DECIDE_OPENAI_DECISIONS is obsolete.
Validation: the complete clean-environment suite passes (515 passed, 6 live tests skipped), along with lint, formatting, and type checks. GitHub CI covers Python 3.10 through 3.14.
v0.2.18
Packaging and types, after an audit of the whole repository.
py.typedships, so a consumer's type checker reads the annotations that were already there.mypyis clean and runs in CI, which it did not before; it found 28 errors, nearly all fromcriteriabeing declaredMapping | Sequence[str]while__post_init__normalizes it to a mapping.- The base install is
httpxalone. FastAPI and uvicorn moved to theserverextra, wheredecide servealready told people to look. A client no longer installs a web server it never runs. - Every README link is absolute, so the PyPI page renders: its diagram was a broken image and every link to
docs/, the changelog and the licence was a 404, because PyPI resolves relative paths againstpypi.org. - Removed
Capabilities.max_choice_options, which nothing set and nothing read, and an unused helper indecide.recording.
v0.2.16
- Record decisions in production and fit a threshold from them.
Client(..., recorder=JsonlRecorder(path))writes one row per decision with the probabilities, the reported confidence, the route and the latency;record_outcome(path, id, {...})attaches what actually turned out to be right;rows_fromjoins the two into exactly whatfit_temperatureandfit_conformal_quantiletake.decide fit <file> <question>prints the fitted values plus what each threshold would have accepted and how often it was right, which is the table that says whether a gate is safe to turn on. Recording never fails a decision: a recorder that raises is ignored. decide fitalso prints the range of confidence actually reported, since a threshold table of zeros usually means every threshold sits above what the backend reports.
v0.2.15
- The README names
DECIDE_LOCAL_ONLY, in the feature table and in the paragraph that describes howfrom_envpicks the chain. 0.2.13 and 0.2.14 documented it only indocs/, so the page most people read still described local first with hosted fallback and no way to turn that off.
v0.2.14
DECIDE_LOCAL_ONLYis the only way to turn local only on. 0.2.13 also took alocal_only=keyword onClient,AsyncClientand bothfrom_envs, which was four signatures and a second source of truth for one deployment switch.
v0.2.13
DECIDE_LOCAL_ONLY=1, orlocal_only=True, refuses every backend that sends the state to a server.from_envstops adding hosted backends whose keys happen to be in the environment, naming one inDECIDE_BACKENDSraisesConfigError, and so does passing one toClient(...), since the check reads each backend'sCapabilities.local. One environment variable makes a deployment local only, instead of every call site having to be written that way.docs/gating.mdsays what a single-backend chain does when its answer misses the gate: there is no next backend, so the answer is accepted or raised, never escalated.
v0.2.12
Client(..., on_low_confidence="raise")abstains instead of returning an answer that missed the gate, raisingLowConfidencewith the rejected response and the route. A chain of local backends with this set never sends a state anywhere, which is what a local-only deployment needs; the default is unchanged.
v0.2.11
docs/backends.mdscores the checkpoint table on the confidence each checkpoint reports, which is what 0.2.10 made the gate read. The ag_news column moves: English 0.028 to 0.106, typed-decisions 0.126 to 0.365, multilingual 0.072 to 0.047. The yes/no columns are unchanged. English is still the default, on yes/no calibration; the multilingual checkpoint is the best calibrated of the three on a four-way choice.
v0.2.10
- The gate now reads the backend's own
confidencewhen it reports one, instead of computing the top probability itself. The two differ: on one ag_news story von reports 0.877 against a top probability of 0.9077, and laya reports 0.906 against 0.9779; on a two option choice laya has reported 0.5909 against 0.918. EveryChoice,ScoreandNoulanswer now carriesconfidence, which is what the backend sent orNone. Backends that report nothing, such as the reranker, keep the computed fallback. - Thresholds tuned against the old number will route differently.
v0.2.9
- Correct what 0.2.6 said about the multilingual checkpoint. Its 0.527 on yes/no questions was mostly the unnamed options: the same 150 rows with the two options named score 0.853, against the English checkpoint's 0.887. The English checkpoint stays the default on calibration (0.049 against 0.103), not on "barely above chance".
docs/backends.mdhas both columns and the third checkpoint. - Re-measured the README and
docs/numbers on the current release of every dependency, including laya-mlx 0.4.0, which answers identically to 0.1.0 and is slower here: one Choice question goes from 15.6 ms to 20.9 ms.