> For the complete documentation index, see [llms.txt](https://agpt.co/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://agpt.co/docs/integrations/block-integrations/choice.md).

# Typesafe Choice

Choose among explicitly described options using TypeSafe Jev.

## Jev Choice

### What it is

Make a typed choice with Jev. Describe what qualifies for each option in plain language.

### How it works

Provide a question, the relevant state, and at least two named options. Each option description explains what qualifies for that answer. Jev selects one configured name and returns its probabilities and confidence; the block forwards those values without changing the model's judgment.

Each call is stateless, so include all needed context in `state`. Structured state becomes compact JSON text, and oversized state is truncated with a visible flag and note. Request and response bodies are exposed alongside timing and token usage. Failed calls emit available transparency and an error without a choice.

### Inputs

| Input    | Description                                                                                                                                     | Type            | Required |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | -------- |
| state    | Text or JSON context shared by every question in this stateless call. JSON is compactly serialized; oversized context is truncated with a note. | State           | No       |
| question | Plain-language judgment to make.                                                                                                                | str             | Yes      |
| options  | Option names mapped to concrete descriptions of what qualifies.                                                                                 | Dict\[str, str] | Yes      |

### Outputs

| Output           | Description                                                                                                                                    | Type              |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| error            | API failure details; emitted only when a call fails.                                                                                           | str               |
| request          | Verbatim JSON request body sent to Jev.                                                                                                        | str               |
| response         | Verbatim UTF-8 response body from Jev, or null if no response arrived. Invalid UTF-8 is preserved as a lossless Base64 data URL with an error. | str               |
| latency\_ms      | Wall-clock API call duration in ms.                                                                                                            | float             |
| input\_tokens    | Input tokens reported by the API, or null if unavailable on failure.                                                                           | int               |
| output\_tokens   | Output tokens reported by the API, or null if unavailable on failure.                                                                          | int               |
| request\_id      | TypeSafe request ID response header.                                                                                                           | str               |
| truncated        | Whether any input text was truncated.                                                                                                          | bool              |
| truncation\_note | Truncation details, or an empty string.                                                                                                        | str               |
| choice           | Winning option name returned by Jev.                                                                                                           | str               |
| probabilities    | Probability for each option.                                                                                                                   | Dict\[str, float] |
| confidence       | Confidence returned by Jev.                                                                                                                    | float             |

### Possible use case

**Support Classification**: Choose the team responsible for a ticket from clear ownership descriptions.

**Content Tagging**: Assign a document to a controlled set of topics using the supplied definitions.

**Workflow Selection**: Choose which named processing strategy best fits an incoming record.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://agpt.co/docs/integrations/block-integrations/choice.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
