feat: add reasoning_effort parameter support for reasoning models (#4461)

This commit is contained in:
Gopal Bagaswar
2026-03-27 17:54:44 +05:30
committed by GitHub
parent 12624555b4
commit 68cf4e118d
8 changed files with 131 additions and 1 deletions
+3
View File
@@ -21,6 +21,7 @@ class AzureOpenAIConfig(BaseLlmConfig):
top_k: int = 1,
enable_vision: bool = False,
vision_details: Optional[str] = "auto",
reasoning_effort: Optional[str] = None,
http_client_proxies: Optional[dict] = None,
# Azure OpenAI-specific parameters
azure_kwargs: Optional[Dict[str, Any]] = None,
@@ -37,6 +38,7 @@ class AzureOpenAIConfig(BaseLlmConfig):
top_k: Top-k sampling parameter, defaults to 1
enable_vision: Enable vision capabilities, defaults to False
vision_details: Vision detail level, defaults to "auto"
reasoning_effort: Effort level for reasoning models ("low", "medium", "high"), defaults to None
http_client_proxies: HTTP client proxy settings, defaults to None
azure_kwargs: Azure-specific configuration, defaults to None
"""
@@ -50,6 +52,7 @@ class AzureOpenAIConfig(BaseLlmConfig):
top_k=top_k,
enable_vision=enable_vision,
vision_details=vision_details,
reasoning_effort=reasoning_effort,
http_client_proxies=http_client_proxies,
)
+5
View File
@@ -23,6 +23,7 @@ class BaseLlmConfig(ABC):
top_k: int = 1,
enable_vision: bool = False,
vision_details: Optional[str] = "auto",
reasoning_effort: Optional[str] = None,
http_client_proxies: Optional[Union[Dict, str]] = None,
):
"""
@@ -48,6 +49,9 @@ class BaseLlmConfig(ABC):
Only applicable to vision-enabled models. Defaults to False
vision_details: Level of detail for vision processing.
Options: "low", "high", "auto". Defaults to "auto"
reasoning_effort: Effort level for reasoning models (e.g., o1, o3, gpt-5).
Options: "low", "medium", "high". Only applicable to reasoning models.
Defaults to None (uses the model's default reasoning effort)
http_client_proxies: Proxy settings for HTTP client.
Can be a dict or string. Defaults to None
"""
@@ -59,4 +63,5 @@ class BaseLlmConfig(ABC):
self.top_k = top_k
self.enable_vision = enable_vision
self.vision_details = vision_details
self.reasoning_effort = reasoning_effort
self.http_client = httpx.Client(proxies=http_client_proxies) if http_client_proxies else None
+3
View File
@@ -20,6 +20,7 @@ class OpenAIConfig(BaseLlmConfig):
top_k: int = 1,
enable_vision: bool = False,
vision_details: Optional[str] = "auto",
reasoning_effort: Optional[str] = None,
http_client_proxies: Optional[dict] = None,
# OpenAI-specific parameters
openai_base_url: Optional[str] = None,
@@ -44,6 +45,7 @@ class OpenAIConfig(BaseLlmConfig):
top_k: Top-k sampling parameter, defaults to 1
enable_vision: Enable vision capabilities, defaults to False
vision_details: Vision detail level, defaults to "auto"
reasoning_effort: Effort level for reasoning models ("low", "medium", "high"), defaults to None
http_client_proxies: HTTP client proxy settings, defaults to None
openai_base_url: OpenAI API base URL, defaults to None
models: List of models for OpenRouter, defaults to None
@@ -63,6 +65,7 @@ class OpenAIConfig(BaseLlmConfig):
top_k=top_k,
enable_vision=enable_vision,
vision_details=vision_details,
reasoning_effort=reasoning_effort,
http_client_proxies=http_client_proxies,
)
+1
View File
@@ -31,6 +31,7 @@ class AzureOpenAILLM(LLMBase):
top_k=config.top_k,
enable_vision=config.enable_vision,
vision_details=config.vision_details,
reasoning_effort=getattr(config, 'reasoning_effort', None),
http_client_proxies=config.http_client,
)
+6 -1
View File
@@ -88,7 +88,12 @@ class LLMBase(ABC):
supported_params["tools"] = kwargs["tools"]
if "tool_choice" in kwargs:
supported_params["tool_choice"] = kwargs["tool_choice"]
# Add reasoning_effort if configured
reasoning_effort = getattr(self.config, 'reasoning_effort', None)
if reasoning_effort:
supported_params["reasoning_effort"] = reasoning_effort
return supported_params
else:
# For regular models, include all common parameters
+1
View File
@@ -29,6 +29,7 @@ class OpenAILLM(LLMBase):
top_k=config.top_k,
enable_vision=config.enable_vision,
vision_details=config.vision_details,
reasoning_effort=getattr(config, 'reasoning_effort', None),
http_client_proxies=config.http_client,
)