# `Gemini.Live.Models`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L1)

Live API model selection helpers.

Live API model availability can vary by rollout. This module provides
a consistent way to choose a suitable model, preferring newer models
when available while falling back to stable defaults.

# `modality`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L16)

```elixir
@type modality() :: :text | :audio | :image
```

# `candidates`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L91)

```elixir
@spec candidates(modality()) :: [String.t()]
```

Returns the candidate Live API models for a modality in preference order.

# `candidates`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L94)

```elixir
@spec candidates(
  modality(),
  keyword()
) :: [String.t()]
```

# `default`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L68)

```elixir
@spec default(modality()) :: String.t()
```

Returns the default Live API model for a modality.

# `default`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L71)

```elixir
@spec default(
  modality(),
  keyword()
) :: String.t()
```

# `pick_from_available`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L256)

```elixir
@spec pick_from_available([String.t()], [String.t()]) :: {:ok, String.t()} | :none
```

Select the first candidate present in an available model list.

Returns `{:ok, model}` or `:none` if no candidates match.

# `resolve`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/live/models.ex#L125)

```elixir
@spec resolve(
  modality(),
  keyword()
) :: String.t()
```

Resolve the most appropriate Live API model for a modality.

Uses the Gemini API `list_models` response when available, then falls back
to the default model if no candidates are listed.

## Options

- `:auth` - Auth strategy passed to `Coordinator.list_models/1` (default: `:gemini`)
- `:available_models` - Explicit list of available models (bypass API call)
- `:candidates` - Override candidate list (strings)
- `:require_method` - Supported generation method to filter on (default: `"bidiGenerateContent"`)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
