Fix provider context budgeting and ChatGPT subscription limits

This commit is contained in:
2026-09-13 23:01:03 -05:00
parent ba56d83fc6
commit 6f33c97763
9 changed files with 302 additions and 81 deletions
+9 -5
View File
@@ -293,18 +293,22 @@ fn bedrock_max_output_tokens(model: &str) -> u64 {
.unwrap_or(64_000)
}
fn provider_context_window_tokens(
pub(crate) fn provider_context_window_tokens(
provider_config: &crate::ai::provider::ProviderConfig,
model: &str,
configured_limit: Option<u32>,
) -> Option<u32> {
configured_limit.or_else(|| match provider_config {
let provider_limit = match provider_config {
crate::ai::provider::ProviderConfig::Bedrock(_) => {
model_metadata(model).and_then(|metadata| metadata.context_window_tokens)
}
crate::ai::provider::ProviderConfig::OpenAI(_)
| crate::ai::provider::ProviderConfig::None => None,
})
crate::ai::provider::ProviderConfig::OpenAI(config) => config.max_input_tokens,
crate::ai::provider::ProviderConfig::None => None,
};
match (configured_limit, provider_limit) {
(Some(configured), Some(provider)) => Some(configured.min(provider)),
(configured, provider) => configured.or(provider),
}
}
#[cfg(test)]