Merge pull request #27115 from Sameerlite/litellm_health_check_reasoning_effort

feat(proxy): add health_check_reasoning_effort for model health checks
This commit is contained in:
Sameer Kankute 2026-05-05 09:00:09 +05:30 • committed by GitHub
commit 4487d8352f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 51 additions and 0 deletions

View file

@ -36,6 +36,11 @@ ADMIN_ONLY_HEALTH_DISPLAY_PARAMS = ("api_base", "api_version")
MINIMAL_DISPLAY_PARAMS = ["model", "mode_error"]
# Health-check modes that forward `reasoning_effort` to the provider (chat-style calls).
_HEALTH_CHECK_MODES_SUPPORTING_REASONING_EFFORT = frozenset(
(None, "chat", "completion")
)
def _get_process_rss_mb() -> Optional[float]:
"""
@ -375,6 +380,12 @@ def _update_litellm_params_for_health_check(
if _resolved_max_tokens is not None:
litellm_params["max_tokens"] = _resolved_max_tokens
# Per-model reasoning effort for health checks only (e.g. reasoning_effort=none).
if model_info.get("mode", None) in _HEALTH_CHECK_MODES_SUPPORTING_REASONING_EFFORT:
_hc_reasoning_effort = model_info.get("health_check_reasoning_effort", None)
if _hc_reasoning_effort is not None:
litellm_params["reasoning_effort"] = _hc_reasoning_effort
_health_check_model = model_info.get("health_check_model", None)
if _health_check_model is not None:
litellm_params["model"] = _health_check_model

View file

@ -225,3 +225,43 @@ def test_wildcard_ignores_reasoning_split_model_info(monkeypatch):
litellm_params = {"model": "openai/*"}
assert _resolve_health_check_max_tokens(model_info, litellm_params) is None
def test_update_litellm_params_health_check_reasoning_effort():
"""model_info.health_check_reasoning_effort sets reasoning_effort for chat-style health checks."""
model_info = {"health_check_reasoning_effort": "low"}
litellm_params = {"model": "openai/gpt-5", "api_key": "x"}
out = _update_litellm_params_for_health_check(model_info, dict(litellm_params))
assert out.get("reasoning_effort") == "low"
model_info = {"mode": "chat", "health_check_reasoning_effort": "none"}
out = _update_litellm_params_for_health_check(
model_info, {"model": "openai/gpt-5", "api_key": "x"}
)
assert out.get("reasoning_effort") == "none"
model_info = {"mode": "completion", "health_check_reasoning_effort": "low"}
out = _update_litellm_params_for_health_check(
model_info, {"model": "openai/gpt-5", "api_key": "x"}
)
assert out.get("reasoning_effort") == "low"
model_info = {
"health_check_reasoning_effort": {"effort": "none", "summary": "auto"},
}
out = _update_litellm_params_for_health_check(
model_info, {"model": "openai/gpt-5.1", "api_key": "x"}
)
assert out.get("reasoning_effort") == {"effort": "none", "summary": "auto"}
model_info = {"mode": "embedding", "health_check_reasoning_effort": "low"}
out = _update_litellm_params_for_health_check(
model_info, {"model": "text-embedding-3-small", "api_key": "x"}
)
assert "reasoning_effort" not in out
model_info = {}
out = _update_litellm_params_for_health_check(
model_info, {"model": "openai/gpt-4o", "api_key": "x"}
)
assert "reasoning_effort" not in out