diff --git a/sgl-router/src/routers/openai/conversations.rs b/sgl-router/src/routers/openai/conversations.rs index 3c4af5504..4d754576b 100644 --- a/sgl-router/src/routers/openai/conversations.rs +++ b/sgl-router/src/routers/openai/conversations.rs @@ -11,14 +11,14 @@ use chrono::Utc; use serde_json::{json, Value}; use tracing::{debug, info, warn}; -use super::{responses::build_stored_response, utils::generate_id}; +use super::responses::build_stored_response; use crate::{ data_connector::{ Conversation, ConversationId, ConversationItemId, ConversationItemStorage, ConversationStorage, ListParams, NewConversation, NewConversationItem, ResponseId, ResponseStorage, SortOrder, }, - protocols::responses::{ResponseInput, ResponsesRequest}, + protocols::responses::{generate_id, ResponseInput, ResponsesRequest}, }; /// Maximum number of properties allowed in conversation metadata diff --git a/sgl-router/src/routers/openai/mcp.rs b/sgl-router/src/routers/openai/mcp.rs index 4504de1bb..dc30377ae 100644 --- a/sgl-router/src/routers/openai/mcp.rs +++ b/sgl-router/src/routers/openai/mcp.rs @@ -16,10 +16,12 @@ use serde_json::{json, to_value, Value}; use tokio::sync::mpsc; use tracing::{debug, info, warn}; -use super::utils::{event_types, generate_id}; +use super::utils::event_types; use crate::{ mcp, - protocols::responses::{ResponseInput, ResponseTool, ResponseToolType, ResponsesRequest}, + protocols::responses::{ + generate_id, ResponseInput, ResponseTool, ResponseToolType, ResponsesRequest, + }, routers::header_utils::apply_request_headers, }; diff --git a/sgl-router/src/routers/openai/router.rs b/sgl-router/src/routers/openai/router.rs index 51126e4be..d884d7cc6 100644 --- a/sgl-router/src/routers/openai/router.rs +++ b/sgl-router/src/routers/openai/router.rs @@ -52,8 +52,8 @@ use crate::{ generate::GenerateRequest, rerank::RerankRequest, responses::{ - ResponseContentPart, ResponseInput, ResponseInputOutputItem, ResponsesGetParams, - ResponsesRequest, + generate_id, ResponseContentPart, ResponseInput, ResponseInputOutputItem, + ResponsesGetParams, ResponsesRequest, }, }, routers::header_utils::apply_request_headers, @@ -1034,10 +1034,7 @@ impl crate::routers::RouterTrait for OpenAIRouter { if item.get("id").is_none() { // Generate ID if not present using centralized utility if let Some(obj) = item.as_object_mut() { - obj.insert( - "id".to_string(), - json!(super::utils::generate_id("msg")), - ); + obj.insert("id".to_string(), json!(generate_id("msg"))); } } item diff --git a/sgl-router/src/routers/openai/utils.rs b/sgl-router/src/routers/openai/utils.rs index cdf36bad9..aa1a80b25 100644 --- a/sgl-router/src/routers/openai/utils.rs +++ b/sgl-router/src/routers/openai/utils.rs @@ -220,16 +220,6 @@ pub async fn probe_endpoint_for_model( } } -pub fn generate_id(prefix: &str) -> String { - use rand::RngCore; - let mut rng = rand::rng(); - // Generate exactly 50 hex characters (25 bytes) for the part after the underscore - let mut bytes = [0u8; 25]; - rng.fill_bytes(&mut bytes); - let hex_string: String = bytes.iter().map(|b| format!("{:02x}", b)).collect(); - format!("{}_{}", prefix, hex_string) -} - // ============================================================================ // Re-export FunctionCallInProgress from mcp module // ============================================================================