diff --git a/rust/crates/api/src/lib.rs b/rust/crates/api/src/lib.rs index b59437e8..6aad8d0b 100644 --- a/rust/crates/api/src/lib.rs +++ b/rust/crates/api/src/lib.rs @@ -20,8 +20,9 @@ pub use prompt_cache::{ }; pub use providers::anthropic::{AnthropicClient, AnthropicClient as ApiClient, AuthSource}; pub use providers::openai_compat::{ - build_chat_completion_request, flatten_tool_result_content, is_reasoning_model, - model_rejects_is_error_field, model_requires_reasoning_content_in_history, translate_message, + build_chat_completion_request, check_request_body_size, estimate_request_body_size, + flatten_tool_result_content, is_reasoning_model, model_rejects_is_error_field, + model_requires_reasoning_content_in_history, translate_message, OpenAiCompatClient, OpenAiCompatConfig, }; pub use providers::{ diff --git a/rust/crates/api/src/providers/openai_compat.rs b/rust/crates/api/src/providers/openai_compat.rs index ca028845..2eb7c56b 100644 --- a/rust/crates/api/src/providers/openai_compat.rs +++ b/rust/crates/api/src/providers/openai_compat.rs @@ -931,7 +931,7 @@ fn wire_model_for_base_url<'a>( } if matches!(lowered_prefix.as_str(), "xai" | "grok" | "qwen" | "kimi") { - return Cow::Borrowed(&model[pos + 1..]); + return Cow::Borrowed(strip_routing_prefix(model)); } Cow::Borrowed(model) @@ -2042,6 +2042,7 @@ mod tests { presence_penalty: Some(0.3), stop: Some(vec!["\n".to_string()]), reasoning_effort: None, + extra_body: BTreeMap::new(), }; let payload = build_chat_completion_request(&request, OpenAiCompatConfig::openai()); assert_eq!(payload["temperature"], 0.7);