Skip to content

Releases: gopaljigaur/decide

v0.2.19

Choose a tag to compare

@gopaljigaur gopaljigaur released this 21 Oct 19:43
e280dab

Interactive configuration with local inference by default.

  • Run decide init to save an explicit backend chain, model options, and confidence threshold in decide.json. Setup does not save API keys or load models.
  • Both Client and AsyncClient accept config=Config(...) or config="decide.json". CLI ask and serve use 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

Choose a tag to compare

@gopaljigaur gopaljigaur released this 20 Oct 19:19
3bbe518

Packaging and types, after an audit of the whole repository.

  • py.typed ships, so a consumer's type checker reads the annotations that were already there. mypy is clean and runs in CI, which it did not before; it found 28 errors, nearly all from criteria being declared Mapping | Sequence[str] while __post_init__ normalizes it to a mapping.
  • The base install is httpx alone. FastAPI and uvicorn moved to the server extra, where decide serve already 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 against pypi.org.
  • Removed Capabilities.max_choice_options, which nothing set and nothing read, and an unused helper in decide.recording.

v0.2.16

Choose a tag to compare

@gopaljigaur gopaljigaur released this 19 Oct 13:18
9660ce2
  • 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_from joins the two into exactly what fit_temperature and fit_conformal_quantile take. 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 fit also 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

Choose a tag to compare

@gopaljigaur gopaljigaur released this 19 Oct 11:23
294f71b
  • The README names DECIDE_LOCAL_ONLY, in the feature table and in the paragraph that describes how from_env picks the chain. 0.2.13 and 0.2.14 documented it only in docs/, so the page most people read still described local first with hosted fallback and no way to turn that off.

v0.2.14

Choose a tag to compare

@gopaljigaur gopaljigaur released this 19 Oct 10:51
d5c1bbb
  • DECIDE_LOCAL_ONLY is the only way to turn local only on. 0.2.13 also took a local_only= keyword on Client, AsyncClient and both from_envs, which was four signatures and a second source of truth for one deployment switch.

v0.2.13

Choose a tag to compare

@gopaljigaur gopaljigaur released this 19 Oct 10:39
f22101c
  • DECIDE_LOCAL_ONLY=1, or local_only=True, refuses every backend that sends the state to a server. from_env stops adding hosted backends whose keys happen to be in the environment, naming one in DECIDE_BACKENDS raises ConfigError, and so does passing one to Client(...), since the check reads each backend's Capabilities.local. One environment variable makes a deployment local only, instead of every call site having to be written that way.
  • docs/gating.md says 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

Choose a tag to compare

@gopaljigaur gopaljigaur released this 17 Oct 18:11
d5f5aff
  • Client(..., on_low_confidence="raise") abstains instead of returning an answer that missed the gate, raising LowConfidence with 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

Choose a tag to compare

@gopaljigaur gopaljigaur released this 17 Oct 09:38
e64cf3b
  • docs/backends.md scores 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

Choose a tag to compare

@gopaljigaur gopaljigaur released this 17 Oct 09:14
2d82fe2
  • The gate now reads the backend's own confidence when 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. Every Choice, Score and Noul answer now carries confidence, which is what the backend sent or None. Backends that report nothing, such as the reranker, keep the computed fallback.
  • Thresholds tuned against the old number will route differently.

v0.2.9

Choose a tag to compare

@gopaljigaur gopaljigaur released this 17 Oct 08:29
cb611b2
  • 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.md has 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.