WebAI Studio The Decisions API (window.DecisionModel) evaluates input text against a caller-defined schema of structured questions (binary, categorical, and ordinal) 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. 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 |
|---|---|---|
| binary | No (implicit "true" / "false") | Returns label ("true" or "false"), probability, confidence, and probabilities. |
| categorical | Yes (2 or more { label, description } items) | Returns the top option label, confidence, and probabilities across all options. |
| ordinal | Yes (ordered levels, e.g., "1" through "5") | 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.classify(input).
classify(input: DOMString, options?: DecisionModelClassifyOptions): Promise<DecisionResult>; | Property | Type | Description |
|---|---|---|
| id | DOMString | The question identifier defined in the schema. |
| label | DOMString | The highest-probability option label ("true"/"false" for binary, or one of the supplied options). |
| confidence | double (0.0 – 1.0) | Confidence score for the decision. |
| probability | double? (0.0 – 1.0) | Present for binary questions: probability of "true". |
| expectedScore | double? | Present for ordinal questions: weighted average across the ordered option levels. |
| 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.