fix: filter models without tool support from recommended list (#7198)
Signed-off-by: rabi <ramishra@redhat.com>
This commit is contained in:
@@ -481,6 +481,10 @@ pub trait Provider: Send + Sync {
|
||||
return None;
|
||||
}
|
||||
|
||||
if !canonical_model.tool_call && !self.get_model_config().toolshim {
|
||||
return None;
|
||||
}
|
||||
|
||||
let release_date = canonical_model.release_date.clone();
|
||||
|
||||
Some((model.clone(), release_date))
|
||||
|
||||
@@ -311,7 +311,6 @@ impl Provider for OpenRouterProvider {
|
||||
Ok((message, ProviderUsage::new(response_model, usage)))
|
||||
}
|
||||
|
||||
/// Fetch supported models from OpenRouter API (only models with tool support)
|
||||
async fn fetch_supported_models(&self) -> Result<Vec<String>, ProviderError> {
|
||||
let response = self
|
||||
.api_client
|
||||
@@ -350,32 +349,8 @@ impl Provider for OpenRouterProvider {
|
||||
let mut models: Vec<String> = data
|
||||
.iter()
|
||||
.filter_map(|model| {
|
||||
// Get the model ID
|
||||
let id = model.get("id").and_then(|v| v.as_str())?;
|
||||
|
||||
// Check if the model supports tools
|
||||
let supported_params =
|
||||
match model.get("supported_parameters").and_then(|v| v.as_array()) {
|
||||
Some(params) => params,
|
||||
None => {
|
||||
// If supported_parameters is missing, skip this model (assume no tool support)
|
||||
tracing::debug!(
|
||||
"Model '{}' missing supported_parameters field, skipping",
|
||||
id
|
||||
);
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
let has_tool_support = supported_params
|
||||
.iter()
|
||||
.any(|param| param.as_str() == Some("tools"));
|
||||
|
||||
if has_tool_support {
|
||||
Some(id.to_string())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
Some(id.to_string())
|
||||
})
|
||||
.collect();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user