WebAI Studio The Decisions API (window.DecisionModel) evaluates input text against a caller-defined schema of structured questions (boolean, choice, and score) on the user's device, returning a selected option label, confidence score, and probability distribution for each question.
#decisions-api in chrome://flags to use this API. For the DevTrial prototype, cross-origin iframes reuse the "language-model"Permissions-Policy feature. window.DecisionModel on every page with a local Laya decision encoder running on LiteRT.js. The model is downloaded once from Hugging Face; inputs never leave the device. Pick the model in the extension settings and inspect calls in the DevTools panel. Map a user's natural-language input or support request to a predefined set of application actions, departments, or UI filters.
Evaluate drafts or comments locally against boolean criteria (such as policy checks or tone checks) before submitting or escalating to a generative model.
Score items along an ordered scale (such as 1 to 5 severity or relevance) and read the expected value expectedScore.
A schema passed to DecisionModel.create() contains a questions array. Each question specifies an id, a prompt, and one of three type values:
| Type | Options Required | Output Fields |
|---|---|---|
| boolean | No (implicit "true" / "false") | Returns label ("true" or "false"), probability (P("true")), confidence, and probabilities. |
| choice | Yes (2 or more { label, description } items) | Returns the top option label, confidence, and probabilities across all options. |
| score | Optional (ordered levels; defaults to "1" through "5" when omitted) | Returns label, expectedScore (weighted average across levels), confidence, and probabilities. |
Checks whether the browser supports creating a decision model session for the given options.
staticavailability(options?: DecisionModelCreateOptions): Promise<Availability>; A promise that resolves to an Availability string: 'available', 'downloadable', 'downloading', or 'unavailable'.
Creates a new DecisionModel instance configured with the provided question schema.
staticcreate(options: DecisionModelCreateOptions): Promise<DecisionModel>; Evaluates the input string against all questions defined in the session schema and returns a DecisionResult: a record keyed by question id, so you can read result.category.label or destructure const { command } = await decisionModel.decide(input). (A backward-compatible .classify() alias is also supported.)
decide(input: DOMString, options?: DecisionModelDecideOptions): Promise<DecisionResult>; | Property | Type | Description |
|---|---|---|
| id | DOMString | The question identifier defined in the schema. |
| label | DOMString | The highest-probability option label ("true"/"false" for boolean, or one of the options). |
| confidence | double (0.0 – 1.0) | Always the winning label's probability. |
| probability | double? (0.0 – 1.0) | Present for boolean questions: probability of "true" (P("true")). |
| expectedScore | double? | Present for score questions: weighted by parsed numeric option labels when all labels are finite numbers, or 1..N ordinal indices otherwise. |
| probabilities | sequence<OptionProbability> | List of { label, probability } entries across all options for the question. |
Releases the resources associated with the decision model session when it is no longer needed.