# `Gemini.Types.Response.Model`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L1)

Model information response structure.

Represents the complete model metadata returned by the Gemini API,
including capabilities, token limits, and generation parameters.

# `capability_level`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L29)

```elixir
@type capability_level() :: :basic | :standard | :advanced | :premium
```

Model capability level based on features and limits

# `capacity_tier`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L32)

```elixir
@type capacity_tier() :: :small | :medium | :large | :very_large
```

Token capacity classification

# `t`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L12)

```elixir
@type t() :: %Gemini.Types.Response.Model{
  base_model_id: String.t(),
  description: String.t(),
  display_name: String.t(),
  input_token_limit: integer(),
  max_temperature: float() | nil,
  name: String.t(),
  output_token_limit: integer(),
  supported_generation_methods: [String.t()],
  temperature: float() | nil,
  thinking: boolean() | nil,
  top_k: integer() | nil,
  top_p: float() | nil,
  version: String.t()
}
```

# `capabilities_summary`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L172)

```elixir
@spec capabilities_summary(t()) :: map()
```

Generate a comprehensive capabilities summary.

## Example Response

    %{
      supports_streaming: true,
      supports_token_counting: true,
      supports_embeddings: false,
      has_temperature: true,
      has_top_k: true,
      has_top_p: false,
      method_count: 3,
      input_capacity: :very_large,
      output_capacity: :medium
    }

# `capability_score`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L193)

```elixir
@spec capability_score(t()) :: integer()
```

Calculate a capability score for model comparison.

Higher scores indicate more capable models.

# `compare_capabilities`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L215)

```elixir
@spec compare_capabilities(t(), t()) :: :lt | :eq | :gt
```

Compare two models by capability.

Returns :lt, :eq, or :gt based on capability scores.

# `effective_base_id`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L98)

```elixir
@spec effective_base_id(t()) :: String.t()
```

Get the effective base model ID.

Prefers the base_model_id field, but falls back to extracting
from the name if base_model_id is nil.

## Examples

    iex> Model.effective_base_id(%Model{base_model_id: "gemini-flash-lite-latest"})
    "gemini-flash-lite-latest"

    iex> Model.effective_base_id(%Model{name: "models/gemini-2.5-pro", base_model_id: nil})
    "gemini-2.5-pro"

# `has_advanced_params?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L116)

```elixir
@spec has_advanced_params?(t()) :: boolean()
```

Check if model has advanced generation parameters.

Returns true if the model supports temperature, top_p, or top_k parameters.

# `input_capacity_tier`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L132)

```elixir
@spec input_capacity_tier(t()) :: capacity_tier()
```

Classify model's input token capacity.

## Examples

    iex> Model.input_capacity_tier(%Model{input_token_limit: 2_000_000})
    :very_large

    iex> Model.input_capacity_tier(%Model{input_token_limit: 30_000})
    :medium

# `latest_version?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L256)

```elixir
@spec latest_version?(t()) :: boolean()
```

Check if this appears to be the latest version of a model.

Heuristic based on name patterns (no version suffix, "latest" in name).

# `model_family`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L238)

```elixir
@spec model_family(t()) :: String.t()
```

Extract model family from the base model ID.

## Examples

    iex> Model.model_family(%Model{base_model_id: "gemini-flash-lite-latest"})
    "gemini"

    iex> Model.model_family(%Model{base_model_id: "gemini-embedding-001"})
    "gemini-embedding"

# `output_capacity_tier`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L145)

```elixir
@spec output_capacity_tier(t()) :: capacity_tier()
```

Classify model's output token capacity.

# `production_ready?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L272)

```elixir
@spec production_ready?(t()) :: boolean()
```

Determine if model is suitable for production use.

Based on capability, capacity, and stability indicators.

# `supports_embeddings?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L78)

```elixir
@spec supports_embeddings?(t()) :: boolean()
```

Check if model supports embeddings.

# `supports_method?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L46)

```elixir
@spec supports_method?(t(), String.t()) :: boolean()
```

Check if model supports a specific generation method.

## Examples

    iex> Model.supports_method?(model, "generateContent")
    true

    iex> Model.supports_method?(model, "nonexistentMethod")
    false

# `supports_streaming?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L54)

```elixir
@spec supports_streaming?(t()) :: boolean()
```

Check if model supports streaming content generation.

# `supports_thinking?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L70)

```elixir
@spec supports_thinking?(t()) :: boolean()
```

Check if model supports thinking/reasoning.

# `supports_token_counting?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L62)

```elixir
@spec supports_token_counting?(t()) :: boolean()
```

Check if model supports token counting.

---

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