From 49ebe4bd6197003cc5dec97c1989a4b2a70601c8 Mon Sep 17 00:00:00 2001 From: Vimsucks Date: Sun, 5 Apr 2026 03:22:04 +0800 Subject: [PATCH] Add reasoning_effort field to OpenAI compatible model configuration (#50582) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some model like glm-5、kimi-k2.5 support reasoning, but require reasoning_effort parameter This pr add support for setting reasoing_effort for openai compatible models Tested using the following config: ```json { "language_models": { "openai_compatible": { "My LiteLLM": { "available_models": [ { "name": "glm-5", "display_name": "glm-5", "max_tokens": 73728, "reasoning_effort": "low" }, { "name": "kimi-k2.5", "display_name": "kimi-k2.5", "max_tokens": 262144, "reasoning_effort": "low" } ] } } } } ``` Release Notes: - Added a setting to control `reasoning_effort` in custom OpenAI-compatible models --- .../src/agent_configuration/add_llm_provider_modal.rs | 1 + crates/language_models/src/provider/open_ai_compatible.rs | 4 ++-- crates/settings_content/src/language_model.rs | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs b/crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs index b97583377a00d28ea1a8aae6a1380cff3b69e6a0..e0df79ba4dfe226652818b120b7bfcc493c73b1e 100644 --- a/crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs +++ b/crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs @@ -202,6 +202,7 @@ impl ModelInput { .text(cx) .parse::() .map_err(|_| SharedString::from("Max Tokens must be a number"))?, + reasoning_effort: None, capabilities: ModelCapabilities { tools: self.capabilities.supports_tools.selected(), images: self.capabilities.supports_images.selected(), diff --git a/crates/language_models/src/provider/open_ai_compatible.rs b/crates/language_models/src/provider/open_ai_compatible.rs index 9f63a1e1a039998c275637f3831b51474c8049ac..1c3268749c3340826cd2f50d29e80eecfa1826d4 100644 --- a/crates/language_models/src/provider/open_ai_compatible.rs +++ b/crates/language_models/src/provider/open_ai_compatible.rs @@ -402,7 +402,7 @@ impl LanguageModel for OpenAiCompatibleLanguageModel { self.model.capabilities.parallel_tool_calls, self.model.capabilities.prompt_cache_key, self.max_output_tokens(), - None, + self.model.reasoning_effort.clone(), ); let completions = self.stream_completion(request, cx); async move { @@ -417,7 +417,7 @@ impl LanguageModel for OpenAiCompatibleLanguageModel { self.model.capabilities.parallel_tool_calls, self.model.capabilities.prompt_cache_key, self.max_output_tokens(), - None, + self.model.reasoning_effort.clone(), ); let completions = self.stream_response(request, cx); async move { diff --git a/crates/settings_content/src/language_model.rs b/crates/settings_content/src/language_model.rs index fef92dc8f43d52c160c1e8c8a2fb7aeb0533e2c0..4b72c2ad3f47d834dfa38555d80a8646e3940f51 100644 --- a/crates/settings_content/src/language_model.rs +++ b/crates/settings_content/src/language_model.rs @@ -278,6 +278,7 @@ pub struct OpenAiCompatibleAvailableModel { pub max_tokens: u64, pub max_output_tokens: Option, pub max_completion_tokens: Option, + pub reasoning_effort: Option, #[serde(default)] pub capabilities: OpenAiCompatibleModelCapabilities, }