pub enum Model {
OpenAI(OpenAIModel),
Anthropic(AnthropicModel),
OpenRouter(OpenRouterModel),
OpenAICompatible(OpenAICompatibleModel),
}Expand description
Unified AI model selection across providers.
Each variant wraps a provider-specific model enum, which is what makes the provider unambiguous: picking a model also picks the API it is sent to.
Serializes as an internally tagged value with a provider tag and a model
payload, so a selection can be round-tripped through configuration files.
§Examples
use rai_sdk::{Model, OpenAIModel, ProviderKind};
let model = Model::OpenAI(OpenAIModel::Gpt5);
assert_eq!(model.as_str(), "gpt-5");
assert_eq!(model.provider(), ProviderKind::OpenAI);Variants§
OpenAI(OpenAIModel)
A model served by OpenAI’s API.
Anthropic(AnthropicModel)
A model served by Anthropic’s Messages API.
OpenRouter(OpenRouterModel)
A model served through OpenRouter’s aggregating API.
OpenAICompatible(OpenAICompatibleModel)
A model served by the client’s configured OpenAI-compatible endpoint.
Implementations§
Source§impl Model
impl Model
Sourcepub fn provider(&self) -> ProviderKind
pub fn provider(&self) -> ProviderKind
The provider that will serve this model.
Sourcepub fn gpt4o() -> Self
pub fn gpt4o() -> Self
Select OpenAIModel::Gpt4o (gpt-4o).
Sourcepub fn gpt4o_mini() -> Self
pub fn gpt4o_mini() -> Self
Select OpenAIModel::Gpt4oMini (gpt-4o-mini).
Sourcepub fn gpt4_1() -> Self
pub fn gpt4_1() -> Self
Select OpenAIModel::Gpt4_1 (gpt-4.1).
Sourcepub fn o3_mini() -> Self
pub fn o3_mini() -> Self
Select OpenAIModel::O3Mini (o3-mini).
Sourcepub fn o3() -> Self
pub fn o3() -> Self
Select OpenAIModel::O3 (o3).
Sourcepub fn o4_mini() -> Self
pub fn o4_mini() -> Self
Select OpenAIModel::O4Mini (o4-mini).
Sourcepub fn gpt5() -> Self
pub fn gpt5() -> Self
Select OpenAIModel::Gpt5 (gpt-5).
Sourcepub fn gpt5_mini() -> Self
pub fn gpt5_mini() -> Self
Select OpenAIModel::Gpt5Mini (gpt-5-mini).
Sourcepub fn gpt5_nano() -> Self
pub fn gpt5_nano() -> Self
Select OpenAIModel::Gpt5Nano (gpt-5-nano).
Sourcepub fn gpt5_codex() -> Self
pub fn gpt5_codex() -> Self
Select OpenAIModel::Gpt5Codex (gpt-5-codex).
Sourcepub fn gpt_5_1() -> Self
pub fn gpt_5_1() -> Self
Select OpenAIModel::Gpt5_1 (gpt-5.1).
Sourcepub fn gpt_5_2() -> Self
pub fn gpt_5_2() -> Self
Select OpenAIModel::Gpt5_2 (gpt-5.2).
Sourcepub fn gpt_5_2_pro() -> Self
pub fn gpt_5_2_pro() -> Self
Select OpenAIModel::Gpt5_2Pro (gpt-5.2-pro).
Sourcepub fn gpt_5_3_chat() -> Self
pub fn gpt_5_3_chat() -> Self
Select OpenAIModel::Gpt5_3Chat (gpt-5.3-chat).
Sourcepub fn gpt_5_3_instant() -> Self
pub fn gpt_5_3_instant() -> Self
Select OpenAIModel::Gpt5_3Instant (gpt-5.3-instant).
Sourcepub fn gpt_5_4() -> Self
pub fn gpt_5_4() -> Self
Select OpenAIModel::Gpt5_4 (gpt-5.4).
Sourcepub fn gpt_5_4_mini() -> Self
pub fn gpt_5_4_mini() -> Self
Select OpenAIModel::Gpt5_4Mini (gpt-5.4-mini).
Sourcepub fn gpt_5_4_nano() -> Self
pub fn gpt_5_4_nano() -> Self
Select OpenAIModel::Gpt5_4Nano (gpt-5.4-nano).
Sourcepub fn gpt_5_5() -> Self
pub fn gpt_5_5() -> Self
Select OpenAIModel::Gpt5_5 (gpt-5.5).
Sourcepub fn claude_fable_5() -> Self
pub fn claude_fable_5() -> Self
Select AnthropicModel::ClaudeFable5 (claude-fable-5).
Sourcepub fn claude_opus_48() -> Self
pub fn claude_opus_48() -> Self
Select AnthropicModel::ClaudeOpus48 (claude-opus-4-8).
Sourcepub fn claude_opus_47() -> Self
pub fn claude_opus_47() -> Self
Select AnthropicModel::ClaudeOpus47 (claude-opus-4-7).
Sourcepub fn claude_sonnet_46() -> Self
pub fn claude_sonnet_46() -> Self
Select AnthropicModel::ClaudeSonnet46 (claude-sonnet-4-6).
Sourcepub fn claude_opus_46() -> Self
pub fn claude_opus_46() -> Self
Select AnthropicModel::ClaudeOpus46 (claude-opus-4-6).
Sourcepub fn claude_sonnet_4() -> Self
pub fn claude_sonnet_4() -> Self
Select AnthropicModel::ClaudeSonnet4 (claude-sonnet-4-0).
Sourcepub fn claude_opus_4() -> Self
pub fn claude_opus_4() -> Self
Select AnthropicModel::ClaudeOpus4 (claude-opus-4-0).
Sourcepub fn claude_opus_41() -> Self
pub fn claude_opus_41() -> Self
Select AnthropicModel::ClaudeOpus41 (claude-opus-4-1).
Sourcepub fn claude_sonnet_45() -> Self
pub fn claude_sonnet_45() -> Self
Select AnthropicModel::ClaudeSonnet45 (claude-sonnet-4-5).
Sourcepub fn claude_opus_45() -> Self
pub fn claude_opus_45() -> Self
Select AnthropicModel::ClaudeOpus45 (claude-opus-4-5).
Sourcepub fn claude_haiku_45() -> Self
pub fn claude_haiku_45() -> Self
Select AnthropicModel::ClaudeHaiku45 (claude-haiku-4-5).
Sourcepub fn claude_35_sonnet() -> Self
pub fn claude_35_sonnet() -> Self
Select AnthropicModel::Claude35Sonnet (claude-3-5-sonnet-20241022).
Sourcepub fn claude_35_haiku() -> Self
pub fn claude_35_haiku() -> Self
Select AnthropicModel::Claude35Haiku (claude-3-5-haiku-20241022).
Sourcepub fn openai_custom(name: impl Into<String>) -> Self
pub fn openai_custom(name: impl Into<String>) -> Self
Create a model from a custom OpenAI model string.
Sourcepub fn anthropic_custom(name: impl Into<String>) -> Self
pub fn anthropic_custom(name: impl Into<String>) -> Self
Create a model from a custom Anthropic model string.
Sourcepub fn openrouter_custom(name: impl Into<String>) -> Self
pub fn openrouter_custom(name: impl Into<String>) -> Self
Create a model from a custom OpenRouter model string.
Sourcepub fn openai_compatible(name: impl Into<String>) -> Self
pub fn openai_compatible(name: impl Into<String>) -> Self
Name a model served by the client’s OpenAI-compatible endpoint.
There is no catalog to pick from: the identifier is whatever the
endpoint calls the model, such as llama3.1:8b on Ollama or a
filesystem path on vLLM. Which endpoint serves it is a property of the
client — see
ClientBuilder::openai_compatible_base_url.
§Examples
use rai_sdk::{Model, ProviderKind};
let model = Model::openai_compatible("llama3.1:8b");
assert_eq!(model.as_str(), "llama3.1:8b");
assert_eq!(model.provider(), ProviderKind::OpenAICompatible);Sourcepub fn openrouter_auto() -> Self
pub fn openrouter_auto() -> Self
Select OpenRouterModel::Auto (openrouter/auto).
Sourcepub fn openrouter_gpt5() -> Self
pub fn openrouter_gpt5() -> Self
Select OpenRouterModel::Gpt5 (openai/gpt-5).
Sourcepub fn openrouter_claude_sonnet_4_5() -> Self
pub fn openrouter_claude_sonnet_4_5() -> Self
Select OpenRouterModel::ClaudeSonnet4_5 (anthropic/claude-sonnet-4.5).
Sourcepub fn openrouter_gemini_25_flash() -> Self
pub fn openrouter_gemini_25_flash() -> Self
Select OpenRouterModel::Gemini25Flash (google/gemini-2.5-flash).
Sourcepub fn openrouter_deepseek_r1() -> Self
pub fn openrouter_deepseek_r1() -> Self
Select OpenRouterModel::DeepseekR1 (deepseek/deepseek-r1).
Sourcepub fn openrouter_qwen3_coder() -> Self
pub fn openrouter_qwen3_coder() -> Self
Select OpenRouterModel::Qwen3Coder (qwen/qwen3-coder).