use crate::core::types::{model::ModelInfo, model::ProviderCapability};
pub fn get_supported_models() -> Vec<ModelInfo> {
vec![ModelInfo {
id: "deepl-translate".to_string(),
name: "DeepL Translate".to_string(),
provider: "deepl".to_string(),
max_context_length: 50000, max_output_length: Some(50000),
input_cost_per_1k_tokens: Some(0.00002), output_cost_per_1k_tokens: Some(0.00002),
supports_streaming: false,
supports_tools: false,
supports_multimodal: false,
capabilities: vec![ProviderCapability::AudioTranslation],
currency: "USD".to_string(),
..Default::default()
}]
}
pub fn is_model_supported(model_id: &str) -> bool {
get_supported_models().iter().any(|m| m.id == model_id)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_supported_models() {
let models = get_supported_models();
assert!(!models.is_empty());
assert!(models.iter().any(|m| m.id == "deepl-translate"));
}
#[test]
fn test_is_model_supported() {
assert!(is_model_supported("deepl-translate"));
assert!(!is_model_supported("unknown-model"));
}
#[test]
fn test_model_capabilities() {
let models = get_supported_models();
let translate_model = models.iter().find(|m| m.id == "deepl-translate").unwrap();
assert!(
translate_model
.capabilities
.contains(&ProviderCapability::AudioTranslation)
);
}
}