feat(config): accept STRIX_REASONING_EFFORT=max for providers that support it (#956)

Co-authored-by: Ahmed Allam <allam@usestrix.com>
This commit is contained in:
devin-ai-integration[bot]
2026-08-01 17:10:01 -07:00
committed by GitHub
co-authored by Ahmed Allam
parent 22d668d538
commit 2e7040240d
6 changed files with 39 additions and 9 deletions
+17 -1
View File
@@ -147,7 +147,7 @@ def make_model_settings(
and model_supports_reasoning(model_name)
):
model_settings = model_settings.resolve(
ModelSettings(reasoning=Reasoning(effort=reasoning_effort)),
_reasoning_settings(reasoning_effort, model_settings.extra_args),
)
if force_required_tool_choice and _accepts_required_tool_choice(model_name):
model_settings = model_settings.resolve(ModelSettings(tool_choice="required"))
@@ -162,6 +162,22 @@ def make_model_settings(
return model_settings
def _reasoning_settings(
effort: ReasoningEffort,
extra_args: dict[str, Any] | None,
) -> ModelSettings:
"""``max`` is not in the OpenAI SDK's ``Reasoning.effort`` enum, so send it as
a raw body field instead — also keeping it clear of LiteLLM's DeepSeek mapping,
which collapses every ``reasoning_effort`` level to plain thinking-enabled.
Providers that don't support ``max`` reject the request.
"""
if effort != "max":
return ModelSettings(reasoning=Reasoning(effort=effort))
return ModelSettings(
extra_args={**(extra_args or {}), "extra_body": {"reasoning_effort": "max"}},
)
def _prompt_cache_extra_args(model_name: str) -> dict[str, Any] | None:
"""LiteLLM ``cache_control_injection_points`` for Claude prompt caching.