fix: keep reasoning_effort for mode: responses bridge deployments

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
jesus 2026-09-08 13:51:58 +00:00
parent 1af7a403c6
commit 17dd6afbaa
2 changed files with 45 additions and 1 deletions

View file

@ -5398,6 +5398,16 @@ def completion(
if dynamic_api_key is not None:
api_key = dynamic_api_key
# check if user passed in any of the OpenAI optional params
allowed_openai_params: Final[list[str] | None] = cast(
list[str] | None,
(
[*(kwargs.get("allowed_openai_params") or []), "reasoning_effort"]
if responses_api_model_info.get("mode") == "responses"
and not skip_responses_api_bridge
and "reasoning_effort" not in (kwargs.get("allowed_openai_params") or [])
else kwargs.get("allowed_openai_params")
),
)
optional_param_args: Final = {
"functions": functions,
"function_call": function_call,
@ -5442,7 +5452,7 @@ def completion(
"service_tier": service_tier,
"store": store,
"prompt_cache_key": prompt_cache_key,
"allowed_openai_params": kwargs.get("allowed_openai_params"),
"allowed_openai_params": allowed_openai_params,
"base_model": base_model,
}
optional_params = get_optional_params(**optional_param_args, **non_default_params)

View file

@ -1367,6 +1367,40 @@ def test_gpt_5_4_responses_bridge_preserves_reasoning_summary_dict(
}
@pytest.mark.parametrize("reasoning_effort", ["high", {"effort": "high"}])
@patch("litellm.completion_extras.responses_api_bridge.completion")
def test_responses_bridge_preserves_reasoning_effort_with_drop_params(
mock_responses_completion, reasoning_effort, restore_model_registry
):
mock_responses_completion.return_value = MagicMock()
model = "perplexity/test-responses-bridge"
litellm.register_model(
{
model: {
"litellm_provider": "perplexity",
"mode": "responses",
"supports_reasoning": True,
"input_cost_per_token": 0.0,
"output_cost_per_token": 0.0,
}
},
persist_across_reloads=False,
)
with patch.object(litellm, "supports_reasoning", return_value=False):
litellm.completion(
model=model,
messages=[{"role": "user", "content": "hello"}],
reasoning_effort=reasoning_effort,
drop_params=True,
api_key="fake-key",
api_base="https://api.perplexity.ai",
)
optional_params = mock_responses_completion.call_args.kwargs["optional_params"]
assert optional_params["reasoning_effort"] == reasoning_effort
@pytest.mark.parametrize(
"model, model_info, expected_model_param, expected_base_model_param",
[