From c7962868c1a7b21f20f00507af43710c268ebfd2 Mon Sep 17 00:00:00 2001 From: Chang Su Date: Thu, 16 Oct 2025 14:20:13 -0700 Subject: [PATCH] [router] Fix tool_choice normalization in ChatCompletionRequest and fix ut (#11731) --- sgl-router/src/protocols/chat.rs | 15 ++++++------ sgl-router/tests/spec/rerank.rs | 42 -------------------------------- 2 files changed, 8 insertions(+), 49 deletions(-) diff --git a/sgl-router/src/protocols/chat.rs b/sgl-router/src/protocols/chat.rs index 362b9d524..55854e6c7 100644 --- a/sgl-router/src/protocols/chat.rs +++ b/sgl-router/src/protocols/chat.rs @@ -531,13 +531,14 @@ impl Normalizable for ChatCompletionRequest { // Apply tool_choice defaults if self.tool_choice.is_none() { - let has_tools = self.tools.as_ref().is_some_and(|t| !t.is_empty()); - - self.tool_choice = if has_tools { - Some(ToolChoice::Value(ToolChoiceValue::Auto)) - } else { - Some(ToolChoice::Value(ToolChoiceValue::None)) - }; + if let Some(tools) = &self.tools { + self.tool_choice = if !tools.is_empty() { + Some(ToolChoice::Value(ToolChoiceValue::Auto)) + } else { + Some(ToolChoice::Value(ToolChoiceValue::None)) + }; + } + // If tools is None, leave tool_choice as None (don't set it) } } } diff --git a/sgl-router/tests/spec/rerank.rs b/sgl-router/tests/spec/rerank.rs index a2e23b9ae..790ab49df 100644 --- a/sgl-router/tests/spec/rerank.rs +++ b/sgl-router/tests/spec/rerank.rs @@ -230,45 +230,6 @@ fn test_rerank_response_serialization() { assert_eq!(deserialized.object, response.object); } -#[test] -fn test_rerank_response_sort_by_score() { - let results = vec![ - RerankResult { - score: 0.6, - document: Some("doc2".to_string()), - index: 1, - meta_info: None, - }, - RerankResult { - score: 0.8, - document: Some("doc1".to_string()), - index: 0, - meta_info: None, - }, - RerankResult { - score: 0.4, - document: Some("doc3".to_string()), - index: 2, - meta_info: None, - }, - ]; - - let mut response = RerankResponse::new( - results, - "test-model".to_string(), - Some(StringOrArray::String("req-123".to_string())), - ); - - response.sort_by_score(); - - assert_eq!(response.results[0].score, 0.8); - assert_eq!(response.results[0].index, 0); - assert_eq!(response.results[1].score, 0.6); - assert_eq!(response.results[1].index, 1); - assert_eq!(response.results[2].score, 0.4); - assert_eq!(response.results[2].index, 2); -} - #[test] fn test_rerank_response_apply_top_k() { let results = vec![ @@ -589,9 +550,6 @@ fn test_full_rerank_workflow() { // Create response let mut response = RerankResponse::new(results, request.model.clone(), request.rid.clone()); - // Sort by score - response.sort_by_score(); - // Apply top_k response.apply_top_k(request.effective_top_k());