@@ -74,6 +74,12 @@ pub enum Model {
O3,
#[serde(rename = "o4-mini")]
O4Mini,
+ #[serde(rename = "gpt-5")]
+ Five,
+ #[serde(rename = "gpt-5-mini")]
+ FiveMini,
+ #[serde(rename = "gpt-5-nano")]
+ FiveNano,
#[serde(rename = "custom")]
Custom {
@@ -105,6 +111,9 @@ impl Model {
"o3-mini" => Ok(Self::O3Mini),
"o3" => Ok(Self::O3),
"o4-mini" => Ok(Self::O4Mini),
+ "gpt-5" => Ok(Self::Five),
+ "gpt-5-mini" => Ok(Self::FiveMini),
+ "gpt-5-nano" => Ok(Self::FiveNano),
invalid_id => anyhow::bail!("invalid model id '{invalid_id}'"),
}
}
@@ -123,6 +132,9 @@ impl Model {
Self::O3Mini => "o3-mini",
Self::O3 => "o3",
Self::O4Mini => "o4-mini",
+ Self::Five => "gpt-5",
+ Self::FiveMini => "gpt-5-mini",
+ Self::FiveNano => "gpt-5-nano",
Self::Custom { name, .. } => name,
}
}
@@ -141,6 +153,9 @@ impl Model {
Self::O3Mini => "o3-mini",
Self::O3 => "o3",
Self::O4Mini => "o4-mini",
+ Self::Five => "gpt-5",
+ Self::FiveMini => "gpt-5-mini",
+ Self::FiveNano => "gpt-5-nano",
Self::Custom {
name, display_name, ..
} => display_name.as_ref().unwrap_or(name),
@@ -161,6 +176,9 @@ impl Model {
Self::O3Mini => 200_000,
Self::O3 => 200_000,
Self::O4Mini => 200_000,
+ Self::Five => 272_000,
+ Self::FiveMini => 272_000,
+ Self::FiveNano => 272_000,
Self::Custom { max_tokens, .. } => *max_tokens,
}
}
@@ -182,6 +200,9 @@ impl Model {
Self::O3Mini => Some(100_000),
Self::O3 => Some(100_000),
Self::O4Mini => Some(100_000),
+ Self::Five => Some(128_000),
+ Self::FiveMini => Some(128_000),
+ Self::FiveNano => Some(128_000),
}
}
@@ -197,7 +218,10 @@ impl Model {
| Self::FourOmniMini
| Self::FourPointOne
| Self::FourPointOneMini
- | Self::FourPointOneNano => true,
+ | Self::FourPointOneNano
+ | Self::Five
+ | Self::FiveMini
+ | Self::FiveNano => true,
Self::O1 | Self::O3 | Self::O3Mini | Self::O4Mini | Model::Custom { .. } => false,
}
}