fix: use configured max_logprobs instead of hardcoded 20 in derender validation (#47834)

Signed-off-by: jperezde <jperezde@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Juan Pérez de Algaba
2026-07-07 09:42:47 +00:00
committed by GitHub
co-authored by Cursor
parent d3e69fd671
commit b3e85be663
2 changed files with 13 additions and 4 deletions
@@ -622,7 +622,7 @@ async def test_derender_chat_oversized_logprobs_rejected(client):
@pytest.mark.asyncio
async def test_derender_chat_oversized_top_logprobs_rejected(client):
"""top_logprobs count exceeding 20 returns 400."""
"""top_logprobs count exceeding max_logprobs (default 20) returns 400."""
oversized_top_logprobs = {
"content": [
{
@@ -654,7 +654,9 @@ async def test_derender_chat_oversized_top_logprobs_rejected(client):
},
)
assert response.status_code == 400
assert "top_logprobs count" in response.json()["error"]["message"]
msg = response.json()["error"]["message"]
assert "top_logprobs count" in msg
assert "max_logprobs" in msg
@pytest.mark.asyncio
@@ -64,6 +64,8 @@ class ServingDerender(BaseServing):
"""
max_n = envs.VLLM_MAX_N_SEQUENCES
max_model_len = self.model_config.max_model_len
# See ModelConfig.max_logprobs for semantics and default value.
max_logprobs = self.model_config.max_logprobs
if len(generate_responses) > max_n:
return self.create_error_response(
@@ -95,11 +97,16 @@ class ServingDerender(BaseServing):
f"max_model_len ({max_model_len})."
)
for entry in choice.logprobs.content:
if entry.top_logprobs and len(entry.top_logprobs) > 20:
if (
max_logprobs >= 0
and entry.top_logprobs
and len(entry.top_logprobs) > max_logprobs
):
return self.create_error_response(
f"top_logprobs count "
f"({len(entry.top_logprobs)}) in "
f"choice {choice.index} exceeds maximum (20)."
f"choice {choice.index} exceeds "
f"max_logprobs ({max_logprobs})."
)
if gen.prompt_logprobs and len(gen.prompt_logprobs) > max_model_len: