mirror of
https://github.com/katanemo/plano.git
synced 2026-05-08 07:12:42 +02:00
cargo fmt
This commit is contained in:
parent
2ef938ac5f
commit
b12bf74e5c
2 changed files with 13 additions and 15 deletions
|
|
@ -72,8 +72,8 @@ pub fn extract_routing_policy(
|
||||||
let top_level_preferences = json_body
|
let top_level_preferences = json_body
|
||||||
.as_object_mut()
|
.as_object_mut()
|
||||||
.and_then(|o| o.remove("routing_preferences"))
|
.and_then(|o| o.remove("routing_preferences"))
|
||||||
.and_then(|value| {
|
.and_then(
|
||||||
match serde_json::from_value::<Vec<TopLevelRoutingPreference>>(value) {
|
|value| match serde_json::from_value::<Vec<TopLevelRoutingPreference>>(value) {
|
||||||
Ok(prefs) => {
|
Ok(prefs) => {
|
||||||
info!(
|
info!(
|
||||||
num_routes = prefs.len(),
|
num_routes = prefs.len(),
|
||||||
|
|
@ -85,8 +85,8 @@ pub fn extract_routing_policy(
|
||||||
warn!(error = %err, "failed to parse routing_preferences");
|
warn!(error = %err, "failed to parse routing_preferences");
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
});
|
);
|
||||||
|
|
||||||
let bytes = Bytes::from(serde_json::to_vec(&json_body).unwrap());
|
let bytes = Bytes::from(serde_json::to_vec(&json_body).unwrap());
|
||||||
Ok((bytes, legacy_preferences, top_level_preferences))
|
Ok((bytes, legacy_preferences, top_level_preferences))
|
||||||
|
|
@ -363,7 +363,10 @@ mod tests {
|
||||||
let top_prefs = top_prefs.expect("should have parsed top-level routing_preferences");
|
let top_prefs = top_prefs.expect("should have parsed top-level routing_preferences");
|
||||||
assert_eq!(top_prefs.len(), 1);
|
assert_eq!(top_prefs.len(), 1);
|
||||||
assert_eq!(top_prefs[0].name, "code generation");
|
assert_eq!(top_prefs[0].name, "code generation");
|
||||||
assert_eq!(top_prefs[0].models, vec!["openai/gpt-4o", "openai/gpt-4o-mini"]);
|
assert_eq!(
|
||||||
|
top_prefs[0].models,
|
||||||
|
vec!["openai/gpt-4o", "openai/gpt-4o-mini"]
|
||||||
|
);
|
||||||
|
|
||||||
let cleaned_json: serde_json::Value = serde_json::from_slice(&cleaned).unwrap();
|
let cleaned_json: serde_json::Value = serde_json::from_slice(&cleaned).unwrap();
|
||||||
assert!(cleaned_json.get("routing_preferences").is_none());
|
assert!(cleaned_json.get("routing_preferences").is_none());
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,8 @@ impl RouterService {
|
||||||
// Build top-level preference map and sentinel llm_routes when v0.4.0 format is used.
|
// Build top-level preference map and sentinel llm_routes when v0.4.0 format is used.
|
||||||
let (top_level_preferences, llm_routes, llm_usage_defined) =
|
let (top_level_preferences, llm_routes, llm_usage_defined) =
|
||||||
if let Some(top_prefs) = top_level_prefs {
|
if let Some(top_prefs) = top_level_prefs {
|
||||||
let top_level_map: HashMap<String, TopLevelRoutingPreference> = top_prefs
|
let top_level_map: HashMap<String, TopLevelRoutingPreference> =
|
||||||
.into_iter()
|
top_prefs.into_iter().map(|p| (p.name.clone(), p)).collect();
|
||||||
.map(|p| (p.name.clone(), p))
|
|
||||||
.collect();
|
|
||||||
// Build sentinel routes: route_name → first model (RouterModelV1 needs a model
|
// Build sentinel routes: route_name → first model (RouterModelV1 needs a model
|
||||||
// mapping, but RouterService overrides the selection via metrics_service).
|
// mapping, but RouterService overrides the selection via metrics_service).
|
||||||
let sentinel_routes: HashMap<String, Vec<RoutingPreference>> = top_level_map
|
let sentinel_routes: HashMap<String, Vec<RoutingPreference>> = top_level_map
|
||||||
|
|
@ -125,9 +123,8 @@ impl RouterService {
|
||||||
|
|
||||||
// Build inline top-level map from request if present (inline overrides config).
|
// Build inline top-level map from request if present (inline overrides config).
|
||||||
let inline_top_map: Option<HashMap<String, TopLevelRoutingPreference>> =
|
let inline_top_map: Option<HashMap<String, TopLevelRoutingPreference>> =
|
||||||
inline_routing_preferences.map(|prefs| {
|
inline_routing_preferences
|
||||||
prefs.into_iter().map(|p| (p.name.clone(), p)).collect()
|
.map(|prefs| prefs.into_iter().map(|p| (p.name.clone(), p)).collect());
|
||||||
});
|
|
||||||
|
|
||||||
// Determine whether any routing is defined.
|
// Determine whether any routing is defined.
|
||||||
let has_top_level = inline_top_map.is_some() || !self.top_level_preferences.is_empty();
|
let has_top_level = inline_top_map.is_some() || !self.top_level_preferences.is_empty();
|
||||||
|
|
@ -221,9 +218,7 @@ impl RouterService {
|
||||||
|
|
||||||
if let Some(pref) = top_pref {
|
if let Some(pref) = top_pref {
|
||||||
let selected_model = match &self.metrics_service {
|
let selected_model = match &self.metrics_service {
|
||||||
Some(svc) => {
|
Some(svc) => svc.select_model(&pref.models, &pref.selection_policy).await,
|
||||||
svc.select_model(&pref.models, &pref.selection_policy).await
|
|
||||||
}
|
|
||||||
None => pref.models.first().cloned().unwrap_or_default(),
|
None => pref.models.first().cloned().unwrap_or_default(),
|
||||||
};
|
};
|
||||||
Some((route_name, selected_model))
|
Some((route_name, selected_model))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue