GeminiCliSdk.Models (gemini_cli_sdk v0.2.0)

Copy Markdown View Source

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

FunctionDefaultDescription
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:

AliasResolves 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

available_models()

@spec available_models() :: [String.t()]

Returns a list of all built-in model identifiers.

default_model()

@spec default_model() :: String.t()

Returns the default (most capable) model name.

fast_model()

@spec fast_model() :: String.t()

Returns the fast model name, optimized for speed.

known?(model)

@spec known?(String.t()) :: boolean()

Returns true if the model name is a known built-in model or alias.

resolve(name)

@spec resolve(String.t()) :: String.t()

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"

validate(model)

@spec validate(term()) :: :ok | {:error, String.t()}

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."}