> This page is for NeMo Relay, version v0.8.4.
> For other versions, use one of these documentation indexes:
> - Latest (v0.10.0) (default): https://docs.nvidia.com/nemo/relay/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/relay/dev/llms.txt
> - v0.10.0: https://docs.nvidia.com/nemo/relay/v0.10.0/llms.txt
> - v0.9.4: https://docs.nvidia.com/nemo/relay/v0.9.4/llms.txt
> - v0.8.4: https://docs.nvidia.com/nemo/relay/v0.8.4/llms.txt
> - v0.7.3: https://docs.nvidia.com/nemo/relay/v0.7.3/llms.txt
> - v0.6.0: https://docs.nvidia.com/nemo/relay/v0.6.0/llms.txt
> - v0.5.0: https://docs.nvidia.com/nemo/relay/v0.5.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/relay/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/relay/_mcp/server.

# Enum Finish Reason

> Normalized reason why the model stopped generating.

Generated from `cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker`.

<pre />

Normalized reason why the model stopped generating.

Maps from provider-specific stop reasons:

* **Complete**: OpenAI Chat `"stop"`, Anthropic `"end_turn"`, Responses `"completed"`, Gemini generateContent `"STOP"` (without function-call parts)
* **Length**: OpenAI Chat `"length"`, Anthropic `"max_tokens"`, Responses incomplete+max\_output\_tokens, Gemini generateContent `"MAX_TOKENS"`
* **ToolUse**: OpenAI Chat `"tool_calls"`, Anthropic `"tool_use"`, Gemini generateContent `"TOOL_CODE"` (unconditional) or `"STOP"` when function-call parts are present
* **ContentFilter**: OpenAI Chat `"content_filter"`, Responses incomplete+content\_filter, Gemini generateContent `"SAFETY"` / `"RECITATION"` / `"BLOCKLIST"` / `"PROHIBITED_CONTENT"` and other policy codes
* **Unknown**: Forward-compatible catch-all for unrecognized reasons (e.g. Gemini generateContent `"MALFORMED_FUNCTION_CALL"`, `"UNEXPECTED_TOOL_CALL"`)

## Variants

### `Complete`

<pre />

Model naturally completed its response.

### `Length`

<pre />

Maximum token limit reached.

### `ToolUse`

<pre />

Model requested a tool call.

### `ContentFilter`

<pre />

Content was filtered by safety systems.

### `Unknown(String)`

<pre />

Unknown or forward-compatible reason.

## Implementations

### `impl FinishReason`

<pre />

#### `is_complete`

<pre />

Returns `true` if the model naturally completed its response.

Only the [`FinishReason::Complete`](/reference/api/rust-library-reference/nemo-relay/codec/response/enum-finishreason) variant returns `true`.

## Trait Implementations

### `impl Clone for FinishReason`

<pre />

#### `clone`

<pre />

#### `clone_from`

<pre />

### `impl Debug for FinishReason`

<pre />

#### `fmt`

<pre />

### `impl<'de> Deserialize<'de> for FinishReason`

<pre />

#### `deserialize`

<pre />

### `impl PartialEq for FinishReason`

<pre />

#### `eq`

<pre />

#### `ne`

<pre />

### `impl Serialize for FinishReason`

<pre />

#### `serialize`

<pre />

### `impl Eq for FinishReason`

<pre />

### `impl StructuralPartialEq for FinishReason`

<pre />