use crate::types::base_types::{
MessageType, ModelAPI, ModelProviderDescriptor, ModelProviders, ModelUsageCosting,
};
pub static MODELS: &[ModelProviderDescriptor] = &[
ModelProviderDescriptor {
id: "gpt-4",
name: "GPT-4",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::Text,
cost: ModelUsageCosting {
input: 30.0,
output: 60.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 8192,
max_tokens: 8192,
},
ModelProviderDescriptor {
id: "gpt-4-turbo",
name: "GPT-4 Turbo",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 10.0,
output: 30.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 4096,
},
ModelProviderDescriptor {
id: "gpt-4.1",
name: "GPT-4.1",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.0,
output: 8.0,
cache_read: 0.5,
cache_write: 0.0,
},
context_window: 1_047_576,
max_tokens: 32_768,
},
ModelProviderDescriptor {
id: "gpt-4.1-mini",
name: "GPT-4.1 mini",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.4,
output: 1.6,
cache_read: 0.1,
cache_write: 0.0,
},
context_window: 1_047_576,
max_tokens: 32_768,
},
ModelProviderDescriptor {
id: "gpt-4.1-nano",
name: "GPT-4.1 nano",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.1,
output: 0.4,
cache_read: 0.03,
cache_write: 0.0,
},
context_window: 1_047_576,
max_tokens: 32_768,
},
ModelProviderDescriptor {
id: "gpt-4o",
name: "GPT-4o",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.5,
output: 10.0,
cache_read: 1.25,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-4o-2024-05-13",
name: "GPT-4o (2024-05-13)",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 5.0,
output: 15.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 4096,
},
ModelProviderDescriptor {
id: "gpt-4o-2024-08-06",
name: "GPT-4o (2024-08-06)",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.5,
output: 10.0,
cache_read: 1.25,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-4o-2024-11-20",
name: "GPT-4o (2024-11-20)",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.5,
output: 10.0,
cache_read: 1.25,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-4o-mini",
name: "GPT-4o mini",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.15,
output: 0.6,
cache_read: 0.08,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-5",
name: "GPT-5",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.125,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5-codex",
name: "GPT-5-Codex",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.125,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5-mini",
name: "GPT-5 Mini",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.25,
output: 2.0,
cache_read: 0.025,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5-nano",
name: "GPT-5 Nano",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.05,
output: 0.4,
cache_read: 0.005,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5-pro",
name: "GPT-5 Pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 15.0,
output: 120.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 272_000,
},
ModelProviderDescriptor {
id: "gpt-5.1",
name: "GPT-5.1",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.13,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.1-chat-latest",
name: "GPT-5.1 Chat",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.125,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-5.1-codex",
name: "GPT-5.1 Codex",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.125,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.1-codex-max",
name: "GPT-5.1 Codex Max",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.25,
output: 10.0,
cache_read: 0.125,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.1-codex-mini",
name: "GPT-5.1 Codex mini",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.25,
output: 2.0,
cache_read: 0.025,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.2",
name: "GPT-5.2",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.2-chat-latest",
name: "GPT-5.2 Chat",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-5.2-codex",
name: "GPT-5.2 Codex",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.2-pro",
name: "GPT-5.2 Pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 21.0,
output: 168.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.3-chat-latest",
name: "GPT-5.3 Chat (latest)",
reasoning: false,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 16_384,
},
ModelProviderDescriptor {
id: "gpt-5.3-codex",
name: "GPT-5.3 Codex",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.3-codex-spark",
name: "GPT-5.3 Codex Spark",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.75,
output: 14.0,
cache_read: 0.175,
cache_write: 0.0,
},
context_window: 128_000,
max_tokens: 32_000,
},
ModelProviderDescriptor {
id: "gpt-5.4",
name: "GPT-5.4",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.5,
output: 15.0,
cache_read: 0.25,
cache_write: 0.0,
},
context_window: 1_050_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.4-mini",
name: "GPT-5.4 mini",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.75,
output: 4.5,
cache_read: 0.075,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.4-nano",
name: "GPT-5.4 nano",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 0.2,
output: 1.25,
cache_read: 0.02,
cache_write: 0.0,
},
context_window: 400_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.4-pro",
name: "GPT-5.4 Pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 30.0,
output: 180.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 1_050_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.5",
name: "GPT-5.5",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 5.0,
output: 30.0,
cache_read: 0.5,
cache_write: 0.0,
},
context_window: 1_050_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "gpt-5.5-pro",
name: "GPT-5.5 Pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 30.0,
output: 180.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 1_050_000,
max_tokens: 128_000,
},
ModelProviderDescriptor {
id: "o1",
name: "o1",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 15.0,
output: 60.0,
cache_read: 7.5,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o1-pro",
name: "o1-pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 150.0,
output: 600.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o3",
name: "o3",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.0,
output: 8.0,
cache_read: 0.5,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o3-deep-research",
name: "o3-deep-research",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 10.0,
output: 40.0,
cache_read: 2.5,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o3-mini",
name: "o3-mini",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::Text,
cost: ModelUsageCosting {
input: 1.1,
output: 4.4,
cache_read: 0.55,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o3-pro",
name: "o3-pro",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 20.0,
output: 80.0,
cache_read: 0.0,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o4-mini",
name: "o4-mini",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 1.1,
output: 4.4,
cache_read: 0.28,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
ModelProviderDescriptor {
id: "o4-mini-deep-research",
name: "o4-mini-deep-research",
reasoning: true,
api: ModelAPI::OpenAICompletions,
provider: ModelProviders::OPENCODE,
base_url: Some("https://opencode.ai/zen/v1"),
inputs: MessageType::TextAndImages,
cost: ModelUsageCosting {
input: 2.0,
output: 8.0,
cache_read: 0.5,
cache_write: 0.0,
},
context_window: 200_000,
max_tokens: 100_000,
},
];