Centralized model name constants and helpers.
All model references throughout the SDK flow through this module. Override defaults via Application configuration:
# config/config.exs
config :gemini_cli_sdk,
default_model: "gemini-2.5-pro",
fast_model: "gemini-2.5-flash"Built-in Models
| Function | Default | Description |
|---|---|---|
default_model/0 | "gemini-2.5-pro" | Most capable model |
fast_model/0 | "gemini-2.5-flash" | Optimized for speed |
Aliases
Short aliases expand to full model names via resolve/1:
| Alias | Resolves To |
|---|---|
"pro" | default_model() |
"default" | default_model() |
"flash" | fast_model() |
"fast" | fast_model() |
Summary
Functions
Returns a list of all built-in model identifiers.
Returns the default (most capable) model name.
Returns the fast model name, optimized for speed.
Returns true if the model name is a known built-in model or alias.
Resolves a model name, expanding aliases.
Validates a model value.
Functions
@spec available_models() :: [String.t()]
Returns a list of all built-in model identifiers.
@spec default_model() :: String.t()
Returns the default (most capable) model name.
@spec fast_model() :: String.t()
Returns the fast model name, optimized for speed.
Returns true if the model name is a known built-in model or alias.
Resolves a model name, expanding aliases.
Accepts full model names as-is, or aliases like "pro", "flash",
"default", "fast".
Examples
iex> GeminiCliSdk.Models.resolve("pro")
"gemini-2.5-pro"
iex> GeminiCliSdk.Models.resolve("gemini-2.5-flash")
"gemini-2.5-flash"
iex> GeminiCliSdk.Models.resolve("custom-model")
"custom-model"
Validates a model value.
Accepts any non-empty binary string or nil (meaning use CLI default).
Does not restrict to known models -- new models work without SDK updates.
Examples
iex> GeminiCliSdk.Models.validate("gemini-2.5-pro")
:ok
iex> GeminiCliSdk.Models.validate(nil)
:ok
iex> GeminiCliSdk.Models.validate(123)
{:error, "Invalid model: 123. Must be a non-empty string or nil."}