diff --git a/crates/brightstaff/src/handlers/chat_completions.rs b/crates/brightstaff/src/handlers/chat_completions.rs index 6bd17497..55f6d475 100644 --- a/crates/brightstaff/src/handlers/chat_completions.rs +++ b/crates/brightstaff/src/handlers/chat_completions.rs @@ -32,12 +32,12 @@ pub async fn chat_completions( let chat_request_bytes = request.collect().await?.to_bytes(); let chat_request_parsed = serde_json::from_slice::(&chat_request_bytes) - .map_err(|err| { + .inspect_err(|err| { warn!( - "Failed to parse request body as JSON: {}", + "Failed to parse request body as JSON: err: {}, str: {}", + err, String::from_utf8_lossy(&chat_request_bytes) - ); - err + ) }) .unwrap_or_else(|_| { warn!( @@ -55,40 +55,32 @@ pub async fn chat_completions( return Ok(bad_request); } + let chat_completion_request: ChatCompletionsRequest = + serde_json::from_value(chat_request_parsed.clone()).unwrap(); + // remove metadata from the request - let mut chat_request_parsed = chat_request_parsed; - if let Some(metadata) = chat_request_parsed.get_mut("metadata") { + let mut chat_request_user_preferences_removed = chat_request_parsed; + if let Some(metadata) = chat_request_user_preferences_removed.get_mut("metadata") { info!("Removing metadata from request"); - metadata.as_object_mut().map(|m| { + if let Some(m) = metadata.as_object_mut() { m.remove("archgw_preference_config"); info!("Removed archgw_preference_config from metadata"); - }); + } + + // metadata.as_object_mut().map(|m| { + // m.remove("archgw_preference_config"); + // info!("Removed archgw_preference_config from metadata"); + // }); // if metadata is empty, remove it if metadata.as_object().map_or(false, |m| m.is_empty()) { info!("Removing empty metadata from request"); - chat_request_parsed + chat_request_user_preferences_removed .as_object_mut() .map(|m| m.remove("metadata")); } } - let chat_completion_request: ChatCompletionsRequest = - match ChatCompletionsRequest::try_from(chat_request_bytes.as_ref()) { - Ok(request) => request, - Err(err) => { - warn!( - "arch-router request body string: {}", - String::from_utf8_lossy(&chat_request_bytes) - ); - let err_msg = format!("Failed to parse request body: {}", err); - warn!("{}", err_msg); - let mut bad_request = Response::new(full(err_msg)); - *bad_request.status_mut() = StatusCode::BAD_REQUEST; - return Ok(bad_request); - } - }; - trace!( "arch-router request body: {}", &serde_json::to_string(&chat_completion_request).unwrap() @@ -153,7 +145,8 @@ pub async fn chat_completions( ); } - let chat_request_parsed_bytes = serde_json::to_string(&chat_request_parsed).unwrap(); + let chat_request_parsed_bytes = + serde_json::to_string(&chat_request_user_preferences_removed).unwrap(); // remove content-length header if it exists request_headers.remove(header::CONTENT_LENGTH); diff --git a/crates/brightstaff/src/router/llm_router.rs b/crates/brightstaff/src/router/llm_router.rs index 78d634d5..0dab0a18 100644 --- a/crates/brightstaff/src/router/llm_router.rs +++ b/crates/brightstaff/src/router/llm_router.rs @@ -56,7 +56,7 @@ impl RouterService { router_model_v1::MAX_TOKEN_LEN, )); - let llm_provider_map: HashMap = providers + let llm_provider_map: HashMap = providers .into_iter() .map(|provider| (provider.name.clone(), provider)) .collect(); diff --git a/crates/common/src/configuration.rs b/crates/common/src/configuration.rs index 44f1474e..80ec98bb 100644 --- a/crates/common/src/configuration.rs +++ b/crates/common/src/configuration.rs @@ -1,8 +1,8 @@ use hermesllm::providers::openai::types::{ModelDetail, ModelObject, Models}; use serde::{Deserialize, Serialize}; +use serde_with::skip_serializing_none; use std::collections::HashMap; use std::fmt::Display; -use serde_with::skip_serializing_none; use crate::api::open_ai::{ ChatCompletionTool, FunctionDefinition, FunctionParameter, FunctionParameters, ParameterType, diff --git a/crates/prompt_gateway/src/http_context.rs b/crates/prompt_gateway/src/http_context.rs index cd251064..fc66de12 100644 --- a/crates/prompt_gateway/src/http_context.rs +++ b/crates/prompt_gateway/src/http_context.rs @@ -62,7 +62,7 @@ impl HttpContext for StreamContext { return Action::Continue; } - self.is_chat_completions_request = CHAT_COMPLETIONS_PATH.contains(&request_path.as_str()); + self.is_chat_completions_request = CHAT_COMPLETIONS_PATH.contains(request_path.as_str()); debug!( "on_http_request_headers S[{}] req_headers={:?}",